diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index d7321c92f7..ad02d5a8c3 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -1869,7 +1869,7 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato if (this->m_objsWithBrim.empty() && this->m_objSupportsWithBrim.empty()) m_brim_done = true; // SoftFever: calib - if (print.calib_params().mode == CalibMode::Calib_PA_Line) { + if (print.calib_params().mode == CalibMode::Calib_PA_Line || print.calib_params().mode == CalibMode::Calib_PA_Pattern) { std::string gcode; if ((m_config.default_acceleration.value > 0 && m_config.outer_wall_acceleration.value > 0)) { gcode += m_writer.set_acceleration((unsigned int)floor(m_config.outer_wall_acceleration.value + 0.5)); @@ -1880,15 +1880,27 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato gcode += m_writer.set_jerk_xy(jerk); } - calib_pressure_advance pa_test(this); - double filament_max_volumetric_speed = m_config.option("filament_max_volumetric_speed")->get_at(initial_extruder_id); - Flow pattern_line = Flow(pa_test.line_width(), 0.2, m_config.nozzle_diameter.get_at(0)); - auto fast_speed = std::min(print.default_region_config().outer_wall_speed.value, filament_max_volumetric_speed / pattern_line.mm3_per_mm()); - auto slow_speed = std::max(20.0, fast_speed / 10.0); - pa_test.set_speed(fast_speed, slow_speed); - pa_test.draw_numbers() = print.calib_params().print_numbers; auto params = print.calib_params(); - gcode += pa_test.generate_test(params.start, params.step, std::llround(std::ceil((params.end - params.start) / params.step))); + + switch (print.calib_params().mode) { + case CalibMode::Calib_PA_Line: + calib_pressure_advance_line pa_test(this); + + double filament_max_volumetric_speed = m_config.option("filament_max_volumetric_speed")->get_at(initial_extruder_id); + Flow pattern_line = Flow(pa_test.line_width(), 0.2, m_config.nozzle_diameter.get_at(0)); + auto fast_speed = std::min(print.default_region_config().outer_wall_speed.value, filament_max_volumetric_speed / pattern_line.mm3_per_mm()); + auto slow_speed = std::max(20.0, fast_speed / 10.0); + + pa_test.set_speed(fast_speed, slow_speed); + pa_test.draw_numbers() = print.calib_params().print_numbers; + + gcode += pa_test.generate_test(params.start, params.step, std::llround(std::ceil((params.end - params.start) / params.step))); + break; + case CalibMode::Calib_PA_Pattern: + calib_pressure_advance_pattern pa_test(this); + gcode += pa_test.generate_test(params.start, params.end, params.step); + break; + } file.write(gcode); } else {