From 5df1317f40455b4791e3f5e86e0957584fc9d1ad Mon Sep 17 00:00:00 2001 From: Arthur Date: Thu, 24 Nov 2022 11:45:17 +0800 Subject: [PATCH] FIX: tree suppoort generates wrong sharp tails support_critical_regions_only may generate wrong supports on sharp tails Test case: calicat.stl Change-Id: I73671d9bf0f9c27ef70efa5765cd291761c4d18d (cherry picked from commit 8ff2ac7ce437dc2f9eee6068d596294c054dee1b) --- src/libslic3r/TreeSupport.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/libslic3r/TreeSupport.cpp b/src/libslic3r/TreeSupport.cpp index 1450ec4db..50ea4b3aa 100644 --- a/src/libslic3r/TreeSupport.cpp +++ b/src/libslic3r/TreeSupport.cpp @@ -1144,7 +1144,12 @@ void TreeSupport::detect_object_overhangs() TreeSupportLayer* ts_layer = m_object->get_tree_support_layer(layer_nr + m_raft_layers); if (support_critical_regions_only) { auto layer = m_object->get_layer(layer_nr); - ts_layer->overhang_areas = layer->sharp_tails; + auto lower_layer = layer->lower_layer; + if (lower_layer == nullptr) + ts_layer->overhang_areas = layer->sharp_tails; + else + ts_layer->overhang_areas = diff_ex(layer->sharp_tails, lower_layer->lslices); + append(ts_layer->overhang_areas, layer->cantilevers); }