From f8fc565dd8ccd28d5f52848ebe9aabc25969eacd Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 25 Oct 2022 17:11:23 +0800 Subject: [PATCH] ENH: ease tree support removal We discover a good quaility interface can help remove support. When enabling interface, directly generating circles from overhang polygons gives fairly good quality. Change-Id: I5d347fa7abaacea839650b6fd3a8c2c73abd5e56 (cherry picked from commit 474cbf7d59beda63e9ef1ec8b52636f2674811c7) --- src/libslic3r/TreeSupport.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/libslic3r/TreeSupport.cpp b/src/libslic3r/TreeSupport.cpp index 43f76edd1..c55a0e8cd 100644 --- a/src/libslic3r/TreeSupport.cpp +++ b/src/libslic3r/TreeSupport.cpp @@ -2053,7 +2053,8 @@ void TreeSupport::draw_circles(const std::vector>& contact_no const Node& node = *p_node; ExPolygon area; - if (node.type == ePolygon) { + // 如果是混合支撑里的普通部分,或没有启用顶部接触层,则直接从overhang多边形生成 + if (node.type == ePolygon || (top_interface_layers>0 &&node.support_roof_layers_below > 0)) { area = offset_ex({ *node.overhang }, scale_(m_ts_data->m_xy_distance))[0]; } else { @@ -2999,6 +3000,7 @@ void TreeSupport::generate_contact_points(std::vectoroverhang = &overhang_part; curr_nodes.emplace_back(contact_node); added = true; } @@ -3021,6 +3023,7 @@ void TreeSupport::generate_contact_points(std::vectoroverhang = &overhang_part; curr_nodes.emplace_back(contact_node); } } @@ -3033,6 +3036,7 @@ void TreeSupport::generate_contact_points(std::vector -0.7) { Node *contact_node = new Node(pt, 0, layer_nr % 2, support_roof_layers, true, Node::NO_PARENT, print_z, height); + contact_node->overhang = &overhang_part; curr_nodes.emplace_back(contact_node); } }