FIX: crash when delete filament with setting support filament
jira: STUDIO-11063 Change-Id: I72ede85e540178b576239615d67017c082ded113
This commit is contained in:
parent
be16678e70
commit
bef139898a
|
@ -724,19 +724,35 @@ void ObjectList::update_filament_values_for_items_when_delete_filament(const siz
|
||||||
m_objects_model->SetExtruder(extruder, item);
|
m_objects_model->SetExtruder(extruder, item);
|
||||||
|
|
||||||
static const char *keys[] = {"support_filament", "support_interface_filament"};
|
static const char *keys[] = {"support_filament", "support_interface_filament"};
|
||||||
for (auto key : keys)
|
for (auto key : keys) {
|
||||||
if (object->config.has(key) && object->config.opt_int(key) == filament_id + 1) {
|
if (object->config.has(key)) {
|
||||||
if (replace_id == -1)
|
if(object->config.opt_int(key) == filament_id + 1)
|
||||||
object->config.erase(key);
|
object->config.erase(key);
|
||||||
else
|
else {
|
||||||
object->config.set_key_value(key, new ConfigOptionInt(replace_filament_id));
|
int new_value = object->config.opt_int(key) > filament_id ? object->config.opt_int(key) - 1 : object->config.opt_int(key);
|
||||||
|
object->config.set_key_value(key, new ConfigOptionInt(new_value));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//if (object->volumes.size() > 1) {
|
//if (object->volumes.size() > 1) {
|
||||||
for (size_t id = 0; id < object->volumes.size(); id++) {
|
for (size_t id = 0; id < object->volumes.size(); id++) {
|
||||||
item = m_objects_model->GetItemByVolumeId(i, id);
|
item = m_objects_model->GetItemByVolumeId(i, id);
|
||||||
if (!item)
|
if (!item)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
for (auto key : keys) {
|
||||||
|
if (object->volumes[id]->config.has(key)) {
|
||||||
|
if (object->volumes[id]->config.opt_int(key) == filament_id + 1)
|
||||||
|
object->volumes[id]->config.erase(key);
|
||||||
|
else {
|
||||||
|
int new_value = object->volumes[id]->config.opt_int(key) > filament_id ? object->volumes[id]->config.opt_int(key) - 1 :
|
||||||
|
object->volumes[id]->config.opt_int(key);
|
||||||
|
object->config.set_key_value(key, new ConfigOptionInt(new_value));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!object->volumes[id]->config.has("extruder")) {
|
if (!object->volumes[id]->config.has("extruder")) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -749,10 +765,6 @@ void ObjectList::update_filament_values_for_items_when_delete_filament(const siz
|
||||||
}
|
}
|
||||||
|
|
||||||
m_objects_model->SetExtruder(extruder, item);
|
m_objects_model->SetExtruder(extruder, item);
|
||||||
|
|
||||||
for (auto key : keys)
|
|
||||||
if (object->volumes[id]->config.has(key) && object->volumes[id]->config.opt_int(key) == filament_id + 1)
|
|
||||||
object->volumes[id]->config.erase(key);
|
|
||||||
}
|
}
|
||||||
//}
|
//}
|
||||||
|
|
||||||
|
|
|
@ -14948,11 +14948,13 @@ void Plater::on_filaments_delete(size_t num_filaments, size_t filament_id, int r
|
||||||
// update global support filament
|
// update global support filament
|
||||||
static const char *keys[] = {"support_filament", "support_interface_filament"};
|
static const char *keys[] = {"support_filament", "support_interface_filament"};
|
||||||
for (auto key : keys)
|
for (auto key : keys)
|
||||||
if (p->config->has(key) && p->config->opt_int(key) == filament_id + 1) {
|
if (p->config->has(key)) {
|
||||||
if (replace_filament_id == -1)
|
if(p->config->opt_int(key) == filament_id + 1)
|
||||||
(*(p->config)).erase(key);
|
(*(p->config)).erase(key);
|
||||||
else
|
else {
|
||||||
(*(p->config)).set_key_value(key, new ConfigOptionInt(replace_filament_id + 1));
|
int new_value = p->config->opt_int(key) > filament_id ? p->config->opt_int(key) - 1 : p->config->opt_int(key);
|
||||||
|
(*(p->config)).set_key_value(key, new ConfigOptionInt(new_value));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// update object/volume/support(object and volume) filament id
|
// update object/volume/support(object and volume) filament id
|
||||||
|
|
Loading…
Reference in New Issue