50
50
// "Motion" > "Move Axis" submenu
51
51
//
52
52
53
- void lcd_move_axis (const AxisEnum axis) {
53
+ // TODO: Use substitution here with MSG_MOVE_N
54
+ static void _lcd_move_xyz (FSTR_P const name, const AxisEnum axis) {
54
55
if (ui.use_click ()) return ui.goto_previous_screen_no_defer ();
55
56
if (ui.encoderPosition && !ui.manual_move .processing ) {
56
57
// Get motion limit from software endstops, if any
@@ -77,19 +78,41 @@ void lcd_move_axis(const AxisEnum axis) {
77
78
const float pos = ui.manual_move .axis_value (axis);
78
79
if (parser.using_inch_units ()) {
79
80
const float imp_pos = LINEAR_UNIT (pos);
80
- MenuEditItemBase::draw_edit_screen (GET_TEXT_F (MSG_MOVE_N) , ftostr63 (imp_pos));
81
+ MenuEditItemBase::draw_edit_screen (name , ftostr63 (imp_pos));
81
82
}
82
83
else
83
- MenuEditItemBase::draw_edit_screen (GET_TEXT_F (MSG_MOVE_N) , ui.manual_move .menu_scale >= 0 .1f ? (LARGE_AREA_TEST ? ftostr51sign (pos) : ftostr41sign (pos)) : ftostr63 (pos));
84
+ MenuEditItemBase::draw_edit_screen (name , ui.manual_move .menu_scale >= 0 .1f ? (LARGE_AREA_TEST ? ftostr51sign (pos) : ftostr41sign (pos)) : ftostr63 (pos));
84
85
}
85
86
}
86
-
87
- // Move Z easy accessor
88
- void lcd_move_z () { lcd_move_axis (Z_AXIS); }
87
+ void lcd_move_X () { _lcd_move_xyz (GET_TEXT_F (MSG_MOVE_X), X_AXIS); }
88
+ #if HAS_Y_AXIS
89
+ void lcd_move_Y () { _lcd_move_xyz (GET_TEXT_F (MSG_MOVE_Y), Y_AXIS); }
90
+ #endif
91
+ #if HAS_Z_AXIS
92
+ void lcd_move_Z () { _lcd_move_xyz (GET_TEXT_F (MSG_MOVE_Z), Z_AXIS); }
93
+ #endif
94
+ #if HAS_I_AXIS
95
+ void lcd_move_I () { _lcd_move_xyz (GET_TEXT_F (MSG_MOVE_I), I_AXIS); }
96
+ #endif
97
+ #if HAS_J_AXIS
98
+ void lcd_move_J () { _lcd_move_xyz (GET_TEXT_F (MSG_MOVE_J), J_AXIS); }
99
+ #endif
100
+ #if HAS_K_AXIS
101
+ void lcd_move_K () { _lcd_move_xyz (GET_TEXT_F (MSG_MOVE_K), K_AXIS); }
102
+ #endif
103
+ #if HAS_U_AXIS
104
+ void lcd_move_U () { _lcd_move_xyz (GET_TEXT_F (MSG_MOVE_U), U_AXIS); }
105
+ #endif
106
+ #if HAS_V_AXIS
107
+ void lcd_move_V () { _lcd_move_xyz (GET_TEXT_F (MSG_MOVE_V), V_AXIS); }
108
+ #endif
109
+ #if HAS_W_AXIS
110
+ void lcd_move_W () { _lcd_move_xyz (GET_TEXT_F (MSG_MOVE_W), W_AXIS); }
111
+ #endif
89
112
90
113
#if E_MANUAL
91
114
92
- static void lcd_move_e (TERN_(MULTI_E_MANUAL, const int8_t eindex=active_extruder)) {
115
+ static void lcd_move_E (TERN_(MULTI_E_MANUAL, const int8_t eindex=active_extruder)) {
93
116
if (ui.use_click ()) return ui.goto_previous_screen_no_defer ();
94
117
if (ui.encoderPosition ) {
95
118
if (!ui.manual_move .processing ) {
@@ -118,7 +141,7 @@ void lcd_move_z() { lcd_move_axis(Z_AXIS); }
118
141
119
142
void _goto_manual_move_z (const_float_t scale) {
120
143
ui.manual_move .menu_scale = scale;
121
- ui.goto_screen (lcd_move_z );
144
+ ui.goto_screen (lcd_move_Z );
122
145
}
123
146
124
147
#endif
@@ -171,7 +194,7 @@ void _menu_move_distance(const AxisEnum axis, const screenFunc_t func, const int
171
194
#if E_MANUAL
172
195
173
196
inline void _goto_menu_move_distance_e () {
174
- ui.goto_screen ([]{ _menu_move_distance (E_AXIS, []{ lcd_move_e (); }); });
197
+ ui.goto_screen ([]{ _menu_move_distance (E_AXIS, []{ lcd_move_E (); }); });
175
198
}
176
199
177
200
inline void _menu_move_distance_e_maybe () {
@@ -201,19 +224,37 @@ void menu_move() {
201
224
// Move submenu for each axis
202
225
if (NONE (IS_KINEMATIC, NO_MOTION_BEFORE_HOMING) || all_axes_homed ()) {
203
226
if (TERN1 (DELTA, current_position.z <= delta_clip_start_height)) {
204
- SUBMENU_N (X_AXIS, MSG_MOVE_N, []{ _menu_move_distance (X_AXIS, []{ lcd_move_axis (X_AXIS); } ); });
227
+ SUBMENU_N (X_AXIS, MSG_MOVE_N, []{ _menu_move_distance (X_AXIS, lcd_move_X ); });
205
228
#if HAS_Y_AXIS
206
- SUBMENU_N (Y_AXIS, MSG_MOVE_N, []{ _menu_move_distance (Y_AXIS, []{ lcd_move_axis (Y_AXIS); } ); });
229
+ SUBMENU_N (Y_AXIS, MSG_MOVE_N, []{ _menu_move_distance (Y_AXIS, lcd_move_Y ); });
207
230
#endif
208
231
}
209
232
else {
210
233
#if ENABLED(DELTA)
211
234
ACTION_ITEM (MSG_FREE_XY, []{ line_to_z (delta_clip_start_height); ui.synchronize (); });
212
235
#endif
213
236
}
237
+
214
238
#if HAS_Z_AXIS
215
- #define _AXIS_MOVE (N ) SUBMENU_N(N, MSG_MOVE_N, []{ _menu_move_distance (AxisEnum (N), []{ lcd_move_axis (AxisEnum (N)); }); });
216
- REPEAT_S (2 , NUM_AXES, _AXIS_MOVE);
239
+ SUBMENU_N (Z_AXIS, MSG_MOVE_N, []{ _menu_move_distance (Z_AXIS, lcd_move_Z); });
240
+ #endif
241
+ #if HAS_I_AXIS
242
+ SUBMENU_N (I_AXIS, MSG_MOVE_N, []{ _menu_move_distance (I_AXIS, lcd_move_I); });
243
+ #endif
244
+ #if HAS_J_AXIS
245
+ SUBMENU_N (J_AXIS, MSG_MOVE_N, []{ _menu_move_distance (J_AXIS, lcd_move_J); });
246
+ #endif
247
+ #if HAS_K_AXIS
248
+ SUBMENU_N (K_AXIS, MSG_MOVE_N, []{ _menu_move_distance (K_AXIS, lcd_move_K); });
249
+ #endif
250
+ #if HAS_U_AXIS
251
+ SUBMENU_N (U_AXIS, MSG_MOVE_N, []{ _menu_move_distance (U_AXIS, lcd_move_U); });
252
+ #endif
253
+ #if HAS_V_AXIS
254
+ SUBMENU_N (V_AXIS, MSG_MOVE_N, []{ _menu_move_distance (V_AXIS, lcd_move_V); });
255
+ #endif
256
+ #if HAS_W_AXIS
257
+ SUBMENU_N (W_AXIS, MSG_MOVE_N, []{ _menu_move_distance (W_AXIS, lcd_move_W); });
217
258
#endif
218
259
}
219
260
else
@@ -260,7 +301,7 @@ void menu_move() {
260
301
// The current extruder
261
302
SUBMENU (MSG_MOVE_E, _menu_move_distance_e_maybe);
262
303
263
- #define SUBMENU_MOVE_E (N ) SUBMENU_N(N, MSG_MOVE_EN, []{ _menu_move_distance (E_AXIS, []{ lcd_move_e (N); }, N); });
304
+ #define SUBMENU_MOVE_E (N ) SUBMENU_N(N, MSG_MOVE_EN, []{ _menu_move_distance (E_AXIS, []{ lcd_move_E (N); }, N); });
264
305
265
306
#if EITHER(SWITCHING_EXTRUDER, SWITCHING_NOZZLE)
266
307
0 commit comments