diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index e11ac072f..525838638 100755 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -4031,7 +4031,11 @@ inline void gcode_G28() { || left_probe_bed_position != bilinear_start[X_AXIS] || front_probe_bed_position != bilinear_start[Y_AXIS] ) { + // Before reset bed level, re-enable to correct the position + planner.abl_enabled = abl_should_enable; + // Reset grid to 0.0 or "not probed". (Also disables ABL) reset_bed_level(); + #if ENABLED(ABL_BILINEAR_SUBDIVISION) bilinear_grid_spacing_virt[X_AXIS] = xGridSpacing / (BILINEAR_SUBDIVISIONS); bilinear_grid_spacing_virt[Y_AXIS] = yGridSpacing / (BILINEAR_SUBDIVISIONS); @@ -4040,6 +4044,7 @@ inline void gcode_G28() { bilinear_grid_spacing[Y_AXIS] = yGridSpacing; bilinear_start[X_AXIS] = RAW_X_POSITION(left_probe_bed_position); bilinear_start[Y_AXIS] = RAW_Y_POSITION(front_probe_bed_position); + // Can't re-enable (on error) until the new grid is written abl_should_enable = false; }