Fixed updating of the extruder value for last part in the object after deleting another parts (#1931)
This commit is contained in:
parent
8d8df8b670
commit
22fcf245c4
1 changed files with 21 additions and 5 deletions
|
@ -1407,12 +1407,14 @@ bool ObjectList::del_subobject_from_object(const int obj_idx, const int idx, con
|
||||||
// Cannot delete a wipe tower.
|
// Cannot delete a wipe tower.
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
ModelObject* object = (*m_objects)[obj_idx];
|
||||||
|
|
||||||
if (type == itVolume) {
|
if (type == itVolume) {
|
||||||
const auto volume = (*m_objects)[obj_idx]->volumes[idx];
|
const auto volume = object->volumes[idx];
|
||||||
|
|
||||||
// if user is deleting the last solid part, throw error
|
// if user is deleting the last solid part, throw error
|
||||||
int solid_cnt = 0;
|
int solid_cnt = 0;
|
||||||
for (auto vol : (*m_objects)[obj_idx]->volumes)
|
for (auto vol : object->volumes)
|
||||||
if (vol->is_model_part())
|
if (vol->is_model_part())
|
||||||
++solid_cnt;
|
++solid_cnt;
|
||||||
if (volume->is_model_part() && solid_cnt == 1) {
|
if (volume->is_model_part() && solid_cnt == 1) {
|
||||||
|
@ -1420,14 +1422,23 @@ bool ObjectList::del_subobject_from_object(const int obj_idx, const int idx, con
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
(*m_objects)[obj_idx]->delete_volume(idx);
|
object->delete_volume(idx);
|
||||||
|
|
||||||
|
if (object->volumes.size() == 1)
|
||||||
|
{
|
||||||
|
const auto last_volume = object->volumes[0];
|
||||||
|
if (!last_volume->config.empty()) {
|
||||||
|
object->config.apply(last_volume->config);
|
||||||
|
last_volume->config.clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (type == itInstance) {
|
else if (type == itInstance) {
|
||||||
if ((*m_objects)[obj_idx]->instances.size() == 1) {
|
if (object->instances.size() == 1) {
|
||||||
Slic3r::GUI::show_error(nullptr, _(L("You can't delete the last intance from object.")));
|
Slic3r::GUI::show_error(nullptr, _(L("You can't delete the last intance from object.")));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
(*m_objects)[obj_idx]->delete_instance(idx);
|
object->delete_instance(idx);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return false;
|
return false;
|
||||||
|
@ -1752,6 +1763,11 @@ void ObjectList::delete_from_model_and_list(const std::vector<ItemForDelete>& it
|
||||||
if (item->type&itVolume)
|
if (item->type&itVolume)
|
||||||
{
|
{
|
||||||
m_objects_model->Delete(m_objects_model->GetItemByVolumeId(item->obj_idx, item->sub_obj_idx));
|
m_objects_model->Delete(m_objects_model->GetItemByVolumeId(item->obj_idx, item->sub_obj_idx));
|
||||||
|
if ((*m_objects)[item->obj_idx]->volumes.size() == 1)
|
||||||
|
{
|
||||||
|
const wxString extruder = wxString::Format("%d", (*m_objects)[item->obj_idx]->config.option<ConfigOptionInt>("extruder")->value);
|
||||||
|
m_objects_model->SetValue(extruder, m_objects_model->GetItemById(item->obj_idx), 1);
|
||||||
|
}
|
||||||
wxGetApp().plater()->canvas3D()->ensure_on_bed(item->obj_idx);
|
wxGetApp().plater()->canvas3D()->ensure_on_bed(item->obj_idx);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in a new issue