GCode: skip the second crossing-avoidance pass on a brim apron layer too

travel_to runs avoid-crossing a second time after a wipe; that call needs the
current Layer as much as the first one does.
This commit is contained in:
harrierpigeon
2026-10-02 12:46:44 -05:00
parent 7a23d9ea2c
commit 007071bd56
+2 -1
View File
@@ -9461,7 +9461,8 @@ std::string GCode::travel_to(const Point& point, ExtrusionRole role, std::string
// When "Wipe while retracting" is enabled, then extruder moves to another position, and travel from this position can cross perimeters.
// Because of it, it is necessary to call avoid crossing perimeters again with new starting point after calling retraction()
// FIXME Lukas H.: Try to predict if this second calling of avoid crossing perimeters will be needed or not. It could save computations.
if (last_post_before_retract != this->last_pos() && m_config.reduce_crossing_wall) {
if (last_post_before_retract != this->last_pos() && m_config.reduce_crossing_wall
&& m_layer != nullptr) { // A brim apron layer has no Layer to avoid crossing
// If in the previous call of m_avoid_crossing_perimeters.travel_to was use_external_mp_once set to true restore this value for next call.
if (used_external_mp_once)
m_avoid_crossing_perimeters.use_external_mp_once();