diff --git a/resources/images/ams_drying.svg b/resources/images/ams_drying.svg new file mode 100644 index 0000000000..e6f9fb9f63 --- /dev/null +++ b/resources/images/ams_drying.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index bcb5860f07..7a9144a851 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -2598,7 +2598,7 @@ void StatusPanel::update_ams(MachineObject *obj) AMSModel ams_mode = AMSModel::GENERIC_AMS; if (obj) { - if (obj->get_printer_ams_type() == "f1") { ams_mode = AMSModel::EXTRA_AMS; } + if (obj->get_printer_ams_type() == "f1") { ams_mode = AMSModel::AMS_LITE; } else if(obj->get_printer_ams_type() == "generic") { ams_mode = AMSModel::GENERIC_AMS; } obj->check_ams_filament_valid(); } @@ -2618,7 +2618,7 @@ void StatusPanel::update_ams(MachineObject *obj) } - m_ams_control->SetAmsModel(AMSModel::NO_AMS, ams_mode); + m_ams_control->SetAmsModel(AMSModel::EXT_AMS, ams_mode); show_ams_group(false); m_ams_control->show_auto_refill(false); diff --git a/src/slic3r/GUI/Widgets/AMSControl.cpp b/src/slic3r/GUI/Widgets/AMSControl.cpp index c535249ce2..6fa1f41257 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.cpp +++ b/src/slic3r/GUI/Widgets/AMSControl.cpp @@ -641,7 +641,7 @@ void AMSControl::SetActionState(bool button_status[]) void AMSControl::EnterNoneAMSMode() { m_vams_lib->m_ams_model = m_ext_model; - if(m_is_none_ams_mode == AMSModel::NO_AMS) return; + if(m_is_none_ams_mode == AMSModel::EXT_AMS) return; m_panel_top->Hide(); m_simplebook_amsitems->Hide(); m_simplebook_amsitems->SetSelection(0); @@ -657,7 +657,7 @@ void AMSControl::EnterNoneAMSMode() m_amswin->Layout(); m_amswin->Fit(); Layout(); - m_is_none_ams_mode = AMSModel::NO_AMS; + m_is_none_ams_mode = AMSModel::EXT_AMS; } void AMSControl::EnterGenericAMSMode() @@ -692,13 +692,13 @@ void AMSControl::EnterGenericAMSMode() void AMSControl::EnterExtraAMSMode() { m_vams_lib->m_ams_model = m_ext_model; - if(m_is_none_ams_mode == AMSModel::EXTRA_AMS) return; + if(m_is_none_ams_mode == AMSModel::AMS_LITE) return; m_panel_top->Hide(); m_simplebook_amsitems->Show(); m_simplebook_amsitems->SetSelection(1); - m_vams_lib->m_ams_model = AMSModel::EXTRA_AMS; + m_vams_lib->m_ams_model = AMSModel::AMS_LITE; m_ams_tip->SetLabel(wxEmptyString); m_img_vams_tip->SetBitmap(create_scaled_bitmap("enable_ams_disable", this, 16)); m_img_vams_tip->Disable(); @@ -717,7 +717,7 @@ void AMSControl::EnterExtraAMSMode() m_amswin->Fit(); Layout(); Refresh(true); - m_is_none_ams_mode = AMSModel::EXTRA_AMS; + m_is_none_ams_mode = AMSModel::AMS_LITE; } @@ -836,7 +836,7 @@ void AMSControl::UpdateStepCtrl(bool is_extrusion) } - if (m_ams_model == AMSModel::EXTRA_AMS || m_ext_model == AMSModel::EXTRA_AMS) { + if (m_ams_model == AMSModel::AMS_LITE || m_ext_model == AMSModel::AMS_LITE) { m_filament_load_step->AppendItem(FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_HEAT_NOZZLE]); m_filament_load_step->AppendItem(FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_CHECK_POSITION]); m_filament_load_step->AppendItem(FILAMENT_CHANGE_STEP_STRING[FilamentStep::STEP_CUT_FILAMENT]); @@ -908,11 +908,11 @@ void AMSControl::show_noams_mode() show_vams(true); m_sizer_ams_tips->Show(true); - if (m_ams_model == AMSModel::NO_AMS) { + if (m_ams_model == AMSModel::EXT_AMS) { EnterNoneAMSMode(); } else if(m_ams_model == AMSModel::GENERIC_AMS){ EnterGenericAMSMode(); - } else if (m_ams_model == AMSModel::EXTRA_AMS) { + } else if (m_ams_model == AMSModel::AMS_LITE) { EnterExtraAMSMode(); } } @@ -998,7 +998,7 @@ void AMSControl::UpdateAms(std::vector info, bool is_reset) if (m_ams_model == AMSModel::GENERIC_AMS){ m_ams_cans_list = m_ams_generic_cans_list; } - else if (m_ams_model == AMSModel::EXTRA_AMS) { + else if (m_ams_model == AMSModel::AMS_LITE) { m_ams_cans_list = m_ams_extra_cans_list; } @@ -1034,7 +1034,7 @@ void AMSControl::UpdateAms(std::vector info, bool is_reset) if (ifo.ams_id == cans->amsIndex) { cans->amsCans->m_info = ifo; cans->amsCans->Update(ifo); - cans->amsCans->show_sn_value(m_ams_model == AMSModel::EXTRA_AMS?false:true); + cans->amsCans->show_sn_value(m_ams_model == AMSModel::AMS_LITE?false:true); } } } @@ -1045,7 +1045,7 @@ void AMSControl::UpdateAms(std::vector info, bool is_reset) } } - if (m_ams_model == AMSModel::NO_AMS && !m_vams_lib->is_selected()) { + if (m_ams_model == AMSModel::EXT_AMS && !m_vams_lib->is_selected()) { m_vams_lib->OnSelected(); } } @@ -1082,7 +1082,7 @@ void AMSControl::AddAms(AMSinfo info) void AMSControl::AddExtraAms(AMSinfo info) { AmsCansWindow* canswin = new AmsCansWindow(); - auto amscans = new AmsCans(m_simplebook_extra_cans, info, AMSModel::EXTRA_AMS); + auto amscans = new AmsCans(m_simplebook_extra_cans, info, AMSModel::AMS_LITE); canswin->amsIndex = info.ams_id; canswin->amsCans = amscans; @@ -1156,7 +1156,7 @@ void AMSControl::SwitchAms(std::string ams_id) if (m_ams_model == AMSModel::GENERIC_AMS) { m_simplebook_generic_cans->SetSelection(cans->amsCans->m_selection); } - else if (m_ams_model == AMSModel::EXTRA_AMS) { + else if (m_ams_model == AMSModel::AMS_LITE) { m_simplebook_extra_cans->SetSelection(cans->amsCans->m_selection); } } @@ -1321,7 +1321,7 @@ void AMSControl::SetExtruder(bool on_off, bool is_vams, std::string ams_now, wxC m_vams_road->OnVamsLoading(false); } } - else if (m_ams_model == AMSModel::EXTRA_AMS || m_ext_model == AMSModel::EXTRA_AMS) { + else if (m_ams_model == AMSModel::AMS_LITE || m_ext_model == AMSModel::AMS_LITE) { if (!is_vams && !on_off) { m_extruder->TurnOff(); m_extruder->OnVamsLoading(false); @@ -1400,7 +1400,7 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy m_extruder->OnAmsLoading(true, cans->amsCans->GetTagColr(canid)); } } - else if (m_ams_model == AMSModel::EXTRA_AMS) { + else if (m_ams_model == AMSModel::AMS_LITE) { cans->amsCans->SetAmsStepExtra(canid, type, step); if (step != AMSPassRoadSTEP::AMS_ROAD_STEP_NONE) { m_extruder->OnAmsLoading(true, cans->amsCans->GetTagColr(canid)); diff --git a/src/slic3r/GUI/Widgets/AMSControl.hpp b/src/slic3r/GUI/Widgets/AMSControl.hpp index e5c5e08942..2063e0eb30 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.hpp +++ b/src/slic3r/GUI/Widgets/AMSControl.hpp @@ -104,9 +104,9 @@ public: std::string GetCurrentCan(std::string amsid); wxColour GetCanColour(std::string amsid, std::string canid); - AMSModel m_ams_model{AMSModel::NO_AMS}; - AMSModel m_ext_model{AMSModel::NO_AMS}; - AMSModel m_is_none_ams_mode{AMSModel::NO_AMS}; + AMSModel m_ams_model{AMSModel::EXT_AMS}; + AMSModel m_ext_model{AMSModel::EXT_AMS}; + AMSModel m_is_none_ams_mode{AMSModel::EXT_AMS}; void SetAmsModel(AMSModel mode, AMSModel ext_mode) {m_ams_model = mode; m_ext_model = ext_mode;}; diff --git a/src/slic3r/GUI/Widgets/AMSItem.cpp b/src/slic3r/GUI/Widgets/AMSItem.cpp index 617816932a..5b80a8439b 100644 --- a/src/slic3r/GUI/Widgets/AMSItem.cpp +++ b/src/slic3r/GUI/Widgets/AMSItem.cpp @@ -49,6 +49,7 @@ bool AMSinfo::parse_ams_info(MachineObject *obj, Ams *ams, bool remain_flag, boo } this->humidity_raw = ams->humidity_raw; + this->ams_type = AMSModel(ams->type); cans.clear(); for (int i = 0; i < ams->trayList.size(); i++) { @@ -707,7 +708,7 @@ void AMSLib::on_left_down(wxMouseEvent &evt) top = (size.y - FromDIP(15) - m_bitmap_editable_light.GetBmpSize().y); bottom = size.y - FromDIP(15); } - else if (m_ams_model == AMSModel::EXTRA_AMS) { + else if (m_ams_model == AMSModel::AMS_LITE) { top = (size.y - FromDIP(20) - m_bitmap_editable_light.GetBmpSize().y); bottom = size.y - FromDIP(20); } @@ -759,7 +760,7 @@ void AMSLib::render(wxDC &dc) if (m_ams_model == AMSModel::GENERIC_AMS) { render_generic_text(dc); } - else if (m_ams_model == AMSModel::EXTRA_AMS) { + else if (m_ams_model == AMSModel::AMS_LITE) { render_extra_text(dc); } } @@ -977,7 +978,7 @@ void AMSLib::doRender(wxDC &dc) if (m_ams_model == AMSModel::GENERIC_AMS) { render_generic_lib(dc); } - else if (m_ams_model == AMSModel::EXTRA_AMS) { + else if (m_ams_model == AMSModel::AMS_LITE) { render_extra_lib(dc); } } @@ -1408,7 +1409,7 @@ AMSRoad::AMSRoad(wxWindow *parent, wxWindowID id, Caninfo info, int canindex, in for (int i = 1; i <= 5; i++) { ams_humidity_dark_imgs.push_back(ScalableBitmap(this, "hum_level" + std::to_string(i) + "_dark", 32));} for (int i = 1; i <= 5; i++) { ams_humidity_no_num_imgs.push_back(ScalableBitmap(this, "hum_level" + std::to_string(i) + "_no_num_light", 16)); } for (int i = 1; i <= 5; i++) { ams_humidity_no_num_dark_imgs.push_back(ScalableBitmap(this, "hum_level" + std::to_string(i) + "_no_num_dark", 16)); } - + ams_sun_img = ScalableBitmap(this, "ams_drying", 16); if (m_rode_mode != AMSRoadMode::AMS_ROAD_MODE_VIRTUAL_TRAY) { create(parent, id, pos, size); } @@ -1701,6 +1702,7 @@ void AMSRoad::msw_rescale() for (auto& img : ams_humidity_dark_imgs) { img.msw_rescale(); } for (auto &img : ams_humidity_no_num_imgs) { img.msw_rescale(); } for (auto &img : ams_humidity_no_num_dark_imgs) { img.msw_rescale(); } + ams_sun_img.msw_rescale(); } @@ -1736,7 +1738,7 @@ void AmsCans::create(wxWindow *parent) } SetSizer(sizer_can); } - else if(m_ams_model == AMSModel::EXTRA_AMS) { + else if(m_ams_model == AMSModel::AMS_LITE) { sizer_can = new wxBoxSizer(wxVERTICAL); sizer_can_middle = new wxBoxSizer(wxHORIZONTAL); sizer_can_left = new wxBoxSizer(wxVERTICAL); @@ -1823,7 +1825,7 @@ void AmsCans::AddCan(Caninfo caninfo, int canindex, int maxcan, wxBoxSizer* size m_sizer_ams->Add(m_panel_lib, 1, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, FromDIP(3)); m_sizer_ams->Add(m_panel_road, 0, wxALL, 0); } - else if (m_ams_model == AMSModel::EXTRA_AMS) + else if (m_ams_model == AMSModel::AMS_LITE) { m_sizer_ams = new wxBoxSizer(wxHORIZONTAL); m_panel_road->Hide(); @@ -1846,7 +1848,7 @@ void AmsCans::AddCan(Caninfo caninfo, int canindex, int maxcan, wxBoxSizer* size if (m_ams_model == AMSModel::GENERIC_AMS) { sizer->Add(amscan, 0, wxALL, 0); } - else if (m_ams_model == AMSModel::EXTRA_AMS) + else if (m_ams_model == AMSModel::AMS_LITE) { if (canindex > 1) { sizer->Prepend(amscan, 0, wxALL, 0); @@ -2100,7 +2102,7 @@ void AmsCans::doRender(wxDC& dc) dc.DrawBitmap(m_bitmap_extra_framework.bmp(), (size.x - m_bitmap_extra_framework.GetBmpSize().x) / 2, (size.y - m_bitmap_extra_framework.GetBmpSize().y) / 2); //road for extra - if (m_ams_model == AMSModel::EXTRA_AMS) { + if (m_ams_model == AMSModel::AMS_LITE) { auto end_top = size.x / 2 - FromDIP(99); auto passroad_width = 6; diff --git a/src/slic3r/GUI/Widgets/AMSItem.hpp b/src/slic3r/GUI/Widgets/AMSItem.hpp index a089da690d..149b6d7f61 100644 --- a/src/slic3r/GUI/Widgets/AMSItem.hpp +++ b/src/slic3r/GUI/Widgets/AMSItem.hpp @@ -36,11 +36,12 @@ namespace Slic3r { namespace GUI { - enum AMSModel { - NO_AMS = 0, + EXT_AMS = 0, //ext GENERIC_AMS = 1, - EXTRA_AMS = 2 + AMS_LITE = 2, //ams-lite + N3F_AMS = 3, + N3S_AMS = 4 //n3s single_ams }; enum ActionButton { @@ -160,6 +161,7 @@ public: int curreent_filamentstep; int ams_humidity = 0; int humidity_raw = -1; + AMSModel ams_type = AMSModel::GENERIC_AMS; bool parse_ams_info(MachineObject* obj, Ams *ams, bool remain_flag = false, bool humidity_flag = false); }; @@ -396,7 +398,9 @@ public: std::vector ams_humidity_no_num_imgs; std::vector ams_humidity_no_num_dark_imgs; - + + ScalableBitmap ams_sun_img; + int m_humidity = { 0 }; bool m_show_humidity = { false }; bool m_vams_loading{false};