From bb74ca8b637ec152ee939e9a08c1b692698b56b8 Mon Sep 17 00:00:00 2001 From: tao wang Date: Tue, 8 Apr 2025 16:02:35 +0800 Subject: [PATCH] ENH:supports new fields for flag3 jira:[none] Change-Id: I013c7b843f3f7d5156a8d209572da2bc078e9191 (cherry picked from commit 106d9865c3e569b95519ae9bd9193d10bd991d1a) --- src/slic3r/GUI/DeviceManager.cpp | 6 +++--- src/slic3r/GUI/StatusPanel.cpp | 23 +++++++++-------------- src/slic3r/GUI/Widgets/AMSControl.cpp | 14 ++++++-------- src/slic3r/GUI/Widgets/AMSControl.hpp | 2 +- 4 files changed, 19 insertions(+), 26 deletions(-) diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index a0dd551ec7..85ec78edaf 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -4390,12 +4390,12 @@ int MachineObject::parse_json(std::string payload, bool key_field_only) if (jj["ams"]["version"].is_number()) ams_version = jj["ams"]["version"].get(); } - if (jj["ams"].contains("tray_now")) { - this->_parse_tray_now(jj["ams"]["tray_now"].get()); - } if (jj["ams"].contains("tray_tar")) { m_tray_tar = jj["ams"]["tray_tar"].get(); } + if (jj["ams"].contains("tray_now")) { + _parse_tray_now(jj["ams"]["tray_now"].get()); + } if (jj["ams"].contains("ams_rfid_status")) ams_rfid_status = jj["ams"]["ams_rfid_status"].get(); diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index 86717e706d..90102aeb20 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -3310,7 +3310,7 @@ void StatusPanel::update_ams(MachineObject *obj) } else { m_ams_control->SetAmsStep(ext.snow.ams_id, ext.snow.slot_id, AMSPassRoadType::AMS_ROAD_TYPE_UNLOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE); } - m_ams_control->SetExtruder(ext.ext_has_filament, ext.snow.ams_id, ext.snow.slot_id); + m_ams_control->SetExtruder(ext.ext_has_filament, MAIN_NOZZLE_ID, ext.snow.ams_id, ext.snow.slot_id); } /*left*/ @@ -3325,7 +3325,7 @@ void StatusPanel::update_ams(MachineObject *obj) } else { m_ams_control->SetAmsStep(ext.snow.ams_id, ext.snow.slot_id, AMSPassRoadType::AMS_ROAD_TYPE_UNLOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE); } - m_ams_control->SetExtruder(ext.ext_has_filament, ext.snow.ams_id, ext.snow.slot_id); + m_ams_control->SetExtruder(ext.ext_has_filament, DEPUTY_NOZZLE_ID, ext.snow.ams_id, ext.snow.slot_id); } //} @@ -4271,6 +4271,8 @@ void StatusPanel::on_ams_load_vams(wxCommandEvent& event) { void StatusPanel::on_ams_switch(SimpleEvent &event) { if(obj){ + + /*right*/ if (obj->m_extder_data.extders.size() > 0) { auto ext = obj->m_extder_data.extders[MAIN_NOZZLE_ID]; if (ext.ext_has_filament) { @@ -4282,7 +4284,7 @@ void StatusPanel::on_ams_switch(SimpleEvent &event) } else { m_ams_control->SetAmsStep(ext.snow.ams_id, ext.snow.slot_id, AMSPassRoadType::AMS_ROAD_TYPE_UNLOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE); } - m_ams_control->SetExtruder(ext.ext_has_filament, ext.snow.ams_id, ext.snow.slot_id); + m_ams_control->SetExtruder(ext.ext_has_filament, MAIN_NOZZLE_ID, ext.snow.ams_id, ext.snow.slot_id); } /*left*/ @@ -4297,7 +4299,7 @@ void StatusPanel::on_ams_switch(SimpleEvent &event) } else { m_ams_control->SetAmsStep(ext.snow.ams_id, ext.snow.slot_id, AMSPassRoadType::AMS_ROAD_TYPE_UNLOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE); } - m_ams_control->SetExtruder(ext.ext_has_filament, ext.snow.ams_id, ext.snow.slot_id); + m_ams_control->SetExtruder(ext.ext_has_filament, DEPUTY_NOZZLE_ID, ext.snow.ams_id, ext.snow.slot_id); } } } @@ -4565,20 +4567,13 @@ void StatusPanel::on_ams_refresh_rfid(wxCommandEvent &event) auto has_filament_at_extruder = false; auto use_new_command = false; - if (obj->m_extder_data.total_extder_count <= 1 && !obj->is_enable_np) { - has_filament_at_extruder = obj->is_filament_at_extruder(); - - /*for xp support n3s/n3f*/ - if (!ams_it->second->info.empty()) { - use_new_command = true; - } - - } else { + if (obj->is_enable_np || obj->is_enable_ams_np) { use_new_command = true; - if (ams_it->second->nozzle < obj->m_extder_data.extders.size()) { has_filament_at_extruder = obj->m_extder_data.extders[ams_it->second->nozzle].ext_has_filament; } + } else { + has_filament_at_extruder = obj->is_filament_at_extruder(); } if (has_filament_at_extruder) { diff --git a/src/slic3r/GUI/Widgets/AMSControl.cpp b/src/slic3r/GUI/Widgets/AMSControl.cpp index e29939569a..0048076c37 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.cpp +++ b/src/slic3r/GUI/Widgets/AMSControl.cpp @@ -1465,19 +1465,17 @@ bool AMSControl::Enable(bool enable) return wxWindow::Enable(enable); } -void AMSControl::SetExtruder(bool on_off, std::string ams_id, std::string slot_id) +void AMSControl::SetExtruder(bool on_off, int nozzle_id, std::string ams_id, std::string slot_id) { AmsItem *item = nullptr; if (m_ams_item_list.find(ams_id) != m_ams_item_list.end()) { item = m_ams_item_list[ams_id]; } - if (!item) { - return; - } - if (!on_off) { - m_extruder->OnAmsLoading(false, item->get_nozzle_id()); - } else { + if (on_off && item) { auto col = item->GetTagColr(slot_id); - m_extruder->OnAmsLoading(true, item->get_nozzle_id(), col); + m_extruder->OnAmsLoading(true, nozzle_id, col); + } + else { + m_extruder->OnAmsLoading(false, nozzle_id); } } diff --git a/src/slic3r/GUI/Widgets/AMSControl.hpp b/src/slic3r/GUI/Widgets/AMSControl.hpp index 86634bf5b4..da9ef73ed9 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.hpp +++ b/src/slic3r/GUI/Widgets/AMSControl.hpp @@ -170,7 +170,7 @@ public: void AddAms(std::vector single_info, const std::string &series_name, const std::string &printer_type, AMSPanelPos pos = AMSPanelPos::LEFT_PANEL); void AddAmsPreview(std::vectorsingle_info, AMSPanelPos pos); //void AddExtraAms(std::vectorsingle_info); - void SetExtruder(bool on_off, std::string ams_id, std::string slot_id); + void SetExtruder(bool on_off, int nozzle_id, std::string ams_id, std::string slot_id); void SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadType type, AMSPassRoadSTEP step); void SwitchAms(std::string ams_id);