diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index 59477db4a8..c16fb7ab53 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -690,6 +690,14 @@ void ModelObject::clear_volumes() this->invalidate_bounding_box(); } +void ModelObject::reset_volumes_idxs() +{ + for (ModelVolume *v : this->volumes) + { + v->set_new_unique_id(); + } +}//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + ModelInstance* ModelObject::add_instance() { ModelInstance* i = new ModelInstance(this); diff --git a/src/libslic3r/Model.hpp b/src/libslic3r/Model.hpp index b9831336c5..5b2599282a 100644 --- a/src/libslic3r/Model.hpp +++ b/src/libslic3r/Model.hpp @@ -200,6 +200,9 @@ public: void clear_volumes(); bool is_multiparts() const { return volumes.size() > 1; } + // set a new unique id to all volumes + void reset_volumes_idxs(); + ModelInstance* add_instance(); ModelInstance* add_instance(const ModelInstance &instance); ModelInstance* add_instance(const Vec3d &offset, const Vec3d &scaling_factor, const Vec3d &rotation); diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 3c8efbf22a..3de6ca281a 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -949,6 +949,7 @@ bool ObjectList::del_subobject_from_object(const int obj_idx, const int idx, con return false; } (*m_objects)[obj_idx]->delete_instance(idx); + (*m_objects)[obj_idx]->reset_volumes_idxs(); } else return false;