diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index dbac3f1112..1a8028bdaa 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -2914,27 +2914,29 @@ inline void gcode_G28() { #elif defined(MIN_Z_HEIGHT_FOR_HOMING) && MIN_Z_HEIGHT_FOR_HOMING > 0 - // Raise Z before homing, if specified - float z_dest = home_offset[Z_AXIS] + MIN_Z_HEIGHT_FOR_HOMING; - if (z_dest > current_position[Z_AXIS]) { + // Raise Z before homing X or Y, if specified + if (home_all_axis || homeX || homeY) { + float z_dest = home_offset[Z_AXIS] + MIN_Z_HEIGHT_FOR_HOMING; + if (z_dest > current_position[Z_AXIS]) { - #if ENABLED(DEBUG_LEVELING_FEATURE) - if (DEBUGGING(LEVELING)) { - SERIAL_ECHOPAIR("Raise Z (before homing) to ", z_dest); - SERIAL_EOL; - } - #endif + #if ENABLED(DEBUG_LEVELING_FEATURE) + if (DEBUGGING(LEVELING)) { + SERIAL_ECHOPAIR("Raise Z (before homing) to ", z_dest); + SERIAL_EOL; + } + #endif - feedrate = homing_feedrate[Z_AXIS]; + feedrate = homing_feedrate[Z_AXIS]; - #if HAS_BED_PROBE - do_blocking_move_to_z(z_dest); - #else - line_to_z(z_dest); - stepper.synchronize(); - #endif + #if HAS_BED_PROBE + do_blocking_move_to_z(z_dest); + #else + line_to_z(z_dest); + stepper.synchronize(); + #endif - destination[Z_AXIS] = current_position[Z_AXIS] = z_dest; + destination[Z_AXIS] = current_position[Z_AXIS] = z_dest; + } } #endif // MIN_Z_HEIGHT_FOR_HOMING