From 7eec10c95e67305ad7c2d413abbf5b41a11cfc75 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Wed, 15 Feb 2023 13:56:13 +0100 Subject: [PATCH] Fix for #9576 - A single cut can be made on the same model, after which the Cut tool is disabled But really bug is a wrong detection of an CutObject as a DowelConnector --- src/slic3r/GUI/Gizmos/GLGizmoCut.cpp | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp b/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp index fa2df0c617..28cf8a0a31 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp @@ -1068,25 +1068,16 @@ bool GLGizmoCut3D::on_is_activable() const if (object_idx < 0 || selection.is_wipe_tower()) return false; - bool is_dowel_object = false; - if (const ModelObject* mo = wxGetApp().plater()->model().objects[object_idx]; mo->is_cut()) { - int solid_connector_cnt = 0; - int connectors_cnt = 0; - for (const ModelVolume* volume : mo->volumes) { - if (volume->is_cut_connector()) { - connectors_cnt++; - if (volume->is_model_part()) - solid_connector_cnt++; - } - if (connectors_cnt > 1) - break; - } - is_dowel_object = connectors_cnt == 1 && solid_connector_cnt == 1; + if (const ModelObject* mo = wxGetApp().plater()->model().objects[object_idx]; + mo->is_cut() && mo->volumes.size() == 1) { + const ModelVolume* volume = mo->volumes[0]; + if (volume->is_cut_connector() && volume->cut_info.connector_type == CutConnectorType::Dowel) + return false; } // This is assumed in GLCanvas3D::do_rotate, do not change this // without updating that function too. - return selection.is_single_full_instance() && !is_dowel_object && !m_parent.is_layers_editing_enabled(); + return selection.is_single_full_instance() && !m_parent.is_layers_editing_enabled(); } bool GLGizmoCut3D::on_is_selectable() const