From 5b800d034266489e5b288aa7a51ce6d244ae06b8 Mon Sep 17 00:00:00 2001 From: "xin.zhang" Date: Thu, 16 Jan 2025 14:52:49 +0800 Subject: [PATCH] FIX: disable send print while the ams is during setting up jira: [STUDIO-9813] Change-Id: I55dcca9aab4a9923636c1cf7a0a27bc7e4b9586d --- src/slic3r/GUI/DeviceManager.cpp | 16 ++++++++++++++++ src/slic3r/GUI/DeviceManager.hpp | 2 ++ src/slic3r/GUI/SelectMachine.cpp | 12 +++++++++++- src/slic3r/GUI/SelectMachine.hpp | 1 + 4 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 5ff3f5436..e2750dd33 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -903,6 +903,20 @@ bool MachineObject::is_support_amx_ext_mix_mapping() { return true; } +/* the API is developing by AP, not completed now*/ +bool MachineObject::is_ams_on_settingup() const +{ + for (const auto& ext : m_extder_data.extders) + { + if (ext.ams_stat != 0) + { + return true; + } + } + + return false; +} + static float calc_color_distance(wxColour c1, wxColour c2) { float lab[2][3]; @@ -4338,6 +4352,8 @@ int MachineObject::parse_json(std::string payload, bool key_field_only) /*AMS without initialization*/ if (nozzle_id == 0xE) { + ams_id_set.erase(ams_id); + amsList.erase(ams_id); continue; } diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index ec7b2d8d6..572b97a34 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -695,6 +695,8 @@ public: bool is_ams_need_update; inline bool is_ams_unload() { return m_tray_tar.compare("255") == 0; } + [[nodiscard]] bool is_ams_on_settingup() const; + Ams* get_curr_Ams(); AmsTray* get_curr_tray(); AmsTray *get_ams_tray(std::string ams_id, std::string tray_id); diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index 3c9ec35a1..e711b0a9e 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -1737,6 +1737,10 @@ void SelectMachineDialog::show_status(PrintDialogStatus status, std::vectoris_ams_on_settingup()) + { + show_status(PrintDialogStatus::PrintStatusAmsOnSettingup); + return; + } + struct ExtruderStatus { bool has_ams{false}; diff --git a/src/slic3r/GUI/SelectMachine.hpp b/src/slic3r/GUI/SelectMachine.hpp index 72f1e15e9..eb108e6b7 100644 --- a/src/slic3r/GUI/SelectMachine.hpp +++ b/src/slic3r/GUI/SelectMachine.hpp @@ -73,6 +73,7 @@ enum PrintDialogStatus { PrintStatusInSystemPrinting, PrintStatusInPrinting, PrintStatusDisableAms, + PrintStatusAmsOnSettingup, PrintStatusAmsMappingSuccess, PrintStatusAmsMappingInvalid, PrintStatusAmsMappingU0Invalid,