diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index 1c3805f2f..c9dba57c1 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -469,7 +469,7 @@ void ConfigManipulation::update_print_fff_config(DynamicPrintConfig* config, con if (opt != nullptr) { if (opt->getInt() > filament_cnt) { DynamicPrintConfig new_conf = *config; - new_conf.set_key_value(key, new ConfigOptionInt(filament_cnt)); + new_conf.set_key_value(key, new ConfigOptionInt(0)); apply(config, &new_conf); } } diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index bfcaa7efa..9c88c68bc 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -607,6 +607,11 @@ void ObjectList::update_filament_values_for_items(const size_t filaments_count) } m_objects_model->SetExtruder(extruder, item); + static const char *keys[] = {"support_filament", "support_interface_filament"}; + for (auto key : keys) + if (object->config.has(key) && object->config.opt_int(key) > filaments_count) + object->config.erase(key); + if (object->volumes.size() > 1) { for (size_t id = 0; id < object->volumes.size(); id++) { item = m_objects_model->GetItemByVolumeId(i, id); @@ -620,6 +625,10 @@ void ObjectList::update_filament_values_for_items(const size_t filaments_count) } m_objects_model->SetExtruder(extruder, item); + + for (auto key : keys) + if (object->volumes[id]->config.has(key) && object->volumes[id]->config.opt_int(key) > filaments_count) + object->volumes[id]->config.erase(key); } } } diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 16c4c5e70..6fdde804b 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -447,7 +447,7 @@ static struct DynamicFilamentList : DynamicList int index_of(wxString value) override { long n = 0; - return value.ToLong(&n) ? int(n) : -1; + return (value.ToLong(&n) && n <= items.size()) ? int(n) : -1; } void update(bool force = false) {