From 55898ab88ee844dd7da17d992ad8f79e439f96a0 Mon Sep 17 00:00:00 2001 From: "tao.wang" Date: Mon, 22 Jul 2024 21:24:37 +0800 Subject: [PATCH] FIX:fixed some amscontrol issue jira:[for fix amscontrol issue] Change-Id: Id62ffd047403bf80f6aba732b8ce31d782bcea57 --- src/slic3r/GUI/AMSMaterialsSetting.hpp | 1 + src/slic3r/GUI/StatusPanel.cpp | 63 ++++++++++++-------------- src/slic3r/GUI/Widgets/AMSItem.cpp | 10 ++-- 3 files changed, 37 insertions(+), 37 deletions(-) diff --git a/src/slic3r/GUI/AMSMaterialsSetting.hpp b/src/slic3r/GUI/AMSMaterialsSetting.hpp index c058ac769..871c6ac26 100644 --- a/src/slic3r/GUI/AMSMaterialsSetting.hpp +++ b/src/slic3r/GUI/AMSMaterialsSetting.hpp @@ -118,6 +118,7 @@ public: void on_picker_color(wxCommandEvent& color); MachineObject* obj{ nullptr }; int ams_id { 0 }; /* 0 ~ 3 */ + int slot_id { 0 }; /* 0 ~ 3 */ int tray_id { 0 }; /* 0 ~ 3 */ std::string ams_filament_id; diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index 1675b0838..58ec2e286 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -3704,18 +3704,11 @@ void StatusPanel::on_filament_edit(wxCommandEvent &event) if (obj) { m_filament_setting_dlg->obj = obj; - std::string ams_id; - int ams_id_int = 0; - int tray_id_int = 0; - int tray_id = event.GetInt(); - if (tray_id == VIRTUAL_TRAY_MAIN_ID || tray_id == VIRTUAL_TRAY_DEPUTY_ID) { - ams_id = std::to_string(tray_id); - } - else{ - ams_id = std::to_string(tray_id / 4); - } - if (ams_id.compare(std::to_string(VIRTUAL_TRAY_MAIN_ID)) == 0) { + int ams_id = event.GetInt(); + int slot_id = event.GetString().IsEmpty() ? 0 : std::stoi(event.GetString().ToStdString()); + + /* if (ams_id.compare(std::to_string(VIRTUAL_TRAY_MAIN_ID)) == 0) { tray_id_int = VIRTUAL_TRAY_MAIN_ID; m_filament_setting_dlg->ams_id = ams_id_int; m_filament_setting_dlg->tray_id = tray_id_int; @@ -3725,13 +3718,12 @@ void StatusPanel::on_filament_edit(wxCommandEvent &event) n_val = wxString::Format("%.3f", obj->vt_slot[0].n); m_filament_setting_dlg->Move(wxPoint(current_position_x, current_position_y)); m_filament_setting_dlg->Popup(wxEmptyString, wxEmptyString, wxEmptyString, wxEmptyString, k_val, n_val); - } else { + } else {*/ //std::string tray_id = event.GetString().ToStdString(); // m_ams_control->GetCurrentCan(ams_id); try { - ams_id_int = tray_id / 4; - tray_id_int = tray_id % 4; - m_filament_setting_dlg->ams_id = ams_id_int; - m_filament_setting_dlg->tray_id = tray_id_int; + m_filament_setting_dlg->ams_id = ams_id; + m_filament_setting_dlg->slot_id = slot_id; + m_filament_setting_dlg->tray_id = 254; std::string sn_number; std::string filament; @@ -3739,9 +3731,9 @@ void StatusPanel::on_filament_edit(wxCommandEvent &event) std::string temp_min; wxString k_val; wxString n_val; - auto it = obj->amsList.find(std::to_string(ams_id_int)); + auto it = obj->amsList.find(std::to_string(ams_id)); if (it != obj->amsList.end()) { - auto tray_it = it->second->trayList.find(std::to_string(tray_id)); + auto tray_it = it->second->trayList.find(std::to_string(slot_id)); if (tray_it != it->second->trayList.end()) { k_val = wxString::Format("%.3f", tray_it->second->k); n_val = wxString::Format("%.3f", tray_it->second->n); @@ -3779,7 +3771,7 @@ void StatusPanel::on_filament_edit(wxCommandEvent &event) catch (...) { ; } - } + //} } } @@ -3794,28 +3786,33 @@ void StatusPanel::on_ext_spool_edit(wxCommandEvent &event) current_position_y = current_position_y + m_filament_setting_dlg->GetSize().GetHeight() > drect ? drect - m_filament_setting_dlg->GetSize().GetHeight() : current_position_y; if (obj) { - int tray_id = event.GetInt(); - int ams_id = tray_id / 4; m_filament_setting_dlg->obj = obj; + + int ams_id = event.GetInt(); + int slot_id = event.GetString().IsEmpty() ? 0 : std::stoi(event.GetString().ToStdString()); + m_filament_setting_dlg->ams_id = ams_id; + m_filament_setting_dlg->slot_id = slot_id; + m_filament_setting_dlg->tray_id = 255; + int nozzle_index = ams_id == VIRTUAL_TRAY_MAIN_ID ? 0 : 1; + try { - m_filament_setting_dlg->tray_id = VIRTUAL_TRAY_MAIN_ID; std::string sn_number; std::string filament; std::string temp_max; std::string temp_min; wxString k_val; wxString n_val; - k_val = wxString::Format("%.3f", obj->vt_slot[0].k); - n_val = wxString::Format("%.3f", obj->vt_slot[0].n); - wxColor color = AmsTray::decode_color(obj->vt_slot[0].color); - m_filament_setting_dlg->ams_filament_id = obj->vt_slot[0].setting_id; + k_val = wxString::Format("%.3f", obj->vt_slot[nozzle_index].k); + n_val = wxString::Format("%.3f", obj->vt_slot[nozzle_index].n); + wxColor color = AmsTray::decode_color(obj->vt_slot[nozzle_index].color); + m_filament_setting_dlg->ams_filament_id = obj->vt_slot[nozzle_index].setting_id; std::vector cols; - for (auto col : obj->vt_slot[0].cols) { + for (auto col : obj->vt_slot[nozzle_index].cols) { cols.push_back(AmsTray::decode_color(col)); } - m_filament_setting_dlg->set_ctype(obj->vt_slot[0].ctype); + m_filament_setting_dlg->set_ctype(obj->vt_slot[nozzle_index].ctype); if (m_filament_setting_dlg->ams_filament_id.empty()) { m_filament_setting_dlg->set_empty_color(color); @@ -3824,12 +3821,12 @@ void StatusPanel::on_ext_spool_edit(wxCommandEvent &event) m_filament_setting_dlg->set_color(color); } - m_filament_setting_dlg->m_is_third = !MachineObject::is_bbl_filament(obj->vt_slot[0].tag_uid); + m_filament_setting_dlg->m_is_third = !MachineObject::is_bbl_filament(obj->vt_slot[nozzle_index].tag_uid); if (!m_filament_setting_dlg->m_is_third) { - sn_number = obj->vt_slot[0].uuid; - filament = obj->vt_slot[0].sub_brands; - temp_max = obj->vt_slot[0].nozzle_temp_max; - temp_min = obj->vt_slot[0].nozzle_temp_min; + sn_number = obj->vt_slot[nozzle_index].uuid; + filament = obj->vt_slot[nozzle_index].sub_brands; + temp_max = obj->vt_slot[nozzle_index].nozzle_temp_max; + temp_min = obj->vt_slot[nozzle_index].nozzle_temp_min; } m_filament_setting_dlg->Move(wxPoint(current_position_x,current_position_y)); diff --git a/src/slic3r/GUI/Widgets/AMSItem.cpp b/src/slic3r/GUI/Widgets/AMSItem.cpp index b87e28498..4fc1c628d 100644 --- a/src/slic3r/GUI/Widgets/AMSItem.cpp +++ b/src/slic3r/GUI/Widgets/AMSItem.cpp @@ -1582,9 +1582,10 @@ void AMSLib::OnSelected() void AMSLib::post_event(wxCommandEvent &&event) { - int tray_id = atoi(m_ams_id.c_str()) * 4 + atoi(m_info.can_id.c_str()); + //int tray_id = atoi(m_ams_id.c_str()) * 4 + atoi(m_info.can_id.c_str()); //event.SetString(m_info.can_id); - event.SetInt(tray_id); + event.SetString(m_slot_id); + event.SetInt(std::stoi(m_ams_id)); event.SetEventObject(m_parent); wxPostEvent(m_parent, event); event.Skip(); @@ -2810,7 +2811,9 @@ void AmsItem::AddCan(Caninfo caninfo, int canindex, int maxcan, wxBoxSizer* size }); - m_panel_lib->m_ams_model = m_ams_model; + m_panel_lib->m_ams_model = m_ams_model; + m_panel_lib->m_ams_id = m_info.ams_id; + m_panel_lib->m_slot_id = caninfo.can_id; m_panel_lib->m_info.can_id = caninfo.can_id; m_panel_lib->m_can_index = canindex; @@ -2870,7 +2873,6 @@ void AmsItem::Update(AMSinfo info) i++; } - i = 0; for (int i = 0; i < m_can_lib_list.size(); i++) { AMSLib* lib = m_can_lib_list[std::to_string(i)]; if (i < m_can_count && lib != nullptr) {