diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp index f23fb65b6bd0..4be09de47227 100644 --- a/Marlin/src/module/probe.cpp +++ b/Marlin/src/module/probe.cpp @@ -904,7 +904,7 @@ float Probe::run_z_probe(const bool sanity_check/*=true*/, const float z_min_poi */ float Probe::probe_at_point(const_float_t rx, const_float_t ry, const ProbePtRaise raise_after/*=PROBE_PT_NONE*/, const uint8_t verbose_level/*=0*/, const bool probe_relative/*=true*/, const bool sanity_check/*=true*/, - const float z_min_point/*=Z_PROBE_LOW_POINT*/, const float z_clearance/*=Z_TWEEN_SAFE_CLEARANCE*/ + const float z_min_point/*=Z_PROBE_LOW_POINT*/, const float z_clearance/*=Z_TWEEN_SAFE_CLEARANCE*/, const bool lift_relative/*=false*/ ) { DEBUG_SECTION(log_probe, "Probe::probe_at_point", DEBUGGING(LEVELING)); @@ -961,7 +961,7 @@ float Probe::probe_at_point(const_float_t rx, const_float_t ry, const ProbePtRai switch (raise_after) { default: break; case PROBE_PT_RAISE: - do_z_clearance(z_clearance); + lift_relative ? do_z_clearance(current_position.z + z_clearance, false) : do_z_clearance(z_clearance); break; case PROBE_PT_STOW: case PROBE_PT_LAST_STOW: if (stow()) measured_z = NAN; // Error on stow? diff --git a/Marlin/src/module/probe.h b/Marlin/src/module/probe.h index 4d59acd908b3..b41a0e53caa5 100644 --- a/Marlin/src/module/probe.h +++ b/Marlin/src/module/probe.h @@ -165,13 +165,13 @@ class Probe { static float probe_at_point(const_float_t rx, const_float_t ry, const ProbePtRaise raise_after=PROBE_PT_NONE, const uint8_t verbose_level=0, const bool probe_relative=true, const bool sanity_check=true, - const float z_min_point=Z_PROBE_LOW_POINT, const float z_clearance=Z_TWEEN_SAFE_CLEARANCE); + const float z_min_point=Z_PROBE_LOW_POINT, const float z_clearance=Z_TWEEN_SAFE_CLEARANCE, const bool lift_relative=false); static float probe_at_point(const xy_pos_t &pos, const ProbePtRaise raise_after=PROBE_PT_NONE, const uint8_t verbose_level=0, const bool probe_relative=true, const bool sanity_check=true, - const float z_min_point=Z_PROBE_LOW_POINT, const float z_clearance=Z_TWEEN_SAFE_CLEARANCE + const float z_min_point=Z_PROBE_LOW_POINT, float z_clearance=Z_TWEEN_SAFE_CLEARANCE, const bool lift_relative=false ) { - return probe_at_point(pos.x, pos.y, raise_after, verbose_level, probe_relative, sanity_check, z_min_point, z_clearance); + return probe_at_point(pos.x, pos.y, raise_after, verbose_level, probe_relative, sanity_check, z_min_point, z_clearance, lift_relative); } #else // !HAS_BED_PROBE