diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 5cad11fffc..86a4a34e4b 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -2326,6 +2326,7 @@ void MachineObject::reset() print_status = ""; last_mc_print_stage = -1; m_new_ver_list_exist = false; + m_is_support_show_bak = false; extruder_axis_status = LOAD; nozzle_diameter = 0.0f; @@ -2938,6 +2939,7 @@ int MachineObject::parse_json(std::string payload) /*get filam_bak*/ try { if (jj.contains("filam_bak")) { + m_is_support_show_bak = true; filam_bak.clear(); if (jj["filam_bak"].is_array()) { for (auto it = jj["filam_bak"].begin(); it != jj["filam_bak"].end(); it++) { @@ -2945,6 +2947,9 @@ int MachineObject::parse_json(std::string payload) } } } + else { + m_is_support_show_bak = false; + } } catch (...) { ; diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index fd1c2008e1..840268eb3d 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -495,6 +495,7 @@ public: std::string product_name; // set by iot service, get /user/print std::vector filam_bak; + bool m_is_support_show_bak{false}; std::string bind_user_name; std::string bind_user_id; diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index 86b6fd3048..28aa7a32ea 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -2025,6 +2025,9 @@ void StatusPanel::update_ams(MachineObject *obj) if (!obj || !obj->is_connected() || obj->amsList.empty() + || !is_support_filament_backup + || !obj->ams_auto_switch_filament_flag + || !obj->m_is_support_show_bak || obj->ams_exist_bits == 0) { if (!obj || !obj->is_connected()) { last_tray_exist_bits = -1; @@ -2040,10 +2043,8 @@ void StatusPanel::update_ams(MachineObject *obj) m_ams_control->show_auto_refill(false); } else { - show_ams_group(true, obj->is_function_supported(PrinterFunction::FUNC_VIRTUAL_TYAY), is_support_extrusion_cali, obj->is_support_filament_edit_virtual_tray); - m_ams_control->show_auto_refill(is_support_filament_backup); - if(is_support_filament_backup) m_ams_control->show_auto_refill(obj->ams_auto_switch_filament_flag); + m_ams_control->show_auto_refill(true); }