Skip to content

Commit 7e79fc5

Browse files
committed
🩹 Safe Bed Leveling updates
1 parent 23e2cb0 commit 7e79fc5

File tree

5 files changed

+59
-14
lines changed

5 files changed

+59
-14
lines changed

Marlin/src/feature/bedlevel/ubl/ubl_G29.cpp

+28-6
Original file line numberDiff line numberDiff line change
@@ -318,9 +318,7 @@ void unified_bed_leveling::G29() {
318318
TERN_(HAS_MULTI_HOTEND, if (active_extruder != 0) tool_change(0, true));
319319

320320
// Position bed horizontally and Z probe vertically.
321-
#if defined(SAFE_BED_LEVELING_START_X) || defined(SAFE_BED_LEVELING_START_Y) || defined(SAFE_BED_LEVELING_START_Z) \
322-
|| defined(SAFE_BED_LEVELING_START_I) || defined(SAFE_BED_LEVELING_START_J) || defined(SAFE_BED_LEVELING_START_K) \
323-
|| defined(SAFE_BED_LEVELING_START_U) || defined(SAFE_BED_LEVELING_START_V) || defined(SAFE_BED_LEVELING_START_W)
321+
#if HAS_SAFE_BED_LEVELING
324322
xyze_pos_t safe_position = current_position;
325323
#ifdef SAFE_BED_LEVELING_START_X
326324
safe_position.x = SAFE_BED_LEVELING_START_X;
@@ -351,7 +349,7 @@ void unified_bed_leveling::G29() {
351349
#endif
352350

353351
do_blocking_move_to(safe_position);
354-
#endif
352+
#endif // HAS_SAFE_BED_LEVELING
355353
}
356354

357355
// Invalidate one or more nearby mesh points, possibly all.
@@ -887,8 +885,32 @@ void set_message_with_feedback(FSTR_P const fstr) {
887885
ui.capture();
888886
save_ubl_active_state_and_disable(); // Disable bed level correction for probing
889887

890-
do_blocking_move_to(0.5f * (MESH_MAX_X - (MESH_MIN_X)), 0.5f * (MESH_MAX_Y - (MESH_MIN_Y)), MANUAL_PROBE_START_Z);
891-
//, _MIN(planner.settings.max_feedrate_mm_s[X_AXIS], planner.settings.max_feedrate_mm_s[Y_AXIS]) * 0.5f);
888+
do_blocking_move_to(
889+
NUM_AXIS_LIST(
890+
0.5f * ((MESH_MAX_X) - (MESH_MIN_X)),
891+
0.5f * ((MESH_MAX_Y) - (MESH_MIN_Y)),
892+
MANUAL_PROBE_START_Z
893+
#ifdef SAFE_BED_LEVELING_START_I
894+
, SAFE_BED_LEVELING_START_I
895+
#endif
896+
#ifdef SAFE_BED_LEVELING_START_J
897+
, SAFE_BED_LEVELING_START_J
898+
#endif
899+
#ifdef SAFE_BED_LEVELING_START_K
900+
, SAFE_BED_LEVELING_START_K
901+
#endif
902+
#ifdef SAFE_BED_LEVELING_START_U
903+
, SAFE_BED_LEVELING_START_U
904+
#endif
905+
#ifdef SAFE_BED_LEVELING_START_V
906+
, SAFE_BED_LEVELING_START_V
907+
#endif
908+
#ifdef SAFE_BED_LEVELING_START_W
909+
, SAFE_BED_LEVELING_START_W
910+
#endif
911+
)
912+
//, _MIN(planner.settings.max_feedrate_mm_s[X_AXIS], planner.settings.max_feedrate_mm_s[Y_AXIS]) * 0.5f
913+
);
892914
planner.synchronize();
893915

894916
SERIAL_ECHOPGM("Place shim under nozzle");

Marlin/src/gcode/bedlevel/abl/G29.cpp

+2-4
Original file line numberDiff line numberDiff line change
@@ -453,9 +453,7 @@ G29_TYPE GcodeSuite::G29() {
453453
}
454454

455455
// Position bed horizontally and Z probe vertically.
456-
#if defined(SAFE_BED_LEVELING_START_X) || defined(SAFE_BED_LEVELING_START_Y) || defined(SAFE_BED_LEVELING_START_Z) \
457-
|| defined(SAFE_BED_LEVELING_START_I) || defined(SAFE_BED_LEVELING_START_J) || defined(SAFE_BED_LEVELING_START_K) \
458-
|| defined(SAFE_BED_LEVELING_START_U) || defined(SAFE_BED_LEVELING_START_V) || defined(SAFE_BED_LEVELING_START_W)
456+
#if HAS_SAFE_BED_LEVELING
459457
xyze_pos_t safe_position = current_position;
460458
#ifdef SAFE_BED_LEVELING_START_X
461459
safe_position.x = SAFE_BED_LEVELING_START_X;
@@ -486,7 +484,7 @@ G29_TYPE GcodeSuite::G29() {
486484
#endif
487485

488486
do_blocking_move_to(safe_position);
489-
#endif
487+
#endif // HAS_SAFE_BED_LEVELING
490488

491489
// Disable auto bed leveling during G29.
492490
// Be formal so G29 can be done successively without G28.

Marlin/src/gcode/bedlevel/mbl/G29.cpp

+2-4
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,7 @@ void GcodeSuite::G29() {
108108
TERN_(DWIN_LCD_PROUI, DWIN_LevelingStart());
109109

110110
// Position bed horizontally and Z probe vertically.
111-
#if defined(SAFE_BED_LEVELING_START_X) || defined(SAFE_BED_LEVELING_START_Y) || defined(SAFE_BED_LEVELING_START_Z) \
112-
|| defined(SAFE_BED_LEVELING_START_I) || defined(SAFE_BED_LEVELING_START_J) || defined(SAFE_BED_LEVELING_START_K) \
113-
|| defined(SAFE_BED_LEVELING_START_U) || defined(SAFE_BED_LEVELING_START_V) || defined(SAFE_BED_LEVELING_START_W)
111+
#if HAS_SAFE_BED_LEVELING
114112
xyze_pos_t safe_position = current_position;
115113
#ifdef SAFE_BED_LEVELING_START_X
116114
safe_position.x = SAFE_BED_LEVELING_START_X;
@@ -141,7 +139,7 @@ void GcodeSuite::G29() {
141139
#endif
142140

143141
do_blocking_move_to(safe_position);
144-
#endif
142+
#endif // HAS_SAFE_BED_LEVELING
145143

146144
return;
147145
}

Marlin/src/inc/Conditionals_adv.h

+6
Original file line numberDiff line numberDiff line change
@@ -1038,6 +1038,12 @@
10381038
#endif
10391039
#endif
10401040

1041+
#if defined(SAFE_BED_LEVELING_START_X) || defined(SAFE_BED_LEVELING_START_Y) || defined(SAFE_BED_LEVELING_START_Z) \
1042+
|| defined(SAFE_BED_LEVELING_START_I) || defined(SAFE_BED_LEVELING_START_J) || defined(SAFE_BED_LEVELING_START_K) \
1043+
|| defined(SAFE_BED_LEVELING_START_U) || defined(SAFE_BED_LEVELING_START_V) || defined(SAFE_BED_LEVELING_START_W)
1044+
#define HAS_SAFE_BED_LEVELING 1
1045+
#endif
1046+
10411047
//
10421048
// SD Card connection methods
10431049
// Defined here so pins and sanity checks can use them

Marlin/src/inc/SanityCheck.h

+21
Original file line numberDiff line numberDiff line change
@@ -2197,6 +2197,27 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS
21972197
static_assert(WITHIN(Z_SAFE_HOMING_Y_POINT, Y_MIN_POS, Y_MAX_POS), "Z_SAFE_HOMING_Y_POINT can't be reached by the nozzle.");
21982198
#endif
21992199

2200+
// Check Safe Bed Leveling settings
2201+
#if HAS_SAFE_BED_LEVELING
2202+
#if defined(SAFE_BED_LEVELING_START_Y) && !defined(SAFE_BED_LEVELING_START_X)
2203+
#error "If SAFE_BED_LEVELING_START_Y is defined, SAFE_BED_LEVELING_START_X must also be defined."
2204+
#elif defined(SAFE_BED_LEVELING_START_Z) && !defined(SAFE_BED_LEVELING_START_Y)
2205+
#error "If SAFE_BED_LEVELING_START_Z is defined, SAFE_BED_LEVELING_START_Y must also be defined."
2206+
#elif defined(SAFE_BED_LEVELING_START_I) && !defined(SAFE_BED_LEVELING_START_Z)
2207+
#error "If SAFE_BED_LEVELING_START_I is defined, SAFE_BED_LEVELING_START_Z must also be defined."
2208+
#elif defined(SAFE_BED_LEVELING_START_J) && !defined(SAFE_BED_LEVELING_START_I)
2209+
#error "If SAFE_BED_LEVELING_START_J is defined, SAFE_BED_LEVELING_START_I must also be defined."
2210+
#elif defined(SAFE_BED_LEVELING_START_K) && !defined(SAFE_BED_LEVELING_START_J)
2211+
#error "If SAFE_BED_LEVELING_START_K is defined, SAFE_BED_LEVELING_START_J must also be defined."
2212+
#elif defined(SAFE_BED_LEVELING_START_U) && !defined(SAFE_BED_LEVELING_START_K)
2213+
#error "If SAFE_BED_LEVELING_START_U is defined, SAFE_BED_LEVELING_START_K must also be defined."
2214+
#elif defined(SAFE_BED_LEVELING_START_V) && !defined(SAFE_BED_LEVELING_START_U)
2215+
#error "If SAFE_BED_LEVELING_START_V is defined, SAFE_BED_LEVELING_START_U must also be defined."
2216+
#elif defined(SAFE_BED_LEVELING_START_W) && !defined(SAFE_BED_LEVELING_START_V)
2217+
#error "If SAFE_BED_LEVELING_START_W is defined, SAFE_BED_LEVELING_START_V must also be defined."
2218+
#endif
2219+
#endif
2220+
22002221
/**
22012222
* Make sure DISABLE_[XYZ] compatible with selected homing options
22022223
*/

0 commit comments

Comments
 (0)