From 23832a823cabbc2f18079743243eb27ed93650c8 Mon Sep 17 00:00:00 2001 From: tao wang Date: Thu, 12 Dec 2024 16:39:25 +0800 Subject: [PATCH] ENH:optimized the loadl/unload steps of multiple nozzles jira:[STUDIO-9098 ] Change-Id: Id2d5770aaefb61d688d7e8023146a34952ff1211 --- src/slic3r/GUI/StatusPanel.cpp | 133 ++++++++++++-------------- src/slic3r/GUI/Widgets/AMSControl.cpp | 63 ++++++------ src/slic3r/GUI/Widgets/AMSItem.cpp | 4 +- 3 files changed, 94 insertions(+), 106 deletions(-) diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index 32b314207..acbdfa648 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -1312,6 +1312,7 @@ wxBoxSizer *StatusBasePanel::create_machine_control_page(wxWindow *parent) bSizer_control->Add(temp_axis_ctrl_sizer, 0, wxALIGN_CENTER|wxLEFT|wxRIGHT, FromDIP(8)); bSizer_control->Add(0, 0, 0, wxTOP, FromDIP(6)); bSizer_control->Add(m_ams_ctrl_sizer, 0, wxALIGN_CENTER|wxLEFT|wxRIGHT, FromDIP(8)); + bSizer_control->Add(0, 0, 0, wxTOP, FromDIP(6)); bSizer_control->Add(m_filament_load_sizer, 0, wxALIGN_CENTER|wxLEFT|wxRIGHT, FromDIP(8)); bSizer_control->Add(0, 0, 0, wxTOP, FromDIP(4)); @@ -1976,8 +1977,8 @@ wxBoxSizer* StatusBasePanel::create_filament_group(wxWindow* parent) m_filament_step = new FilamentLoad(m_filament_load_box, wxID_ANY); m_filament_step->SetDoubleBuffered(true); - m_filament_step->set_min_size(wxSize(wxSize(FromDIP(586), FromDIP(215)))); - m_filament_step->set_max_size(wxSize(wxSize(FromDIP(586), FromDIP(215)))); + m_filament_step->set_min_size(wxSize(wxSize(FromDIP(576), FromDIP(215)))); + m_filament_step->set_max_size(wxSize(wxSize(FromDIP(576), FromDIP(215)))); m_filament_step->SetBackgroundColour(*wxWHITE); StateColor btn_bd_white(std::pair(wxColour(255, 255, 254), StateColor::Disabled), std::pair(wxColour(38, 46, 48), StateColor::Enabled)); @@ -2000,7 +2001,7 @@ wxBoxSizer* StatusBasePanel::create_filament_group(wxWindow* parent) }); - sizer_box->Add(m_filament_step, 0, wxALIGN_CENTER_HORIZONTAL | wxTOP|wxLEFT|wxRIGHT, FromDIP(10)); + sizer_box->Add(m_filament_step, 0, wxALIGN_CENTER|wxTOP, FromDIP(10)); sizer_box->Add(0, 0, 0, wxTOP, FromDIP(5)); sizer_box->Add(m_button_retry, 0, wxLEFT, FromDIP(28)); sizer_box->Add(0, 0, 0, wxTOP, FromDIP(10)); @@ -2008,7 +2009,7 @@ wxBoxSizer* StatusBasePanel::create_filament_group(wxWindow* parent) m_filament_load_box->SetSizer(sizer_box); m_filament_load_box->Layout(); m_filament_load_box->Fit(); - sizer->Add(m_filament_load_box, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, FromDIP(10)); + sizer->Add(m_filament_load_box, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 0); return sizer; } @@ -2017,26 +2018,30 @@ void StatusBasePanel::show_ams_group(bool show) if (m_ams_control->IsShown() != show) { m_ams_control->Show(show); m_ams_control->show_noams_mode(); - } - - if (m_ams_control_box->IsShown() != show) { - m_ams_control_box->Show(show); - } - - if (m_show_ams_group != show) - { - m_show_ams_group = show; m_ams_control->Layout(); m_ams_control->Fit(); Layout(); Fit(); } + + if (m_ams_control_box->IsShown() != show) { + m_ams_control_box->Show(show); + m_ams_control->Layout(); + m_ams_control->Fit(); + Layout(); + Fit(); + } + + //if (m_show_ams_group != show){ + // m_show_ams_group = show; + //} } void StatusBasePanel::show_filament_load_group(bool show) { if (m_filament_load_box->IsShown() != show) { m_filament_load_box->Show(show); + m_button_retry->Show(show); } if (m_filament_step->IsShown() != show) { @@ -3032,15 +3037,15 @@ void StatusPanel::update_ams(MachineObject *obj) if (obj && (obj->last_cali_version != obj->cali_version)) { last_cali_version = obj->cali_version; PACalibExtruderInfo cali_info; - cali_info.nozzle_diameter = obj->m_extder_data.extders[0].current_nozzle_diameter; - cali_info.use_extruder_id = false; + cali_info.nozzle_diameter = obj->m_extder_data.extders[0].current_nozzle_diameter; + cali_info.use_extruder_id = false; cali_info.use_nozzle_volume_type = false; CalibUtils::emit_get_PA_calib_infos(cali_info); } - bool is_support_virtual_tray = obj->ams_support_virtual_tray; - bool is_support_filament_backup = obj->is_support_filament_backup; - AMSModel ams_mode = AMSModel::GENERIC_AMS; + bool is_support_virtual_tray = obj->ams_support_virtual_tray; + bool is_support_filament_backup = obj->is_support_filament_backup; + AMSModel ams_mode = AMSModel::GENERIC_AMS; if (obj) { if (obj->get_printer_ams_type() == "f1") { ams_mode = AMSModel::AMS_LITE; } @@ -3062,8 +3067,7 @@ void StatusPanel::update_ams(MachineObject *obj) show_ams_group(false); show_filament_load_group(false); m_ams_control->show_auto_refill(false); - } - else { + } else { m_ams_control->SetAmsModel(ams_mode, ams_mode); m_filament_step->SetAmsModel(ams_mode, ams_mode); show_ams_group(true); @@ -3088,9 +3092,7 @@ void StatusPanel::update_ams(MachineObject *obj) AMSinfo info; info.ams_id = ams->first; if (ams->second->is_exists && info.parse_ams_info(obj, ams->second, obj->ams_calibrate_remain_flag, obj->is_support_ams_humidity)) { - if (ams_mode == AMSModel::AMS_LITE) { - info.ams_type = AMSModel::AMS_LITE; - } + if (ams_mode == AMSModel::AMS_LITE) { info.ams_type = AMSModel::AMS_LITE; } ams_info.push_back(info); } } @@ -3103,7 +3105,7 @@ void StatusPanel::update_ams(MachineObject *obj) ext_info.push_back(info); } std::string dev_id = obj->dev_id; - ExtderData data = obj->m_extder_data; + ExtderData data = obj->m_extder_data; // must select a current can m_ams_control->UpdateAms(ams_info, ext_info, data, dev_id, false); @@ -3115,16 +3117,13 @@ void StatusPanel::update_ams(MachineObject *obj) last_reading_bits = obj->tray_reading_bits; last_ams_version = obj->ams_version; - std::string curr_ams_id = m_ams_control->GetCurentAms(); std::string curr_can_id = m_ams_control->GetCurrentCan(curr_ams_id); - bool is_vt_tray = false; - if (obj->m_tray_tar == std::to_string(VIRTUAL_TRAY_MAIN_ID)) - is_vt_tray = true; + bool is_vt_tray = false; + if (obj->m_tray_tar == std::to_string(VIRTUAL_TRAY_MAIN_ID)) is_vt_tray = true; // set segment 1, 2 if (!obj->is_enable_np) { - if (obj->m_tray_now == std::to_string(255) || obj->m_tray_now == std::to_string(254)) { m_ams_control->SetAmsStep(obj->m_ams_id, obj->m_tray_id, AMSPassRoadType::AMS_ROAD_TYPE_UNLOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE); } else { @@ -3142,9 +3141,7 @@ void StatusPanel::update_ams(MachineObject *obj) } else { m_ams_control->SetExtruder(obj->is_filament_at_extruder(), false, obj->m_ams_id, m_ams_control->GetCanColour(obj->m_ams_id, obj->m_tray_id)); } - } - else { - + } else { /*right*/ if (obj->m_extder_data.extders.size() > 0) { auto ext = obj->m_extder_data.extders[MAIN_NOZZLE_ID]; @@ -3154,10 +3151,10 @@ void StatusPanel::update_ams(MachineObject *obj) } else { m_ams_control->SetAmsStep(ext.snow.ams_id, ext.snow.slot_id, AMSPassRoadType::AMS_ROAD_TYPE_LOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP2); } - m_ams_control->SetExtruder(true, true, ext.snow.ams_id, m_ams_control->GetCanColour(obj->m_ams_id, obj->m_tray_id)); + m_ams_control->SetExtruder(true, true, ext.snow.ams_id, m_ams_control->GetCanColour(ext.snow.ams_id, ext.snow.slot_id)); } 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(false, true, ext.snow.ams_id, m_ams_control->GetCanColour(obj->m_ams_id, obj->m_tray_id)); + m_ams_control->SetExtruder(false, true, ext.snow.ams_id, m_ams_control->GetCanColour(ext.snow.ams_id, ext.snow.slot_id)); } } @@ -3170,16 +3167,16 @@ void StatusPanel::update_ams(MachineObject *obj) } else { m_ams_control->SetAmsStep(ext.snow.ams_id, ext.snow.slot_id, AMSPassRoadType::AMS_ROAD_TYPE_LOAD, AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP2); } - m_ams_control->SetExtruder(true, true, ext.snow.ams_id, m_ams_control->GetCanColour(obj->m_ams_id, obj->m_tray_id)); + m_ams_control->SetExtruder(true, true, ext.snow.ams_id, m_ams_control->GetCanColour(ext.snow.ams_id, ext.snow.slot_id)); } 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(false, true, ext.snow.ams_id, m_ams_control->GetCanColour(obj->m_ams_id, obj->m_tray_id)); + m_ams_control->SetExtruder(false, true, ext.snow.ams_id, m_ams_control->GetCanColour(ext.snow.ams_id, ext.snow.slot_id)); } } } bool ams_loading_state = false; - auto ams_status_sub = obj->ams_status_sub; + auto ams_status_sub = obj->ams_status_sub; int vt_tray_id = VIRTUAL_TRAY_DEPUTY_ID; if (obj->is_enable_np) { @@ -3198,20 +3195,16 @@ void StatusPanel::update_ams(MachineObject *obj) if (ams_status_sub == 0x02) { m_ams_control->SetFilamentStep(FilamentStep::STEP_HEAT_NOZZLE, FilamentStepType::STEP_TYPE_VT_LOAD); m_filament_step->SetFilamentStep(FilamentStep::STEP_HEAT_NOZZLE, FilamentStepType::STEP_TYPE_VT_LOAD); - } - else if (ams_status_sub == 0x05) { + } else if (ams_status_sub == 0x05) { m_ams_control->SetFilamentStep(FilamentStep::STEP_PUSH_NEW_FILAMENT, FilamentStepType::STEP_TYPE_VT_LOAD); m_filament_step->SetFilamentStep(FilamentStep::STEP_PUSH_NEW_FILAMENT, FilamentStepType::STEP_TYPE_VT_LOAD); - } - else if (ams_status_sub == 0x06) { + } else if (ams_status_sub == 0x06) { m_ams_control->SetFilamentStep(FilamentStep::STEP_CONFIRM_EXTRUDED, FilamentStepType::STEP_TYPE_VT_LOAD); m_filament_step->SetFilamentStep(FilamentStep::STEP_CONFIRM_EXTRUDED, FilamentStepType::STEP_TYPE_VT_LOAD); - } - else if (ams_status_sub == 0x07) { + } else if (ams_status_sub == 0x07) { m_ams_control->SetFilamentStep(FilamentStep::STEP_PURGE_OLD_FILAMENT, FilamentStepType::STEP_TYPE_VT_LOAD); m_filament_step->SetFilamentStep(FilamentStep::STEP_PURGE_OLD_FILAMENT, FilamentStepType::STEP_TYPE_VT_LOAD); - } - else { + } else { m_ams_control->SetFilamentStep(FilamentStep::STEP_IDLE, FilamentStepType::STEP_TYPE_VT_LOAD); m_filament_step->SetFilamentStep(FilamentStep::STEP_IDLE, FilamentStepType::STEP_TYPE_VT_LOAD); ams_loading_state = false; @@ -3222,8 +3215,7 @@ void StatusPanel::update_ams(MachineObject *obj) if (!obj->is_ams_unload()) { m_ams_control->SetFilamentStep(FilamentStep::STEP_HEAT_NOZZLE, FilamentStepType::STEP_TYPE_LOAD); m_filament_step->SetFilamentStep(FilamentStep::STEP_HEAT_NOZZLE, FilamentStepType::STEP_TYPE_LOAD); - } - else { + } else { m_ams_control->SetFilamentStep(FilamentStep::STEP_HEAT_NOZZLE, FilamentStepType::STEP_TYPE_UNLOAD); m_filament_step->SetFilamentStep(FilamentStep::STEP_HEAT_NOZZLE, FilamentStepType::STEP_TYPE_UNLOAD); } @@ -3231,8 +3223,7 @@ void StatusPanel::update_ams(MachineObject *obj) if (!obj->is_ams_unload()) { m_ams_control->SetFilamentStep(FilamentStep::STEP_CUT_FILAMENT, FilamentStepType::STEP_TYPE_LOAD); m_filament_step->SetFilamentStep(FilamentStep::STEP_CUT_FILAMENT, FilamentStepType::STEP_TYPE_LOAD); - } - else { + } else { m_ams_control->SetFilamentStep(FilamentStep::STEP_CUT_FILAMENT, FilamentStepType::STEP_TYPE_UNLOAD); m_filament_step->SetFilamentStep(FilamentStep::STEP_CUT_FILAMENT, FilamentStepType::STEP_TYPE_UNLOAD); } @@ -3240,23 +3231,21 @@ void StatusPanel::update_ams(MachineObject *obj) if (!obj->is_ams_unload()) { m_ams_control->SetFilamentStep(FilamentStep::STEP_PULL_CURR_FILAMENT, FilamentStepType::STEP_TYPE_LOAD); m_filament_step->SetFilamentStep(FilamentStep::STEP_PULL_CURR_FILAMENT, FilamentStepType::STEP_TYPE_LOAD); - } - else { + } else { m_ams_control->SetFilamentStep(FilamentStep::STEP_PULL_CURR_FILAMENT, FilamentStepType::STEP_TYPE_UNLOAD); m_filament_step->SetFilamentStep(FilamentStep::STEP_PULL_CURR_FILAMENT, FilamentStepType::STEP_TYPE_UNLOAD); } } else if (ams_status_sub == 0x05) { if (!obj->is_ams_unload()) { - if(m_is_load_with_temp){ + if (m_is_load_with_temp) { m_ams_control->SetFilamentStep(FilamentStep::STEP_CUT_FILAMENT, FilamentStepType::STEP_TYPE_LOAD); m_filament_step->SetFilamentStep(FilamentStep::STEP_CUT_FILAMENT, FilamentStepType::STEP_TYPE_LOAD); - }else{ + } else { m_ams_control->SetFilamentStep(FilamentStep::STEP_PUSH_NEW_FILAMENT, FilamentStepType::STEP_TYPE_LOAD); m_filament_step->SetFilamentStep(FilamentStep::STEP_PUSH_NEW_FILAMENT, FilamentStepType::STEP_TYPE_LOAD); } - } - else { + } else { m_ams_control->SetFilamentStep(FilamentStep::STEP_PUSH_NEW_FILAMENT, FilamentStepType::STEP_TYPE_UNLOAD); m_filament_step->SetFilamentStep(FilamentStep::STEP_PUSH_NEW_FILAMENT, FilamentStepType::STEP_TYPE_UNLOAD); } @@ -3264,8 +3253,7 @@ void StatusPanel::update_ams(MachineObject *obj) if (!obj->is_ams_unload()) { m_ams_control->SetFilamentStep(FilamentStep::STEP_PUSH_NEW_FILAMENT, FilamentStepType::STEP_TYPE_LOAD); m_filament_step->SetFilamentStep(FilamentStep::STEP_PUSH_NEW_FILAMENT, FilamentStepType::STEP_TYPE_LOAD); - } - else { + } else { m_ams_control->SetFilamentStep(FilamentStep::STEP_PUSH_NEW_FILAMENT, FilamentStepType::STEP_TYPE_UNLOAD); m_filament_step->SetFilamentStep(FilamentStep::STEP_PUSH_NEW_FILAMENT, FilamentStepType::STEP_TYPE_UNLOAD); } @@ -3274,27 +3262,15 @@ void StatusPanel::update_ams(MachineObject *obj) if (m_is_load_with_temp) { m_ams_control->SetFilamentStep(FilamentStep::STEP_PULL_CURR_FILAMENT, FilamentStepType::STEP_TYPE_LOAD); m_filament_step->SetFilamentStep(FilamentStep::STEP_PULL_CURR_FILAMENT, FilamentStepType::STEP_TYPE_LOAD); - }else{ + } else { m_ams_control->SetFilamentStep(FilamentStep::STEP_PURGE_OLD_FILAMENT, FilamentStepType::STEP_TYPE_LOAD); m_filament_step->SetFilamentStep(FilamentStep::STEP_PURGE_OLD_FILAMENT, FilamentStepType::STEP_TYPE_LOAD); } - } - else { + } else { m_ams_control->SetFilamentStep(FilamentStep::STEP_PURGE_OLD_FILAMENT, FilamentStepType::STEP_TYPE_UNLOAD); m_filament_step->SetFilamentStep(FilamentStep::STEP_PURGE_OLD_FILAMENT, FilamentStepType::STEP_TYPE_UNLOAD); } - } - else if (ams_status_sub == 0x08) { - if (!obj->is_ams_unload()) { - m_ams_control->SetFilamentStep(FilamentStep::STEP_CHECK_POSITION, FilamentStepType::STEP_TYPE_LOAD); - m_filament_step->SetFilamentStep(FilamentStep::STEP_CHECK_POSITION, FilamentStepType::STEP_TYPE_LOAD); - } - else { - m_ams_control->SetFilamentStep(FilamentStep::STEP_CHECK_POSITION, FilamentStepType::STEP_TYPE_UNLOAD); - m_filament_step->SetFilamentStep(FilamentStep::STEP_CHECK_POSITION, FilamentStepType::STEP_TYPE_UNLOAD); - } - } - else if (ams_status_sub == 0x0B) { + } else if (ams_status_sub == 0x08) { if (!obj->is_ams_unload()) { m_ams_control->SetFilamentStep(FilamentStep::STEP_CHECK_POSITION, FilamentStepType::STEP_TYPE_LOAD); m_filament_step->SetFilamentStep(FilamentStep::STEP_CHECK_POSITION, FilamentStepType::STEP_TYPE_LOAD); @@ -3302,8 +3278,17 @@ void StatusPanel::update_ams(MachineObject *obj) m_ams_control->SetFilamentStep(FilamentStep::STEP_CHECK_POSITION, FilamentStepType::STEP_TYPE_UNLOAD); m_filament_step->SetFilamentStep(FilamentStep::STEP_CHECK_POSITION, FilamentStepType::STEP_TYPE_UNLOAD); } - } - else { + } else if (ams_status_sub == 0x09) { + //just wait + } else if (ams_status_sub == 0x0B) { + if (!obj->is_ams_unload()) { + m_ams_control->SetFilamentStep(FilamentStep::STEP_CHECK_POSITION, FilamentStepType::STEP_TYPE_LOAD); + m_filament_step->SetFilamentStep(FilamentStep::STEP_CHECK_POSITION, FilamentStepType::STEP_TYPE_LOAD); + } else { + m_ams_control->SetFilamentStep(FilamentStep::STEP_CHECK_POSITION, FilamentStepType::STEP_TYPE_UNLOAD); + m_filament_step->SetFilamentStep(FilamentStep::STEP_CHECK_POSITION, FilamentStepType::STEP_TYPE_UNLOAD); + } + } else { m_ams_control->SetFilamentStep(FilamentStep::STEP_IDLE, FilamentStepType::STEP_TYPE_UNLOAD); m_filament_step->SetFilamentStep(FilamentStep::STEP_IDLE, FilamentStepType::STEP_TYPE_UNLOAD); ams_loading_state = false; diff --git a/src/slic3r/GUI/Widgets/AMSControl.cpp b/src/slic3r/GUI/Widgets/AMSControl.cpp index 0e2bd8f9d..7480ad978 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.cpp +++ b/src/slic3r/GUI/Widgets/AMSControl.cpp @@ -4353,37 +4353,24 @@ void AMSControl::SetExtruder(bool on_off, bool is_vams, std::string ams_now, wxC } else { m_extruder->TurnOn(col); - if (item){ - /*if (ams_now != GetCurentShowAms()) { - m_extruder->OnAmsLoading(false, item->m_info.nozzle_id, col); - } - else { - m_extruder->OnAmsLoading(true, item->m_info.nozzle_id, col); - }*/ - } } - - /*if (is_vams && on_off) { - m_extruder->OnAmsLoading(false); - m_vams_extra_road->OnVamsLoading(true, col); - m_extruder->OnVamsLoading(true, col); - m_vams_road->OnVamsLoading(true, col); - } - else { - m_vams_extra_road->OnVamsLoading(false); - m_extruder->OnVamsLoading(false); - m_vams_road->OnVamsLoading(false); - }*/ } else if (m_ams_model == AMSModel::AMS_LITE || m_ext_model == AMSModel::AMS_LITE) { if (!on_off) { m_extruder->TurnOff(); m_extruder->OnAmsLoading(false); - /*m_vams_extra_road->OnVamsLoading(false); - m_vams_road->OnVamsLoading(false);*/ } else { - + if (item) { + m_extruder->TurnOn(col); + m_extruder->OnAmsLoading(true, item->m_info.nozzle_id, col); + } + } + } else if (m_ams_model == AMSModel::N3F_AMS || m_ams_model == AMSModel::N3S_AMS) { + if (!on_off) { + m_extruder->TurnOff(); + m_extruder->OnAmsLoading(false); + } else { if (item) { m_extruder->TurnOn(col); m_extruder->OnAmsLoading(true, item->m_info.nozzle_id, col); @@ -4473,7 +4460,8 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy { AmsItem* ams = nullptr; auto amsit = m_ams_item_list.find(ams_id); - bool notfound = false; + bool notfound = false; + bool in_same_page = false; if (amsit != m_ams_item_list.end()) { ams = amsit->second; @@ -4490,6 +4478,21 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy int can_index = atoi(canid.c_str()); std::string ams_id_left = GetCurentShowAms(AMSPanelPos::LEFT_PANEL); std::string ams_id_right = GetCurentShowAms(AMSPanelPos::RIGHT_PANEL); + + /*check if in same page*/ + for (auto it : pair_id) { + if ( (it.first == ams_id_left && it.second == ams_id) || (it.first == ams_id || it.second == ams_id_left)) { + in_same_page = true; + continue; + } + + if ((it.first == ams_id_right && it.second == ams_id) || (it.first == ams_id || it.second == ams_id_right)) { + in_same_page = true; + continue; + } + } + + auto model = AMSModel::AMS_LITE; bool left = !IsAmsInRightPanel(ams_id); @@ -4505,11 +4508,11 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy else if (ams->m_info.cans.size() == 1){ for (auto it : pair_id){ if (it.first == ams_id){ - length = left ? 145 : 45; + length = left ? 145 : 124; break; } else if (it.second == ams_id){ - length = left ? 45 : 145; + length = left ? 124 : 232; break; } } @@ -4558,7 +4561,7 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_NONE) { //cans->SetAmsStep(canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE); ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE); - if (ams_id_left == ams_id || ams_id_right == ams_id) { + if (ams_id_left == ams_id || ams_id_right == ams_id || in_same_page) { m_down_road->UpdatePassRoad(canid, pos, -1, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE); m_extruder->OnAmsLoading(false, ams->m_info.nozzle_id); } @@ -4566,7 +4569,7 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP1) { ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_1); - if (ams_id_left == ams_id || ams_id_right == ams_id) { + if (ams_id_left == ams_id || ams_id_right == ams_id || in_same_page) { m_down_road->UpdatePassRoad(canid, pos, length, AMSPassRoadSTEP::AMS_ROAD_STEP_1); m_extruder->OnAmsLoading(false, ams->m_info.nozzle_id); } @@ -4578,7 +4581,7 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP2) { ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_2); - if (ams_id_left == ams_id || ams_id_right == ams_id) { + if (ams_id_left == ams_id || ams_id_right == ams_id || in_same_page) { m_down_road->UpdatePassRoad(canid, pos, length, AMSPassRoadSTEP::AMS_ROAD_STEP_2); m_extruder->OnAmsLoading(true, ams->m_info.nozzle_id, ams->GetTagColr(canid)); } @@ -4589,7 +4592,7 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy } if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP3) { ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_3); - if (ams_id_left == ams_id || ams_id_right == ams_id) + if (ams_id_left == ams_id || ams_id_right == ams_id || in_same_page) { m_down_road->UpdatePassRoad(canid, pos, length, AMSPassRoadSTEP::AMS_ROAD_STEP_3); m_extruder->OnAmsLoading(true, ams->m_info.nozzle_id, ams->GetTagColr(canid)); diff --git a/src/slic3r/GUI/Widgets/AMSItem.cpp b/src/slic3r/GUI/Widgets/AMSItem.cpp index bff2e3d60..ca2e0c116 100644 --- a/src/slic3r/GUI/Widgets/AMSItem.cpp +++ b/src/slic3r/GUI/Widgets/AMSItem.cpp @@ -499,7 +499,7 @@ void AMSextruderImage::doRender(wxDC &dc) if (m_ams_loading) { dc.SetPen(*wxTRANSPARENT_PEN); dc.SetBrush(m_colour); - dc.DrawRectangle(FromDIP(3), FromDIP(10), size.x - FromDIP(6), size.y - FromDIP(20)); + dc.DrawRectangle(FromDIP(2), FromDIP(10), size.x - FromDIP(3), size.y - FromDIP(20)); } else{ dc.SetPen(*wxTRANSPARENT_PEN); @@ -957,7 +957,7 @@ void AMSLib::on_left_down(wxMouseEvent &evt) auto top = 0; auto bottom = 0; - if (m_ams_model == AMSModel::GENERIC_AMS || m_ams_model == AMSModel::N3F_AMS || m_ams_model == AMSModel::EXT_AMS) { + if (m_ams_model == AMSModel::GENERIC_AMS || m_ams_model == AMSModel::N3F_AMS || m_ams_model == AMSModel::N3S_AMS || m_ams_model == AMSModel::EXT_AMS) { top = (size.y - FromDIP(15) - m_bitmap_editable_light.GetBmpSize().y); bottom = size.y - FromDIP(15); }