From f5637dac77aa08e3fc6188ae6363ad78caf6b52c Mon Sep 17 00:00:00 2001 From: "zhou.xu" Date: Wed, 8 Nov 2023 18:37:44 +0800 Subject: [PATCH] FIX: merge the patch from Prusa Thanks for PrusaSlicer and YuSanka Jira:STUDIO-5175 commit 510d59687b3b19c4a0f4e6540620d0694dd1b7ac Author: YuSanka Date: Thu Oct 5 14:13:14 2023 +0200 Follow-up 1b451cdf: Fixed #11415 - Connectors disappear when slicing => only when using multiple cut planes AND excluding parts Change-Id: I9ccd5b85f482d723d21fccf5e104c9e0a9cc4849 --- src/libslic3r/CutUtils.cpp | 17 ++++++++++------- src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.cpp | 2 +- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/libslic3r/CutUtils.cpp b/src/libslic3r/CutUtils.cpp index 5dc5b82fa..27c83ba0d 100644 --- a/src/libslic3r/CutUtils.cpp +++ b/src/libslic3r/CutUtils.cpp @@ -471,6 +471,10 @@ const ModelObjectPtrs &Cut::perform_by_contour(std::vector parts, int dowe // Just add Upper and Lower objects to cut_object_ptrs post_process(upper, lower, cut_object_ptrs); + // Now merge all model parts together: + merge_solid_parts_inside_object(cut_object_ptrs); + + finalize(cut_object_ptrs); } else if (volumes.size() > cut_parts_cnt) { // Means that object is cut with connectors @@ -493,16 +497,15 @@ const ModelObjectPtrs &Cut::perform_by_contour(std::vector parts, int dowe // Add Upper and Lower objects to cut_object_ptrs post_process(upper, lower, cut_object_ptrs); + // Now merge all model parts together: + merge_solid_parts_inside_object(cut_object_ptrs); + + finalize(cut_object_ptrs); // Add Dowel-connectors as separate objects to cut_object_ptrs if (cut_connectors_obj.size() >= 3) - for (size_t id = 2; id < cut_connectors_obj.size(); id++) cut_object_ptrs.push_back(cut_connectors_obj[id]); + for (size_t id = 2; id < cut_connectors_obj.size(); id++) + m_model.add_object(*cut_connectors_obj[id]); } - - // Now merge all model parts together: - merge_solid_parts_inside_object(cut_object_ptrs); - - finalize(cut_object_ptrs); - return m_model.objects; } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.cpp b/src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.cpp index 267841165..b3861e30d 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.cpp @@ -888,7 +888,7 @@ void GLGizmoAdvancedCut::perform_cut(const Selection& selection) const bool has_connectors = !mo->cut_connectors.empty(); // update connectors pos as offset of its center before cut performing apply_connectors_in_model(cut_mo, dowels_count); - if (dowels_count > 0) { cut_by_contour = false; } + wxBusyCursor wait; ModelObjectCutAttributes attributes = only_if(has_connectors ? true : m_keep_upper, ModelObjectCutAttribute::KeepUpper) |