diff --git a/doc/Home.md b/doc/Home.md index 89e8e94ad1..2adfdffd95 100644 --- a/doc/Home.md +++ b/doc/Home.md @@ -136,13 +136,13 @@ OrcaSlicer is a powerful open source slicer for FFF (FDM) 3D Printers. This wiki ![tab_calibration_active](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/tab_calibration_active.svg?raw=true) The [Calibration Guide](Calibration) outlines Orca’s key calibration tests and their suggested order of execution. - [Temperature](temp-calib) -- [Flow Rate](flow-rate-calib) +- [Volumetric Speed](volumetric-speed-calib) - [Pressure Advance](pressure-advance-calib) - [Adaptive Pressure Advance Guide](adaptive-pressure-advance-calib) +- [Flow Rate](flow-rate-calib) - [Retraction](retraction-calib) - [Tolerance](tolerance-calib) - Advanced: - - [Volumetric Speed](volumetric-speed-calib) - [Cornering (Jerk & Junction Deviation)](cornering-calib) - [Input Shaping](input-shaping-calib) - [VFA](vfa-calib) diff --git a/doc/calibration/Calibration.md b/doc/calibration/Calibration.md index db8a9c83d6..e5e62da85f 100644 --- a/doc/calibration/Calibration.md +++ b/doc/calibration/Calibration.md @@ -17,9 +17,9 @@ The recommended order for calibration is as follows: temp-tower -2. **[Flow](flow-rate-calib):** Calibrate the flow rate to ensure that the correct amount of filament is being extruded. This is important for achieving accurate dimensions and good layer adhesion. +2. **[Max Volumetric Speed](volumetric-speed-calib):** Calibrate the maximum volumetric speed of the filament. This is important for ensuring that the printer can handle the flow rate of the filament without causing issues like under-extrusion. - flowcalibration-example + mvf_measurement_point 3. **[Pressure Advance](pressure-advance-calib):** Calibrate the pressure advance settings to improve print quality and reduce artifacts caused by pressure fluctuations in the nozzle. @@ -27,14 +27,14 @@ The recommended order for calibration is as follows: pa-tower -4. **[Retraction](retraction-calib):** Calibrate the retraction settings to minimize stringing and improve print quality. Doing this after Flow and Pressure Advance calibration is recommended, as it ensures that the printer is already set up for optimal extrusion. +4. **[Flow](flow-rate-calib):** Calibrate the flow rate to ensure that the correct amount of filament is being extruded. This is important for achieving accurate dimensions and good layer adhesion. + + flowcalibration-example + +5. **[Retraction](retraction-calib):** Calibrate the retraction settings to minimize stringing and improve print quality. Doing this after Flow and Pressure Advance calibration is recommended, as it ensures that the printer is already set up for optimal extrusion. retraction_test_print -5. **[Max Volumetric Speed](volumetric-speed-calib):** Calibrate the maximum volumetric speed of the filament. This is important for ensuring that the printer can handle the flow rate of the filament without causing issues such as under-extrusion or over-extrusion. - - mvf_measurement_point - 6. **[Cornering](cornering-calib):** Calibrate the Jerk/Junction Deviation settings to improve print quality and reduce artifacts caused by sharp corners and changes in direction. jd_second_print_measure diff --git a/doc/images/calibration.png b/doc/images/calibration.png index 06a0454f62..b26f203ff7 100644 Binary files a/doc/images/calibration.png and b/doc/images/calibration.png differ diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index c65d1a3ae3..3576d6caa1 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -3026,6 +3026,24 @@ void MainFrame::init_menubar_as_editor() }, "", nullptr, [this]() {return m_plater->is_view3D_shown();; }, this); + // Max Volumetric Speed + append_menu_item(m_topbar->GetCalibMenu(), 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); + + // Pressure Advance + 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); + m_pa_calib_dlg->ShowModal(); + }, "", nullptr, + [this]() {return m_plater->is_view3D_shown();; }, this); + // Flow rate (with submenu) auto flowrate_menu = new wxMenu(); append_menu_item( @@ -3044,15 +3062,6 @@ void MainFrame::init_menubar_as_editor() [this]() {return m_plater->is_view3D_shown();; }, this); m_topbar->GetCalibMenu()->AppendSubMenu(flowrate_menu, _L("Flow rate")); - // Pressure Advance - 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); - m_pa_calib_dlg->ShowModal(); - }, "", nullptr, - [this]() {return m_plater->is_view3D_shown();; }, this); - // Retraction test append_menu_item(m_topbar->GetCalibMenu(), wxID_ANY, _L("Retraction test"), _L("Retraction test"), [this](wxCommandEvent&) { @@ -3062,15 +3071,6 @@ void MainFrame::init_menubar_as_editor() }, "", nullptr, [this]() {return m_plater->is_view3D_shown();; }, this); - // Max Volumetric Speed - append_menu_item(m_topbar->GetCalibMenu(), 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); - // Cornering append_menu_item(m_topbar->GetCalibMenu(), wxID_ANY, _L("Cornering"), _L("Cornering calibration"), [this](wxCommandEvent&) { @@ -3144,6 +3144,24 @@ void MainFrame::init_menubar_as_editor() }, "", nullptr, [this]() {return m_plater->is_view3D_shown();; }, this); + // Max Volumetric Speed + append_menu_item(calib_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); + + // Pressure Advance + append_menu_item(calib_menu, 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(); + }, "", nullptr, + [this]() {return m_plater->is_view3D_shown();; }, this); + // Flowrate (with submenu) auto flowrate_menu = new wxMenu(); append_menu_item(flowrate_menu, wxID_ANY, _L("Pass 1"), _L("Flow rate test - Pass 1"), @@ -3162,15 +3180,6 @@ void MainFrame::init_menubar_as_editor() [this](wxCommandEvent&) { if (m_plater) m_plater->calib_flowrate(true, 2); }, "", nullptr, [this]() {return m_plater->is_view3D_shown();; }, this); - // Pressure Advance - append_menu_item(calib_menu, 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(); - }, "", nullptr, - [this]() {return m_plater->is_view3D_shown();; }, this); - // Retraction test append_menu_item(calib_menu, wxID_ANY, _L("Retraction test"), _L("Retraction test"), [this](wxCommandEvent&) { @@ -3180,15 +3189,6 @@ void MainFrame::init_menubar_as_editor() }, "", nullptr, [this]() {return m_plater->is_view3D_shown();; }, this); - // Max Volumetric Speed - append_menu_item(calib_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); - // Cornering append_menu_item(calib_menu, wxID_ANY, _L("Cornering"), _L("Cornering calibration"), [this](wxCommandEvent&) {