FIX: add cali for 3rd party printer in mac

Change-Id: I62be98bcd6bb70c34aa83fcefe819200231bd33c
(cherry picked from commit 543d751818d80892dd3371026987199e4768b8bc)
This commit is contained in:
zhimin.zeng 2023-06-26 18:12:15 +08:00 committed by Lane.Wei
parent 8f580895a7
commit 176c9053b5
2 changed files with 160 additions and 10 deletions

View File

@ -2693,7 +2693,7 @@ void MainFrame::init_menubar_as_editor()
m_topbar->GetCalibMenu()->AppendSubMenu(flowrate_menu, _L("Flow rate")); m_topbar->GetCalibMenu()->AppendSubMenu(flowrate_menu, _L("Flow rate"));
append_menu_item(m_topbar->GetCalibMenu(), wxID_ANY, _L("Pressure advance"), _L("Pressure advance"), append_menu_item(m_topbar->GetCalibMenu(), wxID_ANY, _L("Pressure advance"), _L("Pressure advance"),
[this](wxCommandEvent&) { [this](wxCommandEvent&) {
if (!m_pa_calib_dlg) //if (!m_pa_calib_dlg)
m_pa_calib_dlg = new PA_Calibration_Dlg((wxWindow*)this, wxID_ANY, m_plater); m_pa_calib_dlg = new PA_Calibration_Dlg((wxWindow*)this, wxID_ANY, m_plater);
m_pa_calib_dlg->ShowModal(); m_pa_calib_dlg->ShowModal();
}, "", nullptr, }, "", nullptr,
@ -2751,6 +2751,139 @@ void MainFrame::init_menubar_as_editor()
m_menubar->Append(viewMenu, wxString::Format("&%s", _L("View"))); m_menubar->Append(viewMenu, wxString::Format("&%s", _L("View")));
//if (publishMenu) //if (publishMenu)
// m_menubar->Append(publishMenu, wxString::Format("&%s", _L("3D Models"))); // 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) if (helpMenu)
m_menubar->Append(helpMenu, wxString::Format("&%s", _L("Help"))); m_menubar->Append(helpMenu, wxString::Format("&%s", _L("Help")));
SetMenuBar(m_menubar); SetMenuBar(m_menubar);

View File

@ -5,6 +5,9 @@
#include <wx/dcgraph.h> #include <wx/dcgraph.h>
#include "MainFrame.hpp" #include "MainFrame.hpp"
#include <string> #include <string>
#include "libslic3r/Config.hpp"
#include "libslic3r/PrintConfig.hpp"
namespace Slic3r { namespace GUI { namespace Slic3r { namespace GUI {
wxBoxSizer* create_item_checkbox(wxString title, wxWindow* parent, bool* value, CheckBox*& checkbox) 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); SetSizer(v_sizer);
wxBoxSizer* choice_sizer = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer* choice_sizer = new wxBoxSizer(wxHORIZONTAL);
wxString m_rbExtruderTypeChoices[] = { _L("DDE"), _L("Bowden") }; // BBS: get from printer preset
int m_rbExtruderTypeNChoices = sizeof(m_rbExtruderTypeChoices) / sizeof(wxString); //wxString m_rbExtruderTypeChoices[] = { _L("DDE"), _L("Bowden") };
m_rbExtruderType = new wxRadioBox(this, wxID_ANY, _L("Extruder type"), wxDefaultPosition, wxDefaultSize, m_rbExtruderTypeNChoices, m_rbExtruderTypeChoices, 2, wxRA_SPECIFY_COLS); //int m_rbExtruderTypeNChoices = sizeof(m_rbExtruderTypeChoices) / sizeof(wxString);
m_rbExtruderType->SetSelection(0); //m_rbExtruderType = new wxRadioBox(this, wxID_ANY, _L("Extruder type"), wxDefaultPosition, wxDefaultSize, m_rbExtruderTypeNChoices, m_rbExtruderTypeChoices, 2, wxRA_SPECIFY_COLS);
choice_sizer->Add(m_rbExtruderType, 0, wxALL, 5); //m_rbExtruderType->SetSelection(0);
choice_sizer->Add(FromDIP(5), 0, 0, wxEXPAND, 5); //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") }; wxString m_rbMethodChoices[] = { _L("PA Tower"), _L("PA Line") };
int m_rbMethodNChoices = sizeof(m_rbMethodChoices) / sizeof(wxString); 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); 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)); v_sizer->Add(m_btnStart, 0, wxALL | wxALIGN_RIGHT, FromDIP(5));
// Connect Events // 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); 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)); this->Connect(wxEVT_SHOW, wxShowEventHandler(PA_Calibration_Dlg::on_show));
//wxGetApp().UpdateDlgDarkUI(this); //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(); Layout();
Fit(); Fit();
} }
PA_Calibration_Dlg::~PA_Calibration_Dlg() { PA_Calibration_Dlg::~PA_Calibration_Dlg() {
// Disconnect Events // 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_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); m_btnStart->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(PA_Calibration_Dlg::on_start), NULL, this);
} }