Fix retract only if travel is long enough and add wipe

This commit is contained in:
Martin Šach 2024-02-13 17:10:02 +01:00
parent b2e8580fd8
commit 8f192b67b5

View File

@ -2143,8 +2143,8 @@ 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();
if (this->m_config.retract_before_travel.get_at(extruder_id) < (to - from).norm()) {
travel_gcode += this->retract_and_wipe();
}
Vec3d previous_point{this->point_to_gcode(travel.front())};
for (const Vec3crd& point : tcb::span{travel}.subspan(1)) {
@ -3036,7 +3036,7 @@ std::string GCodeGenerator::travel_to_first_position(const Vec3crd& point) {
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();
gcode += this->retract_and_wipe();
}
}
this->last_position = point.head<2>();