From a2cff48a469a7b50dca5c0095b942cfdef54faea Mon Sep 17 00:00:00 2001 From: Kiss Lorand <50251547+kisslorand@users.noreply.github.com> Date: Wed, 22 Apr 2026 02:40:17 +0300 Subject: [PATCH] Extend short-travel smoothing to external overhang walls (#11975) --- src/libslic3r/GCode.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 04a2df48db..b90d70fecd 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -7091,9 +7091,16 @@ std::string GCode::travel_to(const Point& point, ExtrusionRole role, std::string if (m_config.default_jerk.value > 0 && m_config.initial_layer_jerk.value > 0) { jerk_to_set = m_config.initial_layer_jerk.value; } - } else { + } else { // ORCA: Handle short-travel acceleration and jerk for outer perimeters (if applicable) + const bool is_short_travel = travel.length() < scale_(EXTRUDER_CONFIG(retraction_minimum_travel)); + if (m_config.default_acceleration.value > 0) { - if (role == erExternalPerimeter && travel.length() < scale_(EXTRUDER_CONFIG(retraction_minimum_travel))) { + if (role == erOverhangPerimeter && is_short_travel) { + const double bridge_acceleration = m_config.get_abs_value("bridge_acceleration"); + + if (bridge_acceleration > 0) + acceleration_to_set = (unsigned int) floor(bridge_acceleration + 0.5); + } else if (role == erExternalPerimeter && is_short_travel) { if (m_config.outer_wall_acceleration.value > 0) acceleration_to_set = (unsigned int) floor(m_config.outer_wall_acceleration.value + 0.5); } else { @@ -7103,7 +7110,7 @@ std::string GCode::travel_to(const Point& point, ExtrusionRole role, std::string } if (m_config.default_jerk.value > 0) { - if (role == erExternalPerimeter && travel.length() < scale_(EXTRUDER_CONFIG(retraction_minimum_travel))) { + if ((role == erExternalPerimeter || role == erOverhangPerimeter) && is_short_travel) { if (m_config.outer_wall_jerk.value > 0) jerk_to_set = m_config.outer_wall_jerk.value; } else {