From 43a84842e80a5db6a5ceef667b8e03bb2d33ff1b Mon Sep 17 00:00:00 2001 From: Ian Bassi Date: Fri, 25 Jul 2025 04:21:22 -0300 Subject: [PATCH] Disable resonance avoidance in calibration routines + Calibration Reorder (#10174) * Disable resonance avoidance in calibration routines * Reorder Calibrations * Moved Tolerance to Handy Models --- doc/calibration/tolerance-calib.md | 8 +- doc/images/Handy-Models/handy-models-list.png | Bin 0 -> 4435 bytes doc/images/calibration.png | Bin 18466 -> 5564 bytes .../OrcaToleranceTest.stl | Bin src/slic3r/GUI/GUI_Factories.cpp | 4 +- src/slic3r/GUI/MainFrame.cpp | 152 ++++++++---------- src/slic3r/GUI/Plater.cpp | 24 ++- 7 files changed, 94 insertions(+), 94 deletions(-) create mode 100644 doc/images/Handy-Models/handy-models-list.png rename resources/{calib/tolerance_test => handy_models}/OrcaToleranceTest.stl (100%) diff --git a/doc/calibration/tolerance-calib.md b/doc/calibration/tolerance-calib.md index a96e71dc4f..e4d0eb9098 100644 --- a/doc/calibration/tolerance-calib.md +++ b/doc/calibration/tolerance-calib.md @@ -18,7 +18,13 @@ To correct for these variations, Orca Slicer provides: ![Process_Compensation](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Tolerance/QualityPrecision.png?raw=true) -## Orca Tolerance Test +## Handy Models + +Orca Slicer includes several handy models to help you test and calibrate your printer. +Right-click on your plate in Prepare mode and select "Add Handy Model" to access these models. +![handy-models-list](../images/Handy-Models/handy-models-list.png) + +### Orca Tolerance Test This calibration test is designed to evaluate the dimensional accuracy of your printer and filament. The model consists of a base with six hexagonal holes, each with a different tolerance: 0.0 mm, 0.05 mm, 0.1 mm, 0.2 mm, 0.3 mm, and 0.4 mm, as well as a hexagon-shaped tester. diff --git a/doc/images/Handy-Models/handy-models-list.png b/doc/images/Handy-Models/handy-models-list.png new file mode 100644 index 0000000000000000000000000000000000000000..c1242cb3bd130701f3fe9032836d6e9e992f4861 GIT binary patch literal 4435 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 a0SR4jQ8H58tvLA>h3IJkn#K1Xz4#B?L literal 18466 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 #include #include -#include +#include #include #include @@ -186,7 +186,7 @@ DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, BORDERLESS_FRAME_ set_miniaturizable(GetHandle()); #endif - if (!wxGetApp().app_config->has("user_mode")) { + if (!wxGetApp().app_config->has("user_mode")) { wxGetApp().app_config->set("user_mode", "simple"); wxGetApp().app_config->set_bool("developer_mode", false); wxGetApp().app_config->save(); @@ -498,7 +498,7 @@ DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, BORDERLESS_FRAME_ wxGetApp().plater()->get_current_canvas3D()->request_extra_frame(); event.Skip(); }); -#endif +#endif update_ui_from_settings(); // FIXME (?) @@ -564,12 +564,12 @@ DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, BORDERLESS_FRAME_ return; } else if (evt.CmdDown() && evt.GetKeyCode() == 'G') { if (can_export_gcode()) { wxPostEvent(m_plater, SimpleEvent(EVT_GLTOOLBAR_EXPORT_SLICED_FILE)); } evt.Skip(); return; } - if (evt.CmdDown() && evt.GetKeyCode() == 'J') { m_printhost_queue_dlg->Show(); return; } + if (evt.CmdDown() && evt.GetKeyCode() == 'J') { m_printhost_queue_dlg->Show(); return; } if (evt.CmdDown() && evt.GetKeyCode() == 'N') { m_plater->new_project(); return;} if (evt.CmdDown() && evt.GetKeyCode() == 'O') { m_plater->load_project(); return;} if (evt.CmdDown() && evt.ShiftDown() && evt.GetKeyCode() == 'S') { if (can_save_as()) m_plater->save_project(true); return;} else if (evt.CmdDown() && evt.GetKeyCode() == 'S') { if (can_save()) m_plater->save_project(); return;} - if (evt.CmdDown() && evt.GetKeyCode() == 'F') { + if (evt.CmdDown() && evt.GetKeyCode() == 'F') { if (m_plater && (m_tabpanel->GetSelection() == TabPosition::tp3DEditor || m_tabpanel->GetSelection() == TabPosition::tpPreview)) { m_plater->sidebar().can_search(); } @@ -1998,7 +1998,7 @@ void MainFrame::update_side_button_style() m_slice_btn->SetExtraSize(wxSize(FromDIP(38), FromDIP(10))); m_slice_btn->SetBottomColour(wxColour(0x3B4446));*/ StateColor m_btn_bg_enable = StateColor( - std::pair(wxColour(0, 137, 123), StateColor::Pressed), + std::pair(wxColour(0, 137, 123), StateColor::Pressed), std::pair(wxColour(48, 221, 112), StateColor::Hovered), std::pair(wxColour(0, 150, 136), StateColor::Normal) ); @@ -2565,7 +2565,7 @@ void MainFrame::init_menubar_as_editor() #if 0 // BBS Delete selected append_menu_item(editMenu, wxID_ANY, _L("Delete selected") + "\tBackSpace", - _L("Deletes the current selection"),[this](wxCommandEvent&) { + _L("Deletes the current selection"),[this](wxCommandEvent&) { m_plater->remove_selected(); }, "", nullptr, [this](){return can_delete(); }, this); @@ -2608,7 +2608,7 @@ void MainFrame::init_menubar_as_editor() // BBS Select All append_menu_item(editMenu, wxID_ANY, _L("Select all") + sep + ctrl_t + "A", - _L("Selects all objects"), [this, handle_key_event](wxCommandEvent&) { + _L("Selects all objects"), [this, handle_key_event](wxCommandEvent&) { wxKeyEvent e; e.SetEventType(wxEVT_KEY_DOWN); e.SetControlDown(true); @@ -2906,7 +2906,7 @@ void MainFrame::init_menubar_as_editor() // SoftFever calibrations - // Flowrate + // Temperature append_menu_item(m_topbar->GetCalibMenu(), wxID_ANY, _L("Temperature"), _L("Temperature Calibration"), [this](wxCommandEvent&) { if (!m_temp_calib_dlg) @@ -2914,6 +2914,8 @@ void MainFrame::init_menubar_as_editor() m_temp_calib_dlg->ShowModal(); }, "", nullptr, [this]() {return m_plater->is_view3D_shown();; }, this); + + // Flow rate (with submenu) auto flowrate_menu = new wxMenu(); append_menu_item( flowrate_menu, wxID_ANY, _L("Pass 1"), _L("Flow rate test - Pass 1"), @@ -2930,6 +2932,8 @@ 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); 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) @@ -2937,6 +2941,8 @@ void MainFrame::init_menubar_as_editor() 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&) { if (!m_retraction_calib_dlg) @@ -2944,39 +2950,31 @@ void MainFrame::init_menubar_as_editor() m_retraction_calib_dlg->ShowModal(); }, "", nullptr, [this]() {return m_plater->is_view3D_shown();; }, this); - - append_menu_item(m_topbar->GetCalibMenu(), 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"), + // 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, + }, "", nullptr, [this]() {return m_plater->is_view3D_shown();; }, this); + // Cornering (with submenu) + auto cornering_menu = new wxMenu(); append_menu_item( - advance_menu, wxID_ANY, _L("VFA"), _L("VFA"), + cornering_menu, wxID_ANY, _L("Junction Deviation"), _L("Junction Deviation calibration"), [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(); + if (!m_junction_deviation_calib_dlg) + m_junction_deviation_calib_dlg = new Junction_Deviation_Test_Dlg((wxWindow*)this, wxID_ANY, m_plater); + m_junction_deviation_calib_dlg->ShowModal(); }, "", nullptr, [this]() {return m_plater->is_view3D_shown();; }, this); - - // Input Shaping calibrations + m_topbar->GetCalibMenu()->AppendSubMenu(cornering_menu, _L("Cornering")); + + // Input Shaping (with submenu) auto input_shaping_menu = new wxMenu(); - append_menu_item( input_shaping_menu, wxID_ANY, _L("Input Shaping Frequency"), _L("Input Shaping Frequency"), [this](wxCommandEvent&) { @@ -2986,7 +2984,6 @@ void MainFrame::init_menubar_as_editor() }, "", nullptr, [this]() {return m_plater->is_view3D_shown();; }, this); - append_menu_item( input_shaping_menu, wxID_ANY, _L("Input Shaping Damping/zeta factor"), _L("Input Shaping Damping/zeta factor"), [this](wxCommandEvent&) { @@ -2996,23 +2993,18 @@ void MainFrame::init_menubar_as_editor() }, "", nullptr, [this]() {return m_plater->is_view3D_shown();; }, this); - m_topbar->GetCalibMenu()->AppendSubMenu(input_shaping_menu, _L("Input Shaping")); - - // Add Junction Deviation option to More menu - append_menu_item( - advance_menu, wxID_ANY, _L("Junction Deviation"), _L("Junction Deviation calibration"), - [this](wxCommandEvent&) { - if (!m_junction_deviation_calib_dlg) - m_junction_deviation_calib_dlg = new Junction_Deviation_Test_Dlg((wxWindow*)this, wxID_ANY, m_plater); - m_junction_deviation_calib_dlg->ShowModal(); - }, - "", nullptr, - [this]() {return m_plater->is_view3D_shown();; }, this); - - m_topbar->GetCalibMenu()->AppendSubMenu(advance_menu, _L("More...")); - // help + // VFA + append_menu_item(m_topbar->GetCalibMenu(), 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); + + // help append_menu_item(m_topbar->GetCalibMenu(), wxID_ANY, _L("Tutorial"), _L("Calibration help"), [this](wxCommandEvent&) { std::string url = "https://github.com/SoftFever/OrcaSlicer/wiki/Calibration"; @@ -3036,7 +3028,7 @@ void MainFrame::init_menubar_as_editor() // SoftFever calibrations auto calib_menu = new wxMenu(); - // PA + // Temperature append_menu_item(calib_menu, wxID_ANY, _L("Temperature"), _L("Temperature"), [this](wxCommandEvent&) { if (!m_temp_calib_dlg) @@ -3044,8 +3036,8 @@ void MainFrame::init_menubar_as_editor() m_temp_calib_dlg->ShowModal(); }, "", nullptr, [this]() {return m_plater->is_view3D_shown();; }, this); - - // Flowrate + + // Flowrate (with submenu) 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(false, 1); }, "", nullptr, @@ -3063,7 +3055,7 @@ 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); - // PA + // Pressure Advance append_menu_item(calib_menu, wxID_ANY, _L("Pressure advance"), _L("Pressure advance"), [this](wxCommandEvent&) { if (!m_pa_calib_dlg) @@ -3072,7 +3064,7 @@ void MainFrame::init_menubar_as_editor() }, "", nullptr, [this]() {return m_plater->is_view3D_shown();; }, this); - // Retraction + // Retraction test append_menu_item(calib_menu, wxID_ANY, _L("Retraction test"), _L("Retraction test"), [this](wxCommandEvent&) { if (!m_retraction_calib_dlg) @@ -3081,46 +3073,30 @@ void MainFrame::init_menubar_as_editor() }, "", 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"), + // Max Volumetric Speed + append_menu_item(calib_menu, wxID_ANY, _L("Max flowrate"), _L("Max flowrate"), [this](wxCommandEvent&) { - m_plater->new_project(); - m_plater->add_model(false, Slic3r::resources_dir() + "/calib/tolerance_test/OrcaToleranceTest.stl"); + 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); - // Advance calibrations - auto advance_menu = new wxMenu(); + // Cornering (with submenu) + auto cornering_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); - - // Add Junction Deviation option to More menu - append_menu_item( - advance_menu, wxID_ANY, _L("Junction Deviation"), _L("Junction Deviation calibration"), + cornering_menu, wxID_ANY, _L("Junction Deviation"), _L("Junction Deviation calibration"), [this](wxCommandEvent&) { if (!m_junction_deviation_calib_dlg) m_junction_deviation_calib_dlg = new Junction_Deviation_Test_Dlg((wxWindow*)this, wxID_ANY, m_plater); m_junction_deviation_calib_dlg->ShowModal(); - }, "", nullptr, + }, + "", nullptr, [this]() {return m_plater->is_view3D_shown();; }, this); - - // Input Shaping calibrations + calib_menu->AppendSubMenu(cornering_menu, _L("Cornering")); + + // Input Shaping (with submenu) auto input_shaping_menu = new wxMenu(); - append_menu_item( input_shaping_menu, wxID_ANY, _L("Input Shaping Frequency"), _L("Input Shaping Frequency"), [this](wxCommandEvent&) { @@ -3130,7 +3106,6 @@ void MainFrame::init_menubar_as_editor() }, "", nullptr, [this]() {return m_plater->is_view3D_shown();; }, this); - append_menu_item( input_shaping_menu, wxID_ANY, _L("Input Shaping Damping/zeta factor"), _L("Input Shaping Damping/zeta factor"), [this](wxCommandEvent&) { @@ -3140,16 +3115,21 @@ void MainFrame::init_menubar_as_editor() }, "", nullptr, [this]() {return m_plater->is_view3D_shown();; }, this); - calib_menu->AppendSubMenu(input_shaping_menu, _L("Input Shaping")); - - append_submenu(calib_menu, advance_menu, wxID_ANY, _L("More..."), _L("More calibrations"), "", - [this]() {return m_plater->is_view3D_shown();; }); + + // VFA + append_menu_item(calib_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); // 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"))); @@ -3312,7 +3292,7 @@ void MainFrame::export_config() { ExportConfigsDialog export_configs_dlg(nullptr); export_configs_dlg.ShowModal(); - return; + return; // Generate a cummulative configuration for the selected print, filaments and printer. wxDirDialog dlg(this, _L("Choose a directory"), diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index be2f1b2ce5..eba57e60d6 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -9505,7 +9505,8 @@ void Plater::calib_pa(const Calib_Params& params) break; default: break; } - + auto printer_config = &wxGetApp().preset_bundle->printers.get_edited_preset().config; + printer_config->set_key_value("resonance_avoidance", new ConfigOptionBool{false}); p->background_process.fff_print()->set_calib_params(params); } @@ -9515,14 +9516,15 @@ void Plater::_calib_pa_pattern(const Calib_Params& params) std::vector accels{params.accelerations}; std::vector object_idxs{}; /* Set common parameters */ - DynamicPrintConfig& printer_config = wxGetApp().preset_bundle->printers.get_edited_preset().config; + auto printer_config = &wxGetApp().preset_bundle->printers.get_edited_preset().config; DynamicPrintConfig& print_config = wxGetApp().preset_bundle->prints.get_edited_preset().config; auto filament_config = &wxGetApp().preset_bundle->filaments.get_edited_preset().config; - double nozzle_diameter = printer_config.option("nozzle_diameter")->get_at(0); + double nozzle_diameter = printer_config->option("nozzle_diameter")->get_at(0); filament_config->set_key_value("filament_retract_when_changing_layer", new ConfigOptionBoolsNullable{false}); filament_config->set_key_value("filament_wipe", new ConfigOptionBoolsNullable{false}); - printer_config.set_key_value("wipe", new ConfigOptionBools{false}); - printer_config.set_key_value("retract_when_changing_layer", new ConfigOptionBools{false}); + printer_config->set_key_value("wipe", new ConfigOptionBools{false}); + printer_config->set_key_value("retract_when_changing_layer", new ConfigOptionBools{false}); + printer_config->set_key_value("resonance_avoidance", new ConfigOptionBool{false}); //Orca: find acceleration to use in the test auto accel = print_config.option("outer_wall_acceleration")->value; // get the outer wall acceleration @@ -9980,6 +9982,8 @@ void Plater::calib_flowrate(bool is_linear, int pass) { adjust_settings_for_flowrate_calib(model().objects, is_linear, pass); wxGetApp().get_tab(Preset::TYPE_PRINTER)->reload_config(); + auto printer_config = &wxGetApp().preset_bundle->printers.get_edited_preset().config; + printer_config->set_key_value("resonance_avoidance", new ConfigOptionBool{false}); // Refresh object after scaling const std::vector object_idx(boost::counting_iterator(0), boost::counting_iterator(model().objects.size())); @@ -9995,8 +9999,10 @@ void Plater::calib_temp(const Calib_Params& params) { return; add_model(false, Slic3r::resources_dir() + "/calib/temperature_tower/temperature_tower.stl"); + auto printer_config = &wxGetApp().preset_bundle->printers.get_edited_preset().config; auto filament_config = &wxGetApp().preset_bundle->filaments.get_edited_preset().config; auto start_temp = lround(params.start); + printer_config->set_key_value("resonance_avoidance", new ConfigOptionBool{false}); filament_config->set_key_value("nozzle_temperature_initial_layer", new ConfigOptionInts(1,(int)start_temp)); filament_config->set_key_value("nozzle_temperature", new ConfigOptionInts(1,(int)start_temp)); model().objects[0]->config.set_key_value("brim_type", new ConfigOptionEnum(btOuterOnly)); @@ -10069,7 +10075,7 @@ void Plater::calib_max_vol_speed(const Calib_Params& params) filament_config->set_key_value("filament_max_volumetric_speed", new ConfigOptionFloats { 200 }); filament_config->set_key_value("slow_down_layer_time", new ConfigOptionFloats{0.0}); - + printer_config->set_key_value("resonance_avoidance", new ConfigOptionBool{false}); obj_cfg.set_key_value("enable_overhang_speed", new ConfigOptionBool { false }); obj_cfg.set_key_value("wall_loops", new ConfigOptionInt(1)); obj_cfg.set_key_value("alternate_extra_wall", new ConfigOptionBool(false)); @@ -10133,6 +10139,7 @@ void Plater::calib_retraction(const Calib_Params& params) if (max_lh->values[0] < layer_height) max_lh->values[0] = { layer_height }; + printer_config->set_key_value("resonance_avoidance", new ConfigOptionBool{false}); printer_config->set_key_value("use_firmware_retraction", new ConfigOptionBool(false)); obj->config.set_key_value("wall_loops", new ConfigOptionInt(2)); obj->config.set_key_value("top_shell_layers", new ConfigOptionInt(0)); @@ -10165,6 +10172,8 @@ void Plater::calib_VFA(const Calib_Params& params) add_model(false, Slic3r::resources_dir() + "/calib/vfa/VFA.stl"); auto print_config = &wxGetApp().preset_bundle->prints.get_edited_preset().config; auto filament_config = &wxGetApp().preset_bundle->filaments.get_edited_preset().config; + auto printer_config = &wxGetApp().preset_bundle->printers.get_edited_preset().config; + printer_config->set_key_value("resonance_avoidance", new ConfigOptionBool{false}); filament_config->set_key_value("slow_down_layer_time", new ConfigOptionFloats { 0.0 }); print_config->set_key_value("enable_overhang_speed", new ConfigOptionBool { false }); print_config->set_key_value("timelapse_type", new ConfigOptionEnum(tlTraditional)); @@ -10209,6 +10218,7 @@ void Plater::calib_input_shaping_freq(const Calib_Params& params) auto filament_config = &wxGetApp().preset_bundle->filaments.get_edited_preset().config; auto printer_config = &wxGetApp().preset_bundle->printers.get_edited_preset().config; printer_config->set_key_value("machine_max_junction_deviation", new ConfigOptionFloats {0.3}); + printer_config->set_key_value("resonance_avoidance", new ConfigOptionBool{false}); filament_config->set_key_value("slow_down_layer_time", new ConfigOptionFloats { 0.0 }); filament_config->set_key_value("slow_down_min_speed", new ConfigOptionFloats { 0.0 }); filament_config->set_key_value("slow_down_for_layer_cooling", new ConfigOptionBools{false}); @@ -10255,6 +10265,7 @@ void Plater::calib_input_shaping_damp(const Calib_Params& params) auto filament_config = &wxGetApp().preset_bundle->filaments.get_edited_preset().config; auto printer_config = &wxGetApp().preset_bundle->printers.get_edited_preset().config; printer_config->set_key_value("machine_max_junction_deviation", new ConfigOptionFloats{0.3}); + printer_config->set_key_value("resonance_avoidance", new ConfigOptionBool{false}); filament_config->set_key_value("slow_down_layer_time", new ConfigOptionFloats { 0.0 }); filament_config->set_key_value("slow_down_min_speed", new ConfigOptionFloats { 0.0 }); filament_config->set_key_value("slow_down_for_layer_cooling", new ConfigOptionBools{false}); @@ -10301,6 +10312,7 @@ void Plater::calib_junction_deviation(const Calib_Params& params) auto filament_config = &wxGetApp().preset_bundle->filaments.get_edited_preset().config; auto printer_config = &wxGetApp().preset_bundle->printers.get_edited_preset().config; printer_config->set_key_value("machine_max_junction_deviation", new ConfigOptionFloats{1.0}); + printer_config->set_key_value("resonance_avoidance", new ConfigOptionBool{false}); filament_config->set_key_value("slow_down_layer_time", new ConfigOptionFloats { 0.0 }); filament_config->set_key_value("slow_down_min_speed", new ConfigOptionFloats { 0.0 }); filament_config->set_key_value("slow_down_for_layer_cooling", new ConfigOptionBools{false});