diff --git a/src/slic3r/GUI/AMSMaterialsSetting.cpp b/src/slic3r/GUI/AMSMaterialsSetting.cpp index aeb75e212..8899de08a 100644 --- a/src/slic3r/GUI/AMSMaterialsSetting.cpp +++ b/src/slic3r/GUI/AMSMaterialsSetting.cpp @@ -268,9 +268,9 @@ void AMSMaterialsSetting::create_panel_kn(wxWindow* parent) { auto sizer = new wxBoxSizer(wxVERTICAL); // title - auto ratio_text = new wxStaticText(parent, wxID_ANY, _L("Factors of dynamic flow cali")); - ratio_text->SetForegroundColour(wxColour(50, 58, 61)); - ratio_text->SetFont(Label::Head_14); + m_ratio_text = new wxStaticText(parent, wxID_ANY, _L("Factors of dynamic flow cali")); + m_ratio_text->SetForegroundColour(wxColour(50, 58, 61)); + m_ratio_text->SetFont(Label::Head_14); auto kn_val_sizer = new wxFlexGridSizer(0, 2, 0, 0); kn_val_sizer->SetFlexibleDirection(wxBOTH); @@ -304,7 +304,7 @@ void AMSMaterialsSetting::create_panel_kn(wxWindow* parent) m_input_n_val->Hide(); sizer->Add(0, 0, 0, wxTOP, FromDIP(10)); - sizer->Add(ratio_text, 0, wxLEFT | wxRIGHT | wxEXPAND, FromDIP(20)); + sizer->Add(m_ratio_text, 0, wxLEFT | wxRIGHT | wxEXPAND, FromDIP(20)); sizer->Add(0, 0, 0, wxTOP, FromDIP(10)); sizer->Add(kn_val_sizer, 0, wxLEFT | wxRIGHT | wxEXPAND, FromDIP(20)); sizer->Add(0, 0, 0, wxTOP, FromDIP(10)); @@ -715,6 +715,19 @@ bool AMSMaterialsSetting::Show(bool show) m_input_nozzle_max->GetTextCtrl()->SetSize(wxSize(-1, FromDIP(20))); m_input_nozzle_min->GetTextCtrl()->SetSize(wxSize(-1, FromDIP(20))); //m_clr_picker->set_color(m_clr_picker->GetParent()->GetBackgroundColour()); + + if (obj && obj->is_function_supported(PrinterFunction::FUNC_EXTRUSION_CALI)) { + m_ratio_text->Show(); + m_k_param->Show(); + m_input_k_val->Show(); + } + else { + m_ratio_text->Hide(); + m_k_param->Hide(); + m_input_k_val->Hide(); + } + Layout(); + Fit(); } return DPIDialog::Show(show); } diff --git a/src/slic3r/GUI/AMSMaterialsSetting.hpp b/src/slic3r/GUI/AMSMaterialsSetting.hpp index 7889c32f2..972bb2684 100644 --- a/src/slic3r/GUI/AMSMaterialsSetting.hpp +++ b/src/slic3r/GUI/AMSMaterialsSetting.hpp @@ -146,6 +146,7 @@ protected: wxColourData * m_clrData; wxPanel * m_panel_kn; + wxStaticText* m_ratio_text; wxStaticText* m_k_param; TextInput* m_input_k_val; wxStaticText* m_n_param; diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index e5270d64d..0154924e3 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -1907,6 +1907,8 @@ void StatusPanel::update_ams(MachineObject *obj) } if (m_filament_setting_dlg) { m_filament_setting_dlg->obj = obj; } + bool is_none_ams_mode = false; + if (!obj || !obj->is_connected() || obj->amsList.empty() @@ -1924,20 +1926,24 @@ void StatusPanel::update_ams(MachineObject *obj) bool is_support_virtual_tray = obj->is_function_supported(PrinterFunction::FUNC_VIRTUAL_TYAY); if (is_support_virtual_tray) { - m_ams_control->update_vams_kn_value(obj->vt_tray); + m_ams_control->update_vams_kn_value(obj->vt_tray, obj); } show_ams_group(false, obj->is_function_supported(PrinterFunction::FUNC_VIRTUAL_TYAY), obj->is_function_supported(PrinterFunction::FUNC_EXTRUSION_CALI), obj->is_support_filament_edit_virtual_tray); - return; + is_none_ams_mode = true; + //return; } bool is_support_extrusion_cali = obj->is_function_supported(PrinterFunction::FUNC_EXTRUSION_CALI); bool is_support_virtual_tray = obj->is_function_supported(PrinterFunction::FUNC_VIRTUAL_TYAY); if (is_support_virtual_tray) { - m_ams_control->update_vams_kn_value(obj->vt_tray); + m_ams_control->update_vams_kn_value(obj->vt_tray, obj); } - show_ams_group(true, obj->is_function_supported(PrinterFunction::FUNC_VIRTUAL_TYAY), obj->is_function_supported(PrinterFunction::FUNC_EXTRUSION_CALI), obj->is_support_filament_edit_virtual_tray); + if (!is_none_ams_mode) { + show_ams_group(true, obj->is_function_supported(PrinterFunction::FUNC_VIRTUAL_TYAY), obj->is_function_supported(PrinterFunction::FUNC_EXTRUSION_CALI), obj->is_support_filament_edit_virtual_tray); + } + if (m_filament_setting_dlg) m_filament_setting_dlg->update(); std::vector ams_info; @@ -2616,6 +2622,9 @@ void StatusPanel::on_ams_load_curr() int old_temp = -1; int new_temp = -1; AmsTray* curr_tray = obj->get_curr_tray(); + + if (!curr_tray) return; + try { if (!curr_tray->nozzle_temp_max.empty() && !curr_tray->nozzle_temp_min.empty()) old_temp = (atoi(curr_tray->nozzle_temp_min.c_str()) + atoi(curr_tray->nozzle_temp_max.c_str())) / 2; diff --git a/src/slic3r/GUI/Widgets/AMSControl.cpp b/src/slic3r/GUI/Widgets/AMSControl.cpp index c7d93637d..8656ea593 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.cpp +++ b/src/slic3r/GUI/Widgets/AMSControl.cpp @@ -465,7 +465,10 @@ void AMSextruder::doRender(wxDC& dc) wxSize size = GetSize(); dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxSOLID)); dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); - dc.DrawLine(size.x / 2, -1, size.x / 2, size.y * 0.6 - 1); + + if (!m_none_ams_mode) { + dc.DrawLine(size.x / 2, -1, size.x / 2, size.y * 0.6 - 1); + } if (m_has_vams) { dc.DrawRoundedRectangle(-size.x / 2, FromDIP(8), size.x, size.y, 4); @@ -475,7 +478,7 @@ void AMSextruder::doRender(wxDC& dc) dc.DrawRoundedRectangle(-size.x / 2, FromDIP(8), size.x, size.y, 4); } - if (m_ams_loading) { + if (m_ams_loading && !m_none_ams_mode) { dc.SetPen(wxPen(m_current_colur, 6, wxSOLID)); dc.DrawLine(size.x / 2, -1, size.x / 2, size.y * 0.6 - 1); } @@ -708,6 +711,7 @@ void AMSLib::render(wxDC &dc) if (m_info.material_state == AMSCanType::AMS_CAN_TYPE_THIRDBRAND || m_info.material_state == AMSCanType::AMS_CAN_TYPE_BRAND || m_info.material_state == AMSCanType::AMS_CAN_TYPE_VIRTUAL) { + if (m_info.material_name.empty() && m_info.material_state != AMSCanType::AMS_CAN_TYPE_VIRTUAL) { auto tsize = dc.GetMultiLineTextExtent("?"); auto pot = wxPoint(0, 0); @@ -748,7 +752,7 @@ void AMSLib::render(wxDC &dc) } else { auto pot = wxPoint(0, 0); - if (m_show_kn) { + if (m_obj && m_obj->is_function_supported(PrinterFunction::FUNC_EXTRUSION_CALI)) { pot = wxPoint((libsize.x - tsize.x) / 2, (libsize.y - tsize.y) / 2 - FromDIP(9)); } else { pot = wxPoint((libsize.x - tsize.x) / 2, (libsize.y - tsize.y) / 2 + FromDIP(3)); @@ -758,7 +762,7 @@ void AMSLib::render(wxDC &dc) } //draw k&n - if (m_obj && m_obj->is_function_supported(PrinterFunction::FUNC_VIRTUAL_TYAY)) { + if (m_obj && m_obj->is_function_supported(PrinterFunction::FUNC_EXTRUSION_CALI)) { if (m_show_kn){ wxString str_k = wxString::Format("K %1.3f", m_info.k); wxString str_n = wxString::Format("N %1.3f", m_info.n); @@ -768,16 +772,6 @@ void AMSLib::render(wxDC &dc) dc.DrawText(str_k, pot_k); } } - else if(m_info.material_state == AMSCanType::AMS_CAN_TYPE_VIRTUAL){ - if (m_show_kn) { - wxString str_k = wxString::Format("K %1.3f", m_info.k); - wxString str_n = wxString::Format("N %1.3f", m_info.n); - dc.SetFont(::Label::Body_11); - auto tsize = dc.GetMultiLineTextExtent(str_k); - auto pot_k = wxPoint((libsize.x - tsize.x) / 2, (libsize.y - tsize.y) / 2 - FromDIP(9) + tsize.y); - dc.DrawText(str_k, pot_k); - } - } } if (m_info.material_state == AMSCanType::AMS_CAN_TYPE_EMPTY) { @@ -2331,7 +2325,7 @@ void AMSControl::EnterNoneAMSMode(bool support_vt_load) m_panel_top->Hide(); m_simplebook_amsitems->SetSelection(1); m_simplebook_ams->SetSelection(1); - m_extruder->Hide(); + m_extruder->no_ams_mode(true); m_button_ams_setting->Hide(); m_button_guide->Hide(); m_button_retry->Hide(); @@ -2356,7 +2350,7 @@ void AMSControl::ExitNoneAMSMode() m_panel_top->Show(); m_simplebook_ams->SetSelection(0); m_simplebook_amsitems->SetSelection(0); - m_extruder->Show(); + m_extruder->no_ams_mode(false); m_button_ams_setting->Show(); m_button_guide->Show(); m_button_retry->Show(); @@ -2568,8 +2562,9 @@ void AMSControl::show_vams_kn_value(bool show) m_vams_lib->show_kn_value(show); } -void AMSControl::update_vams_kn_value(AmsTray tray) +void AMSControl::update_vams_kn_value(AmsTray tray, MachineObject* obj) { + m_vams_lib->m_obj = obj; m_vams_info.k = tray.k; m_vams_info.n = tray.n; m_vams_lib->m_info.k = tray.k; diff --git a/src/slic3r/GUI/Widgets/AMSControl.hpp b/src/slic3r/GUI/Widgets/AMSControl.hpp index 0f3ea6159..779c6b28a 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.hpp +++ b/src/slic3r/GUI/Widgets/AMSControl.hpp @@ -238,7 +238,9 @@ public: void doRender(wxDC& dc); void msw_rescale(); void has_ams(bool hams) {m_has_vams = hams; Refresh();}; + void no_ams_mode(bool mode) {m_none_ams_mode = mode; Refresh();}; + bool m_none_ams_mode{false}; bool m_has_vams{false}; bool m_vams_loading{false}; bool m_ams_loading{false}; @@ -292,9 +294,11 @@ public: void OnSelected(); void UnSelected(); bool is_selected() {return m_selected;}; - virtual bool Enable(bool enable = true); void post_event(wxCommandEvent &&event); void show_kn_value(bool show) { m_show_kn = show; }; + void support_cali(bool sup) { m_support_cali = sup; Refresh(); }; + virtual bool Enable(bool enable = true); + protected: wxStaticBitmap *m_edit_bitmp = {nullptr}; @@ -308,6 +312,7 @@ protected: bool m_selected = {false}; bool m_hover = {false}; bool m_show_kn = {false}; + bool m_support_cali = {false}; double m_radius = {4}; wxColour m_border_color; @@ -615,7 +620,7 @@ public: void show_noams_mode(bool show, bool support_virtual_tray, bool support_extrustion_cali, bool support_vt_load = false); void show_vams(bool show); void show_vams_kn_value(bool show); - void update_vams_kn_value(AmsTray tray); + void update_vams_kn_value(AmsTray tray, MachineObject* obj); void reset_vams(); void post_event(wxEvent&& event);