From 6523bfdf99811203c67540f5479d3d4e16bae271 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Wed, 18 May 2022 10:15:51 +0200 Subject: [PATCH] Enable ground facing only option for branching tree Essentially discards mesh nodes --- src/libslic3r/SLA/BranchingTreeSLA.cpp | 12 +++++------- src/libslic3r/SLAPrint.cpp | 6 +----- tests/sla_print/sla_test_utils.cpp | 3 --- 3 files changed, 6 insertions(+), 15 deletions(-) diff --git a/src/libslic3r/SLA/BranchingTreeSLA.cpp b/src/libslic3r/SLA/BranchingTreeSLA.cpp index 6f8994a63..b73c5eaae 100644 --- a/src/libslic3r/SLA/BranchingTreeSLA.cpp +++ b/src/libslic3r/SLA/BranchingTreeSLA.cpp @@ -171,9 +171,10 @@ bool BranchingTreeBuilder::add_mesh_bridge(const branchingtree::Node &from, { sla::Junction fromj = {from.pos.cast(), get_radius(from)}; - auto anchor = calculate_anchor_placement(ex_tbb, m_sm, - fromj, - to.pos.cast()); + auto anchor = m_sm.cfg.ground_facing_only ? + std::optional{} : // If no mesh connections are allowed + calculate_anchor_placement(ex_tbb, m_sm, fromj, + to.pos.cast()); if (anchor) { sla::Junction toj = {anchor->junction_point(), anchor->r_back_mm}; @@ -183,10 +184,7 @@ bool BranchingTreeBuilder::add_mesh_bridge(const branchingtree::Node &from, 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); - } + m_builder.add_anchor(*anchor); build_subtree(from.id); } else { diff --git a/src/libslic3r/SLAPrint.cpp b/src/libslic3r/SLAPrint.cpp index 4f58c3aa1..d9b8e33df 100644 --- a/src/libslic3r/SLAPrint.cpp +++ b/src/libslic3r/SLAPrint.cpp @@ -57,11 +57,7 @@ sla::SupportTreeConfig make_support_cfg(const SLAPrintObjectConfig& c) scfg.max_bridge_length_mm = c.support_max_bridge_length.getFloat(); scfg.max_pillar_link_distance_mm = c.support_max_pillar_link_distance.getFloat(); scfg.pillar_connection_mode = c.support_pillar_connection_mode.value; - if (scfg.tree_type != sla::SupportTreeType::Branching) { - // Branching tree is all about routing to model body, it doesn't support - // this option. - scfg.ground_facing_only = c.support_buildplate_only.getBool(); - } + scfg.ground_facing_only = c.support_buildplate_only.getBool(); scfg.pillar_widening_factor = c.support_pillar_widening_factor.getFloat(); scfg.base_radius_mm = 0.5*c.support_base_diameter.getFloat(); scfg.base_height_mm = c.support_base_height.getFloat(); diff --git a/tests/sla_print/sla_test_utils.cpp b/tests/sla_print/sla_test_utils.cpp index b9ad696ed..737659eed 100644 --- a/tests/sla_print/sla_test_utils.cpp +++ b/tests/sla_print/sla_test_utils.cpp @@ -16,9 +16,6 @@ void test_support_model_collision( sla::SupportTreeConfig supportcfg = input_supportcfg; - // Ensure that there are no anchors which would pierce the model. - supportcfg.ground_facing_only = true; - // Set head penetration to a small negative value which should ensure that // the supports will not touch the model body. supportcfg.head_penetration_mm = -0.2;