diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index cd814624ca..9c4885fd2d 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2025,9 +2025,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 c552c4d151..fc7f9fa10d 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -163,6 +163,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); // Orca void show_SEMM_buttons(bool bshow); void update_dynamic_filament_list();