From 4c3ba3f6bf21777a4567800c120a8749f5b62003 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Tue, 17 May 2022 16:30:55 +0200 Subject: [PATCH] Fix tree struts piercing model body Free path between the anchor and the last bridge was not verified --- src/libslic3r/SLA/BranchingTreeSLA.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/libslic3r/SLA/BranchingTreeSLA.cpp b/src/libslic3r/SLA/BranchingTreeSLA.cpp index 94cfbb1eca..1ef3d6f9a8 100644 --- a/src/libslic3r/SLA/BranchingTreeSLA.cpp +++ b/src/libslic3r/SLA/BranchingTreeSLA.cpp @@ -175,19 +175,22 @@ bool BranchingTreeBuilder::add_mesh_bridge(const branchingtree::Node &from, fromj, to.pos.cast()); - sla::Junction toj = {anchor->junction_point(), anchor->r_back_mm}; - if (anchor) { - auto hit1 = beam_mesh_hit(ex_tbb, m_sm.emesh, - Beam{{fromj.pos, fromj.r}, {toj.pos, toj.r}}, - m_sm.cfg.safety_distance_mm); - if (hit1.distance() >= distance(fromj.pos, toj.pos)) { + sla::Junction toj = {anchor->junction_point(), anchor->r_back_mm}; + + auto hit = beam_mesh_hit(ex_tbb, m_sm.emesh, + Beam{{fromj.pos, fromj.r}, {toj.pos, toj.r}}, 0.); + + if (hit.distance() > distance(fromj.pos, toj.pos)) { m_builder.add_diffbridge(fromj.pos, toj.pos, fromj.r, toj.r); if (!m_sm.cfg.ground_facing_only) { // Easter egg, to omit the anchors m_builder.add_anchor(*anchor); } + build_subtree(from.id); + } else { + anchor.reset(); } }