From b2e8580fd8151af19bacb5e0686dadfa7f9659c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20=C5=A0ach?= Date: Mon, 12 Feb 2024 16:41:40 +0100 Subject: [PATCH] Add retraction for any travels that would happen during layer change --- src/libslic3r/GCode.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 696aa9cb69..f448919df9 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -2143,6 +2143,9 @@ std::string GCodeGenerator::get_layer_change_gcode(const Vec3d& from, const Vec3 )}; std::string travel_gcode; + if (this->m_config.retract_before_travel.get_at(extruder_id) > xy_path.length()) { + travel_gcode += this->writer().retract(); + } Vec3d previous_point{this->point_to_gcode(travel.front())}; for (const Vec3crd& point : tcb::span{travel}.subspan(1)) { const Vec3d gcode_point{this->point_to_gcode(point)}; @@ -3029,6 +3032,13 @@ std::string GCodeGenerator::travel_to_first_position(const Vec3crd& point) { gcode += this->writer().get_travel_to_z_gcode(gcode_point.z() + lift, "lift"); } + if (!EXTRUDER_CONFIG(travel_ramping_lift)) { + if (!this->last_position || + EXTRUDER_CONFIG(retract_before_travel) < + (this->point_to_gcode(*this->last_position) - gcode_point.head<2>()).norm()) { + gcode += this->writer().retract(); + } + } this->last_position = point.head<2>(); this->writer().update_position(gcode_point);