diff --git a/src/libslic3r/Calib.hpp b/src/libslic3r/Calib.hpp index 3b373d449..e2f1f59a0 100644 --- a/src/libslic3r/Calib.hpp +++ b/src/libslic3r/Calib.hpp @@ -256,7 +256,9 @@ private: struct SuggestedConfigCalibPAPattern { - const std::vector> float_pairs{{"initial_layer_print_height", 0.25}, {"layer_height", 0.2}, {"initial_layer_speed", 30}}; + const std::vector> float_pairs{{"initial_layer_print_height", 0.25}, {"layer_height", 0.2}}; + + const std::vector>> floats_pairs{{"initial_layer_speed", {30}}}; const std::vector> nozzle_ratio_pairs{{"line_width", 112.5}, {"initial_layer_line_width", 140}}; diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 06e7ea8a9..b2b68b2e8 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -10052,10 +10052,11 @@ void Plater::_calib_pa_pattern(const Calib_Params ¶ms) for (const auto opt : SuggestedConfigCalibPAPattern().float_pairs) { print_config.set_key_value(opt.first, new ConfigOptionFloat(opt.second)); } - print_config.set_key_value("outer_wall_speed", - new ConfigOptionFloat(CalibPressureAdvance::find_optimal_PA_speed( - wxGetApp().preset_bundle->full_config(), print_config.get_abs_value("line_width"), - print_config.get_abs_value("layer_height"), 0, 0))); + for (const auto opt : SuggestedConfigCalibPAPattern().floats_pairs) { + print_config.set_key_value(opt.first, new ConfigOptionFloatsNullable(opt.second)); + } + float wall_speed = CalibPressureAdvance::find_optimal_PA_speed(wxGetApp().preset_bundle->full_config(), print_config.get_abs_value("line_width"), print_config.get_abs_value("layer_height"), 0, 0); + print_config.set_key_value("outer_wall_speed", new ConfigOptionFloatsNullable({wall_speed})); for (const auto opt : SuggestedConfigCalibPAPattern().nozzle_ratio_pairs) { print_config.set_key_value(opt.first, new ConfigOptionFloat(nozzle_diameter * opt.second / 100)); @@ -10216,8 +10217,8 @@ void Plater::calib_flowrate(int pass) _obj->config.set_key_value("top_solid_infill_flow_ratio", new ConfigOptionFloat(1.0f)); _obj->config.set_key_value("infill_direction", new ConfigOptionFloat(45)); _obj->config.set_key_value("ironing_type", new ConfigOptionEnum(IroningType::NoIroning)); - _obj->config.set_key_value("internal_solid_infill_speed", new ConfigOptionFloat(internal_solid_speed)); - _obj->config.set_key_value("top_surface_speed", new ConfigOptionFloat(top_surface_speed)); + _obj->config.set_key_value("internal_solid_infill_speed", new ConfigOptionFloatsNullable({internal_solid_speed})); + _obj->config.set_key_value("top_surface_speed", new ConfigOptionFloatsNullable({top_surface_speed})); // extract flowrate from name, filename format: flowrate_xxx std::string obj_name = _obj->name; diff --git a/src/slic3r/Utils/CalibUtils.cpp b/src/slic3r/Utils/CalibUtils.cpp index 15e11607f..c88b1777e 100644 --- a/src/slic3r/Utils/CalibUtils.cpp +++ b/src/slic3r/Utils/CalibUtils.cpp @@ -679,6 +679,9 @@ void CalibUtils::calib_pa_pattern(const CalibInfo &calib_info, Model& model) for (const auto opt : SuggestedConfigCalibPAPattern().float_pairs) { print_config.set_key_value(opt.first, new ConfigOptionFloat(opt.second)); } + for (const auto opt : SuggestedConfigCalibPAPattern().floats_pairs) { + print_config.set_key_value(opt.first, new ConfigOptionFloatsNullable(opt.second)); + } print_config.set_key_value("outer_wall_speed", new ConfigOptionFloat(CalibPressureAdvance::find_optimal_PA_speed(