From b88b1e48197ba01a8eba5cdfdfd008c1387e56c1 Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Thu, 22 May 2025 17:51:48 +0800 Subject: [PATCH] Fix AMS HT display if it's the only AMS (cherry picked from commit bambulab/BambuStudio@a182fa1aa4a3bdd32c4ccfa26adcd92a9f1cca37) --------- Co-authored-by: tao wang --- src/slic3r/GUI/DeviceManager.cpp | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index a4ddfb7b2c..55dc449dc8 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -4059,17 +4059,7 @@ int MachineObject::parse_json(std::string payload, bool key_field_only) Ams* curr_ams = nullptr; auto ams_it = amsList.find(ams_id); if (ams_it == amsList.end()) { - Ams* new_ams = new Ams(ams_id, nozzle_id, type_id); - - try { - if (!ams_id.empty()) { - int ams_id_int = atoi(ams_id.c_str()); - new_ams->is_exists = (ams_exist_bits & (1 << ams_id_int)) != 0 ? true : false; - } - } - catch (...) { - ; - } + Ams* new_ams = new Ams(ams_id, nozzle_id, type_id); amsList.insert(std::make_pair(ams_id, new_ams)); // new ams added event curr_ams = new_ams; @@ -4078,6 +4068,25 @@ int MachineObject::parse_json(std::string payload, bool key_field_only) } if (!curr_ams) continue; + /*set ams type flag*/ + curr_ams->type = type_id; + + + /*set ams exist flag*/ + try { + if (!ams_id.empty()) { + int ams_id_int = atoi(ams_id.c_str()); + + if (type_id < 4) { + curr_ams->is_exists = (ams_exist_bits & (1 << ams_id_int)) != 0 ? true : false; + } else { + curr_ams->is_exists = get_flag_bits(ams_exist_bits, 4 + (ams_id_int - 128)); + } + } + } catch (...) { + ; + } + if (it->contains("dry_time") && (*it)["dry_time"].is_number()) { curr_ams->left_dry_time = (*it)["dry_time"].get();