diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index cb6487afae..2473e8c7e8 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -1020,6 +1020,8 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS #error "ENABLE_LEVELING_FADE_HEIGHT on DELTA requires AUTO_BED_LEVELING_BILINEAR or AUTO_BED_LEVELING_UBL." #elif ENABLED(DELTA_AUTO_CALIBRATION) && !(HAS_BED_PROBE || HAS_LCD_MENU) #error "DELTA_AUTO_CALIBRATION requires a probe or LCD Controller." + #elif ENABLED(DELTA_CALIBRATION_MENU) && !HAS_LCD_MENU + #error "DELTA_CALIBRATION_MENU requires an LCD Controller." #elif ABL_GRID #if (GRID_MAX_POINTS_X & 1) == 0 || (GRID_MAX_POINTS_Y & 1) == 0 #error "DELTA requires GRID_MAX_POINTS_X and GRID_MAX_POINTS_Y to be odd numbers." diff --git a/Marlin/src/module/delta.cpp b/Marlin/src/module/delta.cpp index 9a57442759..bc547f6159 100644 --- a/Marlin/src/module/delta.cpp +++ b/Marlin/src/module/delta.cpp @@ -86,13 +86,23 @@ void recalc_delta_settings() { * Get a safe radius for calibration */ -#if ENABLED(DELTA_AUTO_CALIBRATION) - float calibration_radius_factor = 1; -#endif +#if EITHER(DELTA_AUTO_CALIBRATION, DELTA_CALIBRATION_MENU) -float delta_calibration_radius() { - return FLOOR((DELTA_PRINTABLE_RADIUS - _MAX(HYPOT(probe_offset_xy.x, probe_offset_xy.y), MIN_PROBE_EDGE)) * calibration_radius_factor); -} + #if ENABLED(DELTA_AUTO_CALIBRATION) + float calibration_radius_factor = 1; + #endif + + float delta_calibration_radius() { + return calibration_radius_factor * ( + #if HAS_BED_PROBE + FLOOR((DELTA_PRINTABLE_RADIUS) - _MAX(HYPOT(probe_offset_xy.x, probe_offset_xy.y), MIN_PROBE_EDGE)) + #else + DELTA_PRINTABLE_RADIUS + #endif + ); + } + +#endif /** * Delta Inverse Kinematics diff --git a/Marlin/src/module/delta.h b/Marlin/src/module/delta.h index 17cd330686..3f61907e51 100644 --- a/Marlin/src/module/delta.h +++ b/Marlin/src/module/delta.h @@ -52,7 +52,9 @@ void recalc_delta_settings(); constexpr float calibration_radius_factor = 1; #endif -float delta_calibration_radius(); +#if EITHER(DELTA_AUTO_CALIBRATION, DELTA_CALIBRATION_MENU) + float delta_calibration_radius(); +#endif /** * Delta Inverse Kinematics diff --git a/buildroot/share/tests/megaatmega2560-tests b/buildroot/share/tests/megaatmega2560-tests index f5929237d7..16db670225 100755 --- a/buildroot/share/tests/megaatmega2560-tests +++ b/buildroot/share/tests/megaatmega2560-tests @@ -309,6 +309,13 @@ opt_enable AUTO_BED_LEVELING_UBL RESTORE_LEVELING_AFTER_G28 Z_PROBE_ALLEN_KEY EE OLED_PANEL_TINYBOY2 MESH_EDIT_GFX_OVERLAY exec_test $1 $2 "RAMPS | DELTA | OLED_PANEL_TINYBOY2 | UBL | Allen Key | EEPROM" +# +# Delta Config (generic) + Probeless +# +use_example_configs delta/generic +opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER DELTA_AUTO_CALIBRATION DELTA_CALIBRATION_MENU +exec_test $1 $2 "RAMPS | DELTA | RRD LCD | DELTA_AUTO_CALIBRATION | DELTA_CALIBRATION_MENU" + # # Delta Config (FLSUN AC because it's complex) #