mirror of
https://github.com/QIDITECH/QIDISlicer.git
synced 2026-01-30 23:48:44 +03:00
Optimized FlowRate
This commit is contained in:
BIN
resources/calib/PressureAdvance/pa_pattern.stl
Normal file
BIN
resources/calib/PressureAdvance/pa_pattern.stl
Normal file
Binary file not shown.
36075
resources/calib/VolumetricSpeed/volumetric_speed.step
Normal file
36075
resources/calib/VolumetricSpeed/volumetric_speed.step
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1567,55 +1567,34 @@ void MainFrame::init_menubar_as_editor()
|
|||||||
|
|
||||||
// Help menu
|
// Help menu
|
||||||
auto helpMenu = generate_help_menu();
|
auto helpMenu = generate_help_menu();
|
||||||
|
|
||||||
//B34
|
//B34
|
||||||
//auto calibrationMenu = generate_calibration_menu();
|
|
||||||
auto calibrationMenu = new wxMenu();
|
auto calibrationMenu = new wxMenu();
|
||||||
auto flowrate_menu = new wxMenu();
|
if (m_plater)
|
||||||
append_menu_item(flowrate_menu, wxID_ANY, _L("Coarse"), _L("Flow rate test - Pass 1"), [this](wxCommandEvent &) {
|
{
|
||||||
if (m_plater)
|
auto flowrateMenu = new wxMenu();
|
||||||
m_plater->calib_flowrate(1);
|
append_menu_item(flowrateMenu, wxID_ANY, _L("Coarse"), _L("Flow Rate Coarse"),
|
||||||
m_plater->get_notification_manager()->push_notification(NotificationType::CustomNotification,NotificationManager::NotificationLevel::PrintInfoNotificationLevel,
|
[this](wxCommandEvent &) { m_plater->calib_flowrate_coarse(); },
|
||||||
_u8L("NOTICE: The configuration parameters may be changed "
|
"", nullptr, [this]() { return m_plater->is_view3D_shown(); }, this);
|
||||||
"after using the calibration feature. "));
|
|
||||||
},
|
append_menu_item(flowrateMenu, wxID_ANY, _L("Fine"), _L("Flow Rate Fine"),
|
||||||
"", nullptr,
|
[this](wxCommandEvent &) {
|
||||||
[this]() {
|
if (!m_frf_calib_dlg)
|
||||||
return m_plater->is_view3D_shown();
|
m_frf_calib_dlg = new FRF_Calibration_Dlg((wxWindow *) this, wxID_ANY, m_plater);
|
||||||
;
|
m_frf_calib_dlg->ShowModal();
|
||||||
},
|
},
|
||||||
this);
|
"", nullptr, [this]() { return m_plater->is_view3D_shown(); }, this);
|
||||||
append_menu_item(flowrate_menu, wxID_ANY, _L("Fine"), _L("Flow rate test - Pass 2"), [this](wxCommandEvent &) {
|
|
||||||
if (!m_frf_calib_dlg)
|
calibrationMenu->AppendSubMenu(flowrateMenu, _L("Flow rate"));
|
||||||
m_frf_calib_dlg = new FRF_Calibration_Dlg((wxWindow *) this, wxID_ANY, m_plater);
|
|
||||||
m_frf_calib_dlg->ShowModal();
|
append_menu_item(calibrationMenu, wxID_ANY, _L("Pressure advance"), _L("Pressure advance"),
|
||||||
m_plater->get_notification_manager()->push_notification(NotificationType::CustomNotification,NotificationManager::NotificationLevel::PrintInfoNotificationLevel,
|
[this](wxCommandEvent &) {
|
||||||
_u8L("NOTICE: The configuration parameters may be changed "
|
if (!m_pa_calib_dlg)
|
||||||
"after using the calibration feature. "));
|
m_pa_calib_dlg = new PA_Calibration_Dlg((wxWindow *) this, wxID_ANY, m_plater);
|
||||||
},
|
m_pa_calib_dlg->ShowModal();
|
||||||
"", nullptr,
|
},
|
||||||
[this]() {
|
"", nullptr, [this]() { return m_plater->is_view3D_shown(); }, this);
|
||||||
return m_plater->is_view3D_shown();
|
}
|
||||||
;
|
|
||||||
},
|
|
||||||
this);
|
|
||||||
calibrationMenu->AppendSubMenu(flowrate_menu, _L("Flow rate"));
|
|
||||||
append_menu_item(
|
|
||||||
calibrationMenu, 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);
|
|
||||||
m_pa_calib_dlg->ShowModal();
|
|
||||||
m_plater->get_notification_manager()->push_notification(NotificationType::CustomNotification,NotificationManager::NotificationLevel::PrintInfoNotificationLevel,
|
|
||||||
_u8L("NOTICE: The configuration parameters may be changed "
|
|
||||||
"after using the calibration feature. "));
|
|
||||||
},
|
|
||||||
"", nullptr,
|
|
||||||
[this]() {
|
|
||||||
return m_plater->is_view3D_shown();
|
|
||||||
;
|
|
||||||
},
|
|
||||||
this);
|
|
||||||
|
|
||||||
// menubar
|
// menubar
|
||||||
// assign menubar to frame after appending items, otherwise special items
|
// assign menubar to frame after appending items, otherwise special items
|
||||||
|
|||||||
@@ -5402,62 +5402,37 @@ void Plater::add_model_calibration(bool imperial_units /* = false*/, std::string
|
|||||||
}
|
}
|
||||||
|
|
||||||
//B34
|
//B34
|
||||||
void Plater::calib_flowrate(int pass)
|
void Plater::calib_flowrate_coarse()
|
||||||
{
|
{
|
||||||
if (pass != 1 /*&& pass != 2*/)
|
|
||||||
return;
|
|
||||||
const auto calib_name = wxString::Format(L"Flowrate Test - Pass%d", pass);
|
|
||||||
new_project();
|
|
||||||
Tab *tab_print = wxGetApp().get_tab(Preset::TYPE_PRINT);
|
Tab *tab_print = wxGetApp().get_tab(Preset::TYPE_PRINT);
|
||||||
Tab *tab_filament = wxGetApp().get_tab(Preset::TYPE_FILAMENT);
|
Tab *tab_filament = wxGetApp().get_tab(Preset::TYPE_FILAMENT);
|
||||||
Tab *tab_printer = wxGetApp().get_tab(Preset::TYPE_PRINTER);
|
Tab *tab_printer = wxGetApp().get_tab(Preset::TYPE_PRINTER);
|
||||||
DynamicPrintConfig new_config;
|
DynamicPrintConfig new_config;
|
||||||
wxGetApp().mainframe->select_tab(size_t(0));
|
wxGetApp().mainframe->select_tab(size_t(0));
|
||||||
|
|
||||||
if (pass == 1) {
|
new_config.set_key_value("complete_objects", new ConfigOptionBool(true));
|
||||||
new_config.set_key_value("complete_objects", new ConfigOptionBool(true));
|
new_config.set_key_value("extruder_clearance_radius", new ConfigOptionFloat(1));
|
||||||
new_config.set_key_value("extruder_clearance_radius", new ConfigOptionFloat(1));
|
new_config.set_key_value("extrusion_multiplier", new ConfigOptionFloats{1.});
|
||||||
new_config.set_key_value("extrusion_multiplier", new ConfigOptionFloats{1.});
|
new_config.set_key_value("between_objects_gcode",
|
||||||
new_config.set_key_value("between_objects_gcode",
|
new ConfigOptionString("{if current_object_idx==1}M221 S105{endif}"
|
||||||
new ConfigOptionString("{if current_object_idx==1}M221 S105{endif}"
|
"{if current_object_idx==2}M221 S110{endif}"
|
||||||
"{if current_object_idx==2}M221 S110{endif}"
|
"{if current_object_idx==3}M221 S115{endif}"
|
||||||
"{if current_object_idx==3}M221 S115{endif}"
|
"{if current_object_idx==4}M221 S120{endif}"
|
||||||
"{if current_object_idx==4}M221 S120{endif}"
|
"{if current_object_idx==5}M221 S95{endif}"
|
||||||
"{if current_object_idx==5}M221 S95{endif}"
|
"{if current_object_idx==6}M221 S90{endif}"
|
||||||
"{if current_object_idx==6}M221 S90{endif}"
|
"{if current_object_idx==7}M221 S85{endif}"
|
||||||
"{if current_object_idx==7}M221 S85{endif}"
|
"{if current_object_idx==8}M221 S80{endif}"));
|
||||||
"{if current_object_idx==8}M221 S80{endif}"));
|
tab_print->load_config(new_config);
|
||||||
tab_print->load_config(new_config);
|
tab_filament->load_config(new_config);
|
||||||
tab_filament->load_config(new_config);
|
tab_printer->load_config(new_config);
|
||||||
tab_printer->load_config(new_config);
|
add_model_calibration(false, (boost::filesystem::path(Slic3r::resources_dir()) / "calib" / "FlowRate" / "flowrate_coarse.3mf").string());
|
||||||
add_model_calibration(false,
|
|
||||||
(boost::filesystem::path(Slic3r::resources_dir()) / "calib" / "FlowRate" / "flowrate_coarse.3mf").string());
|
std::string message = _u8L("NOTICE: The calibration function modifies some parameters. After calibration, record the best value and restore the other parameters.");
|
||||||
} /*else {
|
get_notification_manager()->push_notification(NotificationType::CustomNotification, NotificationManager::NotificationLevel::PrintInfoNotificationLevel, message);
|
||||||
new_config.set_key_value("complete_objects", new ConfigOptionBool(true));
|
|
||||||
new_config.set_key_value("extruder_clearance_radius", new ConfigOptionFloat(1));
|
|
||||||
new_config.set_key_value("between_objects_gcode",
|
|
||||||
new ConfigOptionString("{if current_object_idx==1}M221 S101{endif}"
|
|
||||||
"{if current_object_idx==2}M221 S102{endif}"
|
|
||||||
"{if current_object_idx==3}M221 S103{endif}"
|
|
||||||
"{if current_object_idx==4}M221 S104{endif}"
|
|
||||||
"{if current_object_idx==5}M221 S99{endif}"
|
|
||||||
"{if current_object_idx==6}M221 S98{endif}"
|
|
||||||
"{if current_object_idx==7}M221 S97{endif}"
|
|
||||||
"{if current_object_idx==8}M221 S96{endif}"));
|
|
||||||
tab_print->load_config(new_config);
|
|
||||||
tab_filament->load_config(new_config);
|
|
||||||
tab_printer->load_config(new_config);
|
|
||||||
add_model_calibration(false,
|
|
||||||
(boost::filesystem::path(Slic3r::resources_dir()) / "calib" / "FlowRate" / "flowrate_fine.3mf").string());
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Plater::calib_flowrate_f(int pass, const Calib_Params ¶ms)
|
void Plater::calib_flowrate_fine(const Calib_Params ¶ms)
|
||||||
{
|
{
|
||||||
if (pass != 2)
|
|
||||||
return;
|
|
||||||
const auto calib_name = wxString::Format(L"Flowrate Test - Pass%d", pass);
|
|
||||||
new_project();
|
|
||||||
wxGetApp().mainframe->select_tab(size_t(0));
|
wxGetApp().mainframe->select_tab(size_t(0));
|
||||||
if (params.mode != CalibMode::Calib_FRF)
|
if (params.mode != CalibMode::Calib_FRF)
|
||||||
return;
|
return;
|
||||||
@@ -5472,8 +5447,7 @@ void Plater::calib_flowrate_f(int pass, const Calib_Params ¶ms)
|
|||||||
new_config.set_key_value("complete_objects", new ConfigOptionBool(true));
|
new_config.set_key_value("complete_objects", new ConfigOptionBool(true));
|
||||||
new_config.set_key_value("extruder_clearance_radius", new ConfigOptionFloat(1));
|
new_config.set_key_value("extruder_clearance_radius", new ConfigOptionFloat(1));
|
||||||
new_config.set_key_value("extrusion_multiplier", new ConfigOptionFloats{1.});
|
new_config.set_key_value("extrusion_multiplier", new ConfigOptionFloats{1.});
|
||||||
new_config.set_key_value("start_gcode",
|
new_config.set_key_value("start_gcode", new ConfigOptionString(start_gcode + "\nM221 S"+std::to_string(extru_multip)));
|
||||||
new ConfigOptionString(start_gcode + "\nM221 S"+std::to_string(extru_multip)));
|
|
||||||
new_config.set_key_value("between_objects_gcode",
|
new_config.set_key_value("between_objects_gcode",
|
||||||
new ConfigOptionString("{if current_object_idx==1}M221 S"+std::to_string(extru_multip+1)+"{endif}"
|
new ConfigOptionString("{if current_object_idx==1}M221 S"+std::to_string(extru_multip+1)+"{endif}"
|
||||||
"{if current_object_idx==2}M221 S"+std::to_string(extru_multip+2)+"{endif}"
|
"{if current_object_idx==2}M221 S"+std::to_string(extru_multip+2)+"{endif}"
|
||||||
@@ -5486,8 +5460,10 @@ void Plater::calib_flowrate_f(int pass, const Calib_Params ¶ms)
|
|||||||
tab_print->load_config(new_config);
|
tab_print->load_config(new_config);
|
||||||
tab_filament->load_config(new_config);
|
tab_filament->load_config(new_config);
|
||||||
tab_printer->load_config(new_config);
|
tab_printer->load_config(new_config);
|
||||||
add_model_calibration(false,
|
add_model_calibration(false, (boost::filesystem::path(Slic3r::resources_dir()) / "calib" / "FlowRate" / "flowrate_fine.3mf").string());
|
||||||
(boost::filesystem::path(Slic3r::resources_dir()) / "calib" / "FlowRate" / "flowrate_fine.3mf").string());
|
|
||||||
|
std::string message = _u8L("NOTICE: The calibration function modifies some parameters. After calibration, record the best value and restore the other parameters.");
|
||||||
|
get_notification_manager()->push_notification(NotificationType::CustomNotification, NotificationManager::NotificationLevel::PrintInfoNotificationLevel, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
//B34
|
//B34
|
||||||
@@ -5499,7 +5475,7 @@ void Plater::calib_pa(const Calib_Params ¶ms)
|
|||||||
|
|
||||||
switch (params.mode) {
|
switch (params.mode) {
|
||||||
case CalibMode::Calib_PA_Line:
|
case CalibMode::Calib_PA_Line:
|
||||||
add_model_calibration(false, Slic3r::resources_dir() + "/calib/PressureAdvance/pressure_advance_test.stl");
|
add_model_calibration(false, Slic3r::resources_dir() + "/calib/PressureAdvance/pa_line.stl");
|
||||||
break;
|
break;
|
||||||
//case CalibMode::Calib_PA_Pattern: _calib_pa_pattern(params); break;
|
//case CalibMode::Calib_PA_Pattern: _calib_pa_pattern(params); break;
|
||||||
//case CalibMode::Calib_PA_Tower: _calib_pa_tower(params); break;
|
//case CalibMode::Calib_PA_Tower: _calib_pa_tower(params); break;
|
||||||
|
|||||||
@@ -168,8 +168,8 @@ public:
|
|||||||
|
|
||||||
//B34
|
//B34
|
||||||
void calib_pa(const Calib_Params ¶ms);
|
void calib_pa(const Calib_Params ¶ms);
|
||||||
void calib_flowrate(int pass);
|
void calib_flowrate_coarse();
|
||||||
void calib_flowrate_f(int pass, const Calib_Params ¶ms);
|
void calib_flowrate_fine(const Calib_Params ¶ms);
|
||||||
|
|
||||||
|
|
||||||
void new_project();
|
void new_project();
|
||||||
|
|||||||
@@ -125,15 +125,13 @@ void FRF_Calibration_Dlg::on_start(wxCommandEvent& event) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_params.mode = CalibMode::Calib_FRF;
|
m_params.mode = CalibMode::Calib_FRF;
|
||||||
m_plater->calib_flowrate_f(2, m_params);
|
m_plater->calib_flowrate_fine(m_params);
|
||||||
EndModal(wxID_OK);
|
EndModal(wxID_OK);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void FRF_Calibration_Dlg::on_dpi_changed(const wxRect& suggested_rect) {
|
void FRF_Calibration_Dlg::on_dpi_changed(const wxRect& suggested_rect) {
|
||||||
this->Refresh();
|
this->Refresh();
|
||||||
Fit();
|
Fit();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PA_Calibration_Dlg::PA_Calibration_Dlg(wxWindow* parent, wxWindowID id, Plater* plater)
|
PA_Calibration_Dlg::PA_Calibration_Dlg(wxWindow* parent, wxWindowID id, Plater* plater)
|
||||||
|
|||||||
Reference in New Issue
Block a user