diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index cf6c560b5cc7..5c149cee89e1 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -190,22 +190,22 @@ #define XY_CENTER { X_CENTER, Y_CENTER } #endif #if HAS_I_AXIS - #define I_CENTER TERN(BED_CENTER_AT_0_0, 0, _I_HALF_BED) + #define I_CENTER _I_HALF_BED #endif #if HAS_J_AXIS - #define J_CENTER TERN(BED_CENTER_AT_0_0, 0, _J_HALF_BED) + #define J_CENTER _J_HALF_BED #endif #if HAS_K_AXIS - #define K_CENTER TERN(BED_CENTER_AT_0_0, 0, _K_HALF_BED) + #define K_CENTER _K_HALF_BED #endif #if HAS_U_AXIS - #define U_CENTER TERN(BED_CENTER_AT_0_0, 0, _U_HALF_BED) + #define U_CENTER _U_HALF_BED #endif #if HAS_V_AXIS - #define V_CENTER TERN(BED_CENTER_AT_0_0, 0, _V_HALF_BED) + #define V_CENTER _V_HALF_BED #endif #if HAS_W_AXIS - #define W_CENTER TERN(BED_CENTER_AT_0_0, 0, _W_HALF_BED) + #define W_CENTER _W_HALF_BED #endif // Get the linear boundaries of the bed diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index dc8c8a22cc36..ec1c1a647578 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -1580,18 +1580,18 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #endif /** - * Features that require a min/max/specific NUM_AXES + * Features that require a min/max/specific steppers / axes to be enabled. */ #if HAS_LEVELING && !HAS_Z_AXIS #error "Leveling in Marlin requires three or more axes, with Z as the vertical axis." #elif ENABLED(CNC_WORKSPACE_PLANES) && !HAS_Z_AXIS - #error "CNC_WORKSPACE_PLANES currently requires NUM_AXES >= 3" + #error "CNC_WORKSPACE_PLANES currently requires a Z axis" #elif ENABLED(DIRECT_STEPPING) && NUM_AXES > XYZ - #error "DIRECT_STEPPING currently requires NUM_AXES 3" -#elif ENABLED(FOAMCUTTER_XYUV) && NUM_AXES < 5 - #error "FOAMCUTTER_XYUV requires NUM_AXES >= 5." + #error "DIRECT_STEPPING does not currently support more than 3 axes (i.e., XYZ)." +#elif ENABLED(FOAMCUTTER_XYUV) && !(HAS_I_AXIS && HAS_J_AXIS) + #error "FOAMCUTTER_XYUV requires I and J steppers to be enabled." #elif ENABLED(LINEAR_ADVANCE) && HAS_I_AXIS - #error "LINEAR_ADVANCE currently requires NUM_AXES <= 3." + #error "LINEAR_ADVANCE does not currently support the inclusion of an I axis." #endif /** @@ -1599,11 +1599,13 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS */ #if HAS_I_AXIS #if !defined(I_MIN_POS) || !defined(I_MAX_POS) - #error "I_MIN_POS and I_MAX_POS are required with NUM_AXES >= 4." + #error "I_MIN_POS and I_MAX_POS are required for the I axis." #elif !defined(I_HOME_DIR) - #error "I_HOME_DIR is required with NUM_AXES >= 4." + #error "I_HOME_DIR is required for the I axis." #elif HAS_I_ENABLE && !defined(I_ENABLE_ON) - #error "I_ENABLE_ON is required for your I driver with NUM_AXES >= 4." + #error "I_ENABLE_ON is required for the I stepper." + #elif !defined(INVERT_I_DIR) + #error "INVERT_I_DIR is required for the I stepper." #endif #endif #if HAS_J_AXIS @@ -1612,11 +1614,13 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #elif ENABLED(AXIS5_ROTATES) && DISABLED(AXIS4_ROTATES) #error "AXIS5_ROTATES requires AXIS4_ROTATES." #elif !defined(J_MIN_POS) || !defined(J_MAX_POS) - #error "J_MIN_POS and J_MAX_POS are required with NUM_AXES >= 5." + #error "J_MIN_POS and J_MAX_POS are required for the J axis." #elif !defined(J_HOME_DIR) - #error "J_HOME_DIR is required with NUM_AXES >= 5." + #error "J_HOME_DIR is required for the J axis." #elif HAS_J_ENABLE && !defined(J_ENABLE_ON) - #error "J_ENABLE_ON is required for your J driver with NUM_AXES >= 5." + #error "J_ENABLE_ON is required for the J stepper." + #elif !defined(INVERT_J_DIR) + #error "INVERT_J_DIR is required for the J stepper." #endif #endif #if HAS_K_AXIS @@ -1625,11 +1629,13 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #elif ENABLED(AXIS6_ROTATES) && DISABLED(AXIS5_ROTATES) #error "AXIS6_ROTATES requires AXIS5_ROTATES." #elif !defined(K_MIN_POS) || !defined(K_MAX_POS) - #error "K_MIN_POS and K_MAX_POS are required with NUM_AXES >= 6." + #error "K_MIN_POS and K_MAX_POS are required for the K axis." #elif !defined(K_HOME_DIR) - #error "K_HOME_DIR is required with NUM_AXES >= 6." + #error "K_HOME_DIR is required for the K axis." #elif HAS_K_ENABLE && !defined(K_ENABLE_ON) - #error "K_ENABLE_ON is required for your K driver with NUM_AXES >= 6." + #error "K_ENABLE_ON is required for the K stepper." + #elif !defined(INVERT_K_DIR) + #error "INVERT_K_DIR is required for the K stepper." #endif #endif #if HAS_U_AXIS @@ -1638,11 +1644,13 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #elif ENABLED(AXIS7_ROTATES) && DISABLED(AXIS6_ROTATES) #error "AXIS7_ROTATES requires AXIS6_ROTATES." #elif !defined(U_MIN_POS) || !defined(U_MAX_POS) - #error "U_MIN_POS and U_MAX_POS are required with NUM_AXES >= 7." + #error "U_MIN_POS and U_MAX_POS are required for the U axis." #elif !defined(U_HOME_DIR) - #error "U_HOME_DIR is required with NUM_AXES >= 7." + #error "U_HOME_DIR is required for the U axis." #elif HAS_U_ENABLE && !defined(U_ENABLE_ON) - #error "U_ENABLE_ON is required for your U driver with NUM_AXES >= 7." + #error "U_ENABLE_ON is required for the U stepper." + #elif !defined(INVERT_U_DIR) + #error "INVERT_U_DIR is required for the U stepper." #endif #endif #if HAS_V_AXIS @@ -1651,11 +1659,13 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #elif ENABLED(AXIS8_ROTATES) && DISABLED(AXIS7_ROTATES) #error "AXIS8_ROTATES requires AXIS7_ROTATES." #elif !defined(V_MIN_POS) || !defined(V_MAX_POS) - #error "V_MIN_POS and V_MAX_POS are required with NUM_AXES >= 8." + #error "V_MIN_POS and V_MAX_POS are required for the V axis." #elif !defined(V_HOME_DIR) - #error "V_HOME_DIR is required with NUM_AXES >= 8." + #error "V_HOME_DIR is required for the V axis." #elif HAS_V_ENABLE && !defined(V_ENABLE_ON) - #error "V_ENABLE_ON is required for your V driver with NUM_AXES >= 8." + #error "V_ENABLE_ON is required for the V stepper." + #elif !defined(INVERT_V_DIR) + #error "INVERT_V_DIR is required for the V stepper." #endif #endif #if HAS_W_AXIS @@ -1664,11 +1674,13 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS #elif ENABLED(AXIS9_ROTATES) && DISABLED(AXIS8_ROTATES) #error "AXIS9_ROTATES requires AXIS8_ROTATES." #elif !defined(W_MIN_POS) || !defined(W_MAX_POS) - #error "W_MIN_POS and W_MAX_POS are required with NUM_AXES >= 9." + #error "W_MIN_POS and W_MAX_POS are required for the W axis." #elif !defined(W_HOME_DIR) - #error "W_HOME_DIR is required with NUM_AXES >= 9." + #error "W_HOME_DIR is required for the W axis." #elif HAS_W_ENABLE && !defined(W_ENABLE_ON) - #error "W_ENABLE_ON is required for your W driver with NUM_AXES >= 9." + #error "W_ENABLE_ON is required for the W stepper." + #elif !defined(INVERT_W_DIR) + #error "INVERT_W_DIR is required for the W stepper." #endif #endif