diff --git a/src/slic3r/GUI/Widgets/AMSControl.cpp b/src/slic3r/GUI/Widgets/AMSControl.cpp index 6f00c3297..f170d9fed 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.cpp +++ b/src/slic3r/GUI/Widgets/AMSControl.cpp @@ -2040,7 +2040,9 @@ void AmsCans::SelectCan(std::string canid) { for (auto i = 0; i < m_can_lib_list.GetCount(); i++) { CanLibs *lib = m_can_lib_list[i]; - if (lib->canLib->m_info.can_id == canid) { m_canlib_selection = lib->canLib->m_can_index; } + if (lib->canLib->m_info.can_id == canid) { + m_canlib_selection = lib->canLib->m_can_index; + } } m_canlib_id = canid; @@ -2624,9 +2626,9 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons }); Bind(EVT_AMS_UNSELETED_VAMS, [this](wxCommandEvent& e) { - if (m_current_ams == e.GetString().ToStdString()) { + /*if (m_current_ams == e.GetString().ToStdString()) { return; - } + }*/ m_current_ams = e.GetString().ToStdString(); SwitchAms(m_current_ams); m_vams_lib->UnSelected(); @@ -3429,6 +3431,8 @@ void AMSControl::AddExtraAms(AMSinfo info) void AMSControl::SwitchAms(std::string ams_id) { + if(ams_id == m_current_show_ams){return;} + if (ams_id != std::to_string(VIRTUAL_TRAY_ID)) { if (m_current_show_ams != ams_id) { m_current_show_ams = ams_id; @@ -3442,14 +3446,39 @@ void AMSControl::SwitchAms(std::string ams_id) item->amsItem->OnSelected(); m_current_senect = ams_id; + //bool ready_selected = false; + //for (auto i = 0; i < m_ams_cans_list.GetCount(); i++) { + // AmsCansWindow* ams = m_ams_cans_list[i]; + // if (ams->amsCans->m_info.ams_id == ams_id) { + // //ams->amsCans->SetDefSelectCan(); + // //m_vams_lib->OnSelected(); + // if () { + + // } + // } + //} + + bool ready_selected = false; for (auto i = 0; i < m_ams_cans_list.GetCount(); i++) { AmsCansWindow* ams = m_ams_cans_list[i]; if (ams->amsCans->m_info.ams_id == ams_id) { - ams->amsCans->SetDefSelectCan(); - m_vams_lib->UnSelected(); + for (auto lib : ams->amsCans->m_can_lib_list) { + if (lib->canLib->is_selected()) { + ready_selected = true; + } + } } } + if (!ready_selected) { + m_current_ams = std::to_string(VIRTUAL_TRAY_ID); + m_vams_lib->OnSelected(); + } + else { + m_current_ams = ams_id; + m_vams_lib->UnSelected(); + } + } else { item->amsItem->UnSelected(); //item->amsItem->HideHumidity(); @@ -3471,8 +3500,6 @@ void AMSControl::SwitchAms(std::string ams_id) } } - m_current_ams = ams_id; - // update extruder //m_extruder->OnAmsLoading(false);