Fixed wrong cut contours shown by gizmo cut (SPE-1177)

This commit is contained in:
enricoturri1966 2022-01-24 09:36:44 +01:00
parent 0e173e3f82
commit 39fa0b3c46
2 changed files with 9 additions and 2 deletions

View File

@ -277,18 +277,24 @@ void GLGizmoCut::update_contours()
const ModelObject* model_object = wxGetApp().model().objects[selection.get_object_idx()]; const ModelObject* model_object = wxGetApp().model().objects[selection.get_object_idx()];
const int instance_idx = selection.get_instance_idx(); const int instance_idx = selection.get_instance_idx();
std::vector<ObjectID> volumes_idxs = std::vector<ObjectID>(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 (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; 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.mesh = model_object->raw_mesh();
m_cut_contours.position = box.center(); m_cut_contours.position = box.center();
m_cut_contours.shift = Vec3d::Zero(); m_cut_contours.shift = Vec3d::Zero();
m_cut_contours.object_id = model_object->id(); m_cut_contours.object_id = model_object->id();
m_cut_contours.instance_idx = instance_idx; m_cut_contours.instance_idx = instance_idx;
m_cut_contours.volumes_idxs = volumes_idxs;
m_cut_contours.contours.reset(); m_cut_contours.contours.reset();
MeshSlicingParams slicing_params; MeshSlicingParams slicing_params;

View File

@ -33,6 +33,7 @@ class GLGizmoCut : public GLGizmoBase
Vec3d shift{ Vec3d::Zero() }; Vec3d shift{ Vec3d::Zero() };
ObjectID object_id; ObjectID object_id;
int instance_idx{ -1 }; int instance_idx{ -1 };
std::vector<ObjectID> volumes_idxs;
}; };
CutContours m_cut_contours; CutContours m_cut_contours;