From 176c9053b58f59068878120c9240eba4423f9a87 Mon Sep 17 00:00:00 2001 From: "zhimin.zeng" Date: Mon, 26 Jun 2023 18:12:15 +0800 Subject: [PATCH] FIX: add cali for 3rd party printer in mac Change-Id: I62be98bcd6bb70c34aa83fcefe819200231bd33c (cherry picked from commit 543d751818d80892dd3371026987199e4768b8bc) --- src/slic3r/GUI/MainFrame.cpp | 137 ++++++++++++++++++++++++++++++++++- src/slic3r/GUI/calib_dlg.cpp | 33 +++++++-- 2 files changed, 160 insertions(+), 10 deletions(-) diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index eb199a5d3..27f0b3513 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -2693,8 +2693,8 @@ void MainFrame::init_menubar_as_editor() m_topbar->GetCalibMenu()->AppendSubMenu(flowrate_menu, _L("Flow rate")); append_menu_item(m_topbar->GetCalibMenu(), wxID_ANY, _L("Pressure advance"), _L("Pressure advance"), [this](wxCommandEvent&) { - if (!m_pa_calib_dlg) - m_pa_calib_dlg = new PA_Calibration_Dlg((wxWindow*)this, wxID_ANY, m_plater); + //if (!m_pa_calib_dlg) + m_pa_calib_dlg = new PA_Calibration_Dlg((wxWindow*)this, wxID_ANY, m_plater); m_pa_calib_dlg->ShowModal(); }, "", nullptr, [this]() {return m_plater->is_view3D_shown();; }, this); @@ -2751,6 +2751,139 @@ void MainFrame::init_menubar_as_editor() m_menubar->Append(viewMenu, wxString::Format("&%s", _L("View"))); //if (publishMenu) // m_menubar->Append(publishMenu, wxString::Format("&%s", _L("3D Models"))); + + // SoftFever calibrations + auto calib_menu = new wxMenu(); + + // Temp + append_menu_item( + calib_menu, wxID_ANY, _L("Temperature"), _L("Temperature"), + [this](wxCommandEvent &) { + if (!m_temp_calib_dlg) + m_temp_calib_dlg = new Temp_Calibration_Dlg((wxWindow *) this, wxID_ANY, m_plater); + m_temp_calib_dlg->ShowModal(); + }, + "", nullptr, + [this]() { + return m_plater->is_view3D_shown(); + ; + }, + this); + + // Flowrate + auto flowrate_menu = new wxMenu(); + append_menu_item( + flowrate_menu, wxID_ANY, _L("Pass 1"), _L("Flow rate test - Pass 1"), + [this](wxCommandEvent &) { + if (m_plater) m_plater->calib_flowrate(1); + }, + "", nullptr, + [this]() { + return m_plater->is_view3D_shown(); + ; + }, + this); + append_menu_item( + flowrate_menu, wxID_ANY, _L("Pass 2"), _L("Flow rate test - Pass 2"), + [this](wxCommandEvent &) { + if (m_plater) m_plater->calib_flowrate(2); + }, + "", nullptr, + [this]() { + return m_plater->is_view3D_shown(); + ; + }, + this); + append_submenu(calib_menu, flowrate_menu, wxID_ANY, _L("Flow rate"), _L("Flow rate"), "", [this]() { + return m_plater->is_view3D_shown(); + ; + }); + + // PA + append_menu_item( + calib_menu, wxID_ANY, _L("Pressure advance"), _L("Pressure advance"), + [this](wxCommandEvent &) { + m_pa_calib_dlg = new PA_Calibration_Dlg((wxWindow *) this, wxID_ANY, m_plater); + m_pa_calib_dlg->ShowModal(); + }, + "", nullptr, + [this]() { + return m_plater->is_view3D_shown(); + ; + }, + this); + + // Retraction + append_menu_item( + calib_menu, wxID_ANY, _L("Retraction test"), _L("Retraction test"), + [this](wxCommandEvent &) { + if (!m_retraction_calib_dlg) m_retraction_calib_dlg = new Retraction_Test_Dlg((wxWindow *) this, wxID_ANY, m_plater); + m_retraction_calib_dlg->ShowModal(); + }, + "", nullptr, + [this]() { + return m_plater->is_view3D_shown(); + ; + }, + this); + + // Tolerance Test + append_menu_item( + calib_menu, wxID_ANY, _L("Orca Tolerance Test"), _L("Orca Tolerance Test"), + [this](wxCommandEvent &) { + m_plater->new_project(); + m_plater->add_model(false, Slic3r::resources_dir() + "/calib/tolerance_test/OrcaToleranceTest.stl"); + }, + "", nullptr, + [this]() { + return m_plater->is_view3D_shown(); + ; + }, + this); + + // Advance calibrations + auto advance_menu = new wxMenu(); + append_menu_item( + advance_menu, wxID_ANY, _L("Max flowrate"), _L("Max flowrate"), + [this](wxCommandEvent &) { + if (!m_vol_test_dlg) m_vol_test_dlg = new MaxVolumetricSpeed_Test_Dlg((wxWindow *) this, wxID_ANY, m_plater); + m_vol_test_dlg->ShowModal(); + }, + "", nullptr, + [this]() { + return m_plater->is_view3D_shown(); + ; + }, + this); + append_menu_item( + advance_menu, wxID_ANY, _L("VFA"), _L("VFA"), + [this](wxCommandEvent &) { + if (!m_vfa_test_dlg) m_vfa_test_dlg = new VFA_Test_Dlg((wxWindow *) this, wxID_ANY, m_plater); + m_vfa_test_dlg->ShowModal(); + }, + "", nullptr, + [this]() { + return m_plater->is_view3D_shown(); + ; + }, + this); + + append_submenu(calib_menu, advance_menu, wxID_ANY, _L("More..."), _L("More calibrations"), "", [this]() { + return m_plater->is_view3D_shown(); + ; + }); + // help + append_menu_item( + calib_menu, wxID_ANY, _L("Tutorial"), _L("Calibration help"), + [this](wxCommandEvent &) { wxLaunchDefaultBrowser("https://github.com/SoftFever/OrcaSlicer/wiki/Calibration", wxBROWSER_NEW_WINDOW); }, "", nullptr, + [this]() { + return m_plater->is_view3D_shown(); + ; + }, + this); + + m_menubar->Append(calib_menu, wxString::Format("&%s", _L("Calibration"))); + if (helpMenu) m_menubar->Append(helpMenu, wxString::Format("&%s", _L("Help"))); SetMenuBar(m_menubar); diff --git a/src/slic3r/GUI/calib_dlg.cpp b/src/slic3r/GUI/calib_dlg.cpp index 145d168f6..65d3b3258 100644 --- a/src/slic3r/GUI/calib_dlg.cpp +++ b/src/slic3r/GUI/calib_dlg.cpp @@ -5,6 +5,9 @@ #include #include "MainFrame.hpp" #include +#include "libslic3r/Config.hpp" +#include "libslic3r/PrintConfig.hpp" + namespace Slic3r { namespace GUI { wxBoxSizer* create_item_checkbox(wxString title, wxWindow* parent, bool* value, CheckBox*& checkbox) @@ -40,12 +43,14 @@ PA_Calibration_Dlg::PA_Calibration_Dlg(wxWindow* parent, wxWindowID id, Plater* SetSizer(v_sizer); wxBoxSizer* choice_sizer = new wxBoxSizer(wxHORIZONTAL); - wxString m_rbExtruderTypeChoices[] = { _L("DDE"), _L("Bowden") }; - int m_rbExtruderTypeNChoices = sizeof(m_rbExtruderTypeChoices) / sizeof(wxString); - m_rbExtruderType = new wxRadioBox(this, wxID_ANY, _L("Extruder type"), wxDefaultPosition, wxDefaultSize, m_rbExtruderTypeNChoices, m_rbExtruderTypeChoices, 2, wxRA_SPECIFY_COLS); - m_rbExtruderType->SetSelection(0); - choice_sizer->Add(m_rbExtruderType, 0, wxALL, 5); - choice_sizer->Add(FromDIP(5), 0, 0, wxEXPAND, 5); + // BBS: get from printer preset + //wxString m_rbExtruderTypeChoices[] = { _L("DDE"), _L("Bowden") }; + //int m_rbExtruderTypeNChoices = sizeof(m_rbExtruderTypeChoices) / sizeof(wxString); + //m_rbExtruderType = new wxRadioBox(this, wxID_ANY, _L("Extruder type"), wxDefaultPosition, wxDefaultSize, m_rbExtruderTypeNChoices, m_rbExtruderTypeChoices, 2, wxRA_SPECIFY_COLS); + //m_rbExtruderType->SetSelection(0); + //choice_sizer->Add(m_rbExtruderType, 0, wxALL, 5); + //choice_sizer->Add(FromDIP(5), 0, 0, wxEXPAND, 5); + wxString m_rbMethodChoices[] = { _L("PA Tower"), _L("PA Line") }; int m_rbMethodNChoices = sizeof(m_rbMethodChoices) / sizeof(wxString); m_rbMethod = new wxRadioBox(this, wxID_ANY, _L("Method"), wxDefaultPosition, wxDefaultSize, m_rbMethodNChoices, m_rbMethodChoices, 2, wxRA_SPECIFY_COLS); @@ -116,18 +121,30 @@ PA_Calibration_Dlg::PA_Calibration_Dlg(wxWindow* parent, wxWindowID id, Plater* v_sizer->Add(m_btnStart, 0, wxALL | wxALIGN_RIGHT, FromDIP(5)); // Connect Events - m_rbExtruderType->Connect(wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler(PA_Calibration_Dlg::on_extruder_type_changed), NULL, this); + //m_rbExtruderType->Connect(wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler(PA_Calibration_Dlg::on_extruder_type_changed), NULL, this); m_rbMethod->Connect(wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler(PA_Calibration_Dlg::on_method_changed), NULL, this); this->Connect(wxEVT_SHOW, wxShowEventHandler(PA_Calibration_Dlg::on_show)); //wxGetApp().UpdateDlgDarkUI(this); + Preset &printer_preset = wxGetApp().preset_bundle->printers.get_edited_preset(); + int extruder_type = printer_preset.config.opt_enum("extruder_type", 0); + if (extruder_type == ExtruderType::etBowden) { + m_tiEndPA->GetTextCtrl()->SetValue(wxString::FromDouble(1.0)); + m_tiStartPA->GetTextCtrl()->SetValue(wxString::FromDouble(0.0)); + m_tiPAStep->GetTextCtrl()->SetValue(wxString::FromDouble(0.02)); + } else { + m_tiEndPA->GetTextCtrl()->SetValue(wxString::FromDouble(0.1)); + m_tiStartPA->GetTextCtrl()->SetValue(wxString::FromDouble(0.0)); + m_tiPAStep->GetTextCtrl()->SetValue(wxString::FromDouble(0.002)); + } + Layout(); Fit(); } PA_Calibration_Dlg::~PA_Calibration_Dlg() { // Disconnect Events - m_rbExtruderType->Disconnect(wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler(PA_Calibration_Dlg::on_extruder_type_changed), NULL, this); + //m_rbExtruderType->Disconnect(wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler(PA_Calibration_Dlg::on_extruder_type_changed), NULL, this); m_rbMethod->Disconnect(wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler(PA_Calibration_Dlg::on_method_changed), NULL, this); m_btnStart->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(PA_Calibration_Dlg::on_start), NULL, this); }