diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 2237aee20..ae635e475 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -12016,9 +12016,7 @@ void tool_change(const uint8_t tmp_extruder, const float fr_mm_s/*=0.0*/, bool n #endif } - // Save current position to destination, for use later - set_destination_from_current(); - + #if HAS_LEVELING // Set current position to the physical position const bool leveling_was_active = planner.leveling_active; @@ -12026,11 +12024,15 @@ void tool_change(const uint8_t tmp_extruder, const float fr_mm_s/*=0.0*/, bool n #endif #if ENABLED(DUAL_X_CARRIAGE) - + // Save current position to destination, for use later + if(current_position[X_AXIS] != x_home_pos(active_extruder)) + set_destination_from_current(); + else + no_move = true; dualx_tool_change(tmp_extruder, no_move); // Can modify no_move #else // !DUAL_X_CARRIAGE - + set_destination_from_current(); #if ENABLED(PARKING_EXTRUDER) // Dual Parking extruder parking_extruder_tool_change(tmp_extruder, no_move); #endif