Preparing for AMS drying support

This commit is contained in:
Noisyfox 2025-05-18 19:53:23 +08:00
parent 8a7fa6918d
commit 80b234a369
6 changed files with 48 additions and 32 deletions

View file

@ -0,0 +1,10 @@
<svg width="17" height="17" viewBox="0 0 17 17" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_16544_39500)">
<path d="M9.10925 1.25195V3.25195C9.10925 3.66758 8.77488 4.00195 8.35925 4.00195C7.94363 4.00195 7.60925 3.66758 7.60925 3.25195V1.25195C7.60925 0.836328 7.94363 0.501953 8.35925 0.501953C8.77488 0.501953 9.10925 0.836328 9.10925 1.25195ZM14.0155 3.90508L12.5999 5.3207C12.3061 5.61445 11.8311 5.61445 11.5405 5.3207C11.2499 5.02695 11.2468 4.55195 11.5405 4.26133L12.9561 2.8457C13.2499 2.55195 13.7249 2.55195 14.0155 2.8457C14.3061 3.13945 14.3093 3.61445 14.0155 3.90508ZM3.76238 2.8457L5.178 4.26133C5.47175 4.55508 5.47175 5.03008 5.178 5.3207C4.88425 5.61133 4.40925 5.61445 4.11863 5.3207L2.703 3.90508C2.40925 3.61133 2.40925 3.13633 2.703 2.8457C2.99675 2.55508 3.47175 2.55195 3.76238 2.8457ZM1.10925 7.75195H3.10925C3.52488 7.75195 3.85925 8.08633 3.85925 8.50195C3.85925 8.91758 3.52488 9.25195 3.10925 9.25195H1.10925C0.693628 9.25195 0.359253 8.91758 0.359253 8.50195C0.359253 8.08633 0.693628 7.75195 1.10925 7.75195ZM13.6093 7.75195H15.6093C16.0249 7.75195 16.3593 8.08633 16.3593 8.50195C16.3593 8.91758 16.0249 9.25195 15.6093 9.25195H13.6093C13.1936 9.25195 12.8593 8.91758 12.8593 8.50195C12.8593 8.08633 13.1936 7.75195 13.6093 7.75195ZM5.178 12.7457L3.76238 14.1582C3.46863 14.452 2.99363 14.452 2.703 14.1582C2.41238 13.8645 2.40925 13.3895 2.703 13.0988L4.11863 11.6832C4.41238 11.3895 4.88738 11.3895 5.178 11.6832C5.46863 11.977 5.47175 12.452 5.178 12.7426V12.7457ZM12.603 11.6863L14.0155 13.0988C14.3093 13.3926 14.3093 13.8676 14.0155 14.1582C13.7218 14.4488 13.2468 14.452 12.9561 14.1582L11.5405 12.7426C11.2468 12.4488 11.2468 11.9738 11.5405 11.6832C11.8343 11.3926 12.3093 11.3895 12.5999 11.6832L12.603 11.6863ZM9.10925 13.752V15.752C9.10925 16.1676 8.77488 16.502 8.35925 16.502C7.94363 16.502 7.60925 16.1676 7.60925 15.752V13.752C7.60925 13.3363 7.94363 13.002 8.35925 13.002C8.77488 13.002 9.10925 13.3363 9.10925 13.752ZM10.3593 8.50195C10.3593 7.97152 10.1485 7.46281 9.77347 7.08774C9.39839 6.71267 8.88969 6.50195 8.35925 6.50195C7.82882 6.50195 7.32011 6.71267 6.94504 7.08774C6.56997 7.46281 6.35925 7.97152 6.35925 8.50195C6.35925 9.03239 6.56997 9.54109 6.94504 9.91617C7.32011 10.2912 7.82882 10.502 8.35925 10.502C8.88969 10.502 9.39839 10.2912 9.77347 9.91617C10.1485 9.54109 10.3593 9.03239 10.3593 8.50195ZM4.85925 8.50195C4.85925 7.5737 5.228 6.68346 5.88438 6.02708C6.54076 5.3707 7.43099 5.00195 8.35925 5.00195C9.28751 5.00195 10.1777 5.3707 10.8341 6.02708C11.4905 6.68346 11.8593 7.5737 11.8593 8.50195C11.8593 9.43021 11.4905 10.3204 10.8341 10.9768C10.1777 11.6332 9.28751 12.002 8.35925 12.002C7.43099 12.002 6.54076 11.6332 5.88438 10.9768C5.228 10.3204 4.85925 9.43021 4.85925 8.50195Z" fill="#323A3D"/>
</g>
<defs>
<clipPath id="clip0_16544_39500">
<rect width="16" height="16" fill="white" transform="translate(0.359131 0.501953)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View file

@ -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);

View file

@ -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<AMSinfo> 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<AMSinfo> 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<AMSinfo> 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));

View file

@ -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;};

View file

@ -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;

View file

@ -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<ScalableBitmap> ams_humidity_no_num_imgs;
std::vector<ScalableBitmap> ams_humidity_no_num_dark_imgs;
ScalableBitmap ams_sun_img;
int m_humidity = { 0 };
bool m_show_humidity = { false };
bool m_vams_loading{false};