diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index a1dfba5d8..824cf95ed 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2048,9 +2048,22 @@ void Sidebar::sync_extruder_list() p->sync_extruder_list(); } +bool Sidebar::should_sync_extruder_list(MachineObject *obj) +{ + if (obj && obj->is_connected() && obj->is_multi_extruders() && wxGetApp().plater()->is_multi_extruder_ams_empty()) { + std::string machine_print_name = obj->printer_type; + PresetBundle *preset_bundle = wxGetApp().preset_bundle; + std::string target_model_id = preset_bundle->printers.get_edited_preset().get_printer_type(preset_bundle); + if (machine_print_name == target_model_id) { + return true; + } + } + return false; +} + void Sidebar::load_ams_list(std::string const &device, MachineObject* obj) { - if (obj && obj->is_connected() && obj->is_multi_extruders() && wxGetApp().plater()->is_multi_extruder_ams_empty()) + if (should_sync_extruder_list(obj)) sync_extruder_list(); std::map filament_ams_list = build_filament_ams_list(obj); diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index 1e0443cd9..69544d077 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -151,6 +151,7 @@ public: std::map build_filament_ams_list(MachineObject* obj); void sync_ams_list(); void sync_extruder_list(); + bool should_sync_extruder_list(MachineObject* obj); ObjectList* obj_list(); ObjectSettings* obj_settings();