✨ Probe XY Offset value limits (#26267)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
0d42196d11
commit
cb044d989c
@@ -1418,20 +1418,15 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Check for improper NOZZLE_TO_PROBE_OFFSET
|
||||
* Check for improper PROBING_MARGIN
|
||||
*/
|
||||
constexpr xyz_pos_t sanity_nozzle_to_probe_offset = NOZZLE_TO_PROBE_OFFSET;
|
||||
#if ENABLED(NOZZLE_AS_PROBE)
|
||||
static_assert(sanity_nozzle_to_probe_offset.x == 0 && sanity_nozzle_to_probe_offset.y == 0,
|
||||
"NOZZLE_AS_PROBE requires the XY offsets in NOZZLE_TO_PROBE_OFFSET to both be 0.");
|
||||
#elif !IS_KINEMATIC
|
||||
#if NONE(NOZZLE_AS_PROBE, IS_KINEMATIC)
|
||||
static_assert(PROBING_MARGIN >= 0, "PROBING_MARGIN must be >= 0.");
|
||||
static_assert(PROBING_MARGIN_BACK >= 0, "PROBING_MARGIN_BACK must be >= 0.");
|
||||
static_assert(PROBING_MARGIN_FRONT >= 0, "PROBING_MARGIN_FRONT must be >= 0.");
|
||||
static_assert(PROBING_MARGIN_LEFT >= 0, "PROBING_MARGIN_LEFT must be >= 0.");
|
||||
static_assert(PROBING_MARGIN_RIGHT >= 0, "PROBING_MARGIN_RIGHT must be >= 0.");
|
||||
#endif
|
||||
|
||||
#define _MARGIN(A) TERN(IS_KINEMATIC, PRINTABLE_RADIUS, ((A##_BED_SIZE) / 2))
|
||||
static_assert(PROBING_MARGIN < _MARGIN(X), "PROBING_MARGIN is too large.");
|
||||
static_assert(PROBING_MARGIN_BACK < _MARGIN(Y), "PROBING_MARGIN_BACK is too large.");
|
||||
@@ -1440,6 +1435,34 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L
|
||||
static_assert(PROBING_MARGIN_RIGHT < _MARGIN(X), "PROBING_MARGIN_RIGHT is too large.");
|
||||
#undef _MARGIN
|
||||
|
||||
/**
|
||||
* Check for improper PROBE_OFFSET_[XYZ](MIN|MAX)
|
||||
*/
|
||||
#define PROBE_OFFSET_ASSERT(varname, x, min, max) static_assert(WITHIN(x, min, max), varname " must be within " STRINGIFY(min) " and " STRINGIFY(max))
|
||||
#if HAS_PROBE_XY_OFFSET
|
||||
PROBE_OFFSET_ASSERT("PROBE_OFFSET_XMIN", PROBE_OFFSET_XMIN, -(X_BED_SIZE), X_BED_SIZE);
|
||||
PROBE_OFFSET_ASSERT("PROBE_OFFSET_XMAX", PROBE_OFFSET_XMAX, -(X_BED_SIZE), X_BED_SIZE);
|
||||
PROBE_OFFSET_ASSERT("PROBE_OFFSET_YMIN", PROBE_OFFSET_YMIN, -(Y_BED_SIZE), Y_BED_SIZE);
|
||||
PROBE_OFFSET_ASSERT("PROBE_OFFSET_YMAX", PROBE_OFFSET_YMAX, -(Y_BED_SIZE), Y_BED_SIZE);
|
||||
#endif
|
||||
PROBE_OFFSET_ASSERT("PROBE_OFFSET_ZMIN", PROBE_OFFSET_ZMIN, -20, 20);
|
||||
PROBE_OFFSET_ASSERT("PROBE_OFFSET_ZMAX", PROBE_OFFSET_ZMAX, -20, 20);
|
||||
|
||||
/**
|
||||
* Check for improper NOZZLE_AS_PROBE or NOZZLE_TO_PROBE_OFFSET
|
||||
*/
|
||||
constexpr xyz_pos_t sanity_nozzle_to_probe_offset = NOZZLE_TO_PROBE_OFFSET;
|
||||
#if ENABLED(NOZZLE_AS_PROBE)
|
||||
static_assert(sanity_nozzle_to_probe_offset.x == 0 && sanity_nozzle_to_probe_offset.y == 0,
|
||||
"NOZZLE_AS_PROBE requires the XY offsets in NOZZLE_TO_PROBE_OFFSET to both be 0.");
|
||||
#endif
|
||||
#if HAS_PROBE_XY_OFFSET
|
||||
PROBE_OFFSET_ASSERT("NOZZLE_TO_PROBE_OFFSET.x", sanity_nozzle_to_probe_offset.x, PROBE_OFFSET_XMIN, PROBE_OFFSET_XMAX);
|
||||
PROBE_OFFSET_ASSERT("NOZZLE_TO_PROBE_OFFSET.y", sanity_nozzle_to_probe_offset.y, PROBE_OFFSET_YMIN, PROBE_OFFSET_YMAX);
|
||||
#endif
|
||||
PROBE_OFFSET_ASSERT("NOZZLE_TO_PROBE_OFFSET.z", sanity_nozzle_to_probe_offset.z, PROBE_OFFSET_ZMIN, PROBE_OFFSET_ZMAX);
|
||||
#undef PROBE_OFFSET_ASSERT
|
||||
|
||||
/**
|
||||
* Make sure Z raise values are set
|
||||
*/
|
||||
|
Reference in New Issue
Block a user