From 39fa0b3c468f339c3b3698ceafdfa778f24e3e2c Mon Sep 17 00:00:00 2001 From: enricoturri1966 Date: Mon, 24 Jan 2022 09:36:44 +0100 Subject: [PATCH] Fixed wrong cut contours shown by gizmo cut (SPE-1177) --- src/slic3r/GUI/Gizmos/GLGizmoCut.cpp | 10 ++++++++-- src/slic3r/GUI/Gizmos/GLGizmoCut.hpp | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp b/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp index b884d154dc..bdc915e4a4 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp @@ -277,18 +277,24 @@ void GLGizmoCut::update_contours() const ModelObject* model_object = wxGetApp().model().objects[selection.get_object_idx()]; const int instance_idx = selection.get_instance_idx(); + std::vector volumes_idxs = std::vector(model_object->volumes.size()); + for (size_t i = 0; i < model_object->volumes.size(); ++i) { + volumes_idxs[i] = model_object->volumes[i]->id(); + } if (0.0 < m_cut_z && m_cut_z < m_max_z) { - if (m_cut_contours.cut_z != m_cut_z || m_cut_contours.object_id != model_object->id() || m_cut_contours.instance_idx != instance_idx) { + if (m_cut_contours.cut_z != m_cut_z || m_cut_contours.object_id != model_object->id() || + m_cut_contours.instance_idx != instance_idx || m_cut_contours.volumes_idxs != volumes_idxs) { m_cut_contours.cut_z = m_cut_z; - if (m_cut_contours.object_id != model_object->id()) + if (m_cut_contours.object_id != model_object->id() || m_cut_contours.volumes_idxs != volumes_idxs) m_cut_contours.mesh = model_object->raw_mesh(); m_cut_contours.position = box.center(); m_cut_contours.shift = Vec3d::Zero(); m_cut_contours.object_id = model_object->id(); m_cut_contours.instance_idx = instance_idx; + m_cut_contours.volumes_idxs = volumes_idxs; m_cut_contours.contours.reset(); MeshSlicingParams slicing_params; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoCut.hpp b/src/slic3r/GUI/Gizmos/GLGizmoCut.hpp index 4007f89d47..4113632c04 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoCut.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoCut.hpp @@ -33,6 +33,7 @@ class GLGizmoCut : public GLGizmoBase Vec3d shift{ Vec3d::Zero() }; ObjectID object_id; int instance_idx{ -1 }; + std::vector volumes_idxs; }; CutContours m_cut_contours;