diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 3b4896f038..7cf6c2565d 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -4187,6 +4187,11 @@ int MachineObject::parse_json(std::string payload, bool key_field_only) // new ams added event curr_ams = new_ams; } else { + + if (nozzle_id != ams_it->second->nozzle) { + ams_it->second->nozzle = nozzle_id; + } + curr_ams = ams_it->second; } if (!curr_ams) continue; diff --git a/src/slic3r/GUI/Widgets/AMSControl.cpp b/src/slic3r/GUI/Widgets/AMSControl.cpp index dbce016a6b..85e66c41e5 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.cpp +++ b/src/slic3r/GUI/Widgets/AMSControl.cpp @@ -1009,11 +1009,17 @@ void AMSControl::UpdateAms(std::vector ams_info, std::vectorex if (!test){ // update item bool fresh = false; + + // basic check if (m_ams_info.size() == ams_info.size() && m_extder_data.total_extder_count == data.total_extder_count && m_dev_id == dev_id){ for (int i = 0; i < m_ams_info.size(); i++){ if (m_ams_info[i].ams_id != ams_info[i].ams_id){ fresh = true; } + + if (m_ams_info[i].nozzle_id != ams_info[i].nozzle_id) { + fresh = true; + } } } else{