Add ALL_AXES manual move for UBL mesh editing
Co-Authored-By: Jason Smith <20053467+sjasonsmith@users.noreply.github.com> #20620
This commit is contained in:
parent
87d32647f1
commit
1d63fe6542
|
@ -684,8 +684,11 @@ void MarlinUI::quick_feedback(const bool clear_buttons/*=true*/) {
|
||||||
|
|
||||||
millis_t ManualMove::start_time = 0;
|
millis_t ManualMove::start_time = 0;
|
||||||
float ManualMove::menu_scale = 1;
|
float ManualMove::menu_scale = 1;
|
||||||
TERN_(IS_KINEMATIC, float ManualMove::offset = 0);
|
#if IS_KINEMATIC
|
||||||
TERN_(IS_KINEMATIC, bool ManualMove::processing = false);
|
float ManualMove::offset = 0;
|
||||||
|
xyze_pos_t ManualMove::all_axes_destination = { 0 };
|
||||||
|
bool ManualMove::processing = false;
|
||||||
|
#endif
|
||||||
TERN_(MULTI_MANUAL, int8_t ManualMove::e_index = 0);
|
TERN_(MULTI_MANUAL, int8_t ManualMove::e_index = 0);
|
||||||
AxisEnum ManualMove::axis = NO_AXIS;
|
AxisEnum ManualMove::axis = NO_AXIS;
|
||||||
|
|
||||||
|
@ -725,8 +728,12 @@ void MarlinUI::quick_feedback(const bool clear_buttons/*=true*/) {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Apply a linear offset to a single axis
|
// Apply a linear offset to a single axis
|
||||||
|
if (axis == ALL_AXES)
|
||||||
|
destination = all_axes_destination;
|
||||||
|
else if (axis <= XYZE) {
|
||||||
destination = current_position;
|
destination = current_position;
|
||||||
if (axis <= XYZE) destination[axis] += offset;
|
destination[axis] += offset;
|
||||||
|
}
|
||||||
|
|
||||||
// Reset for the next move
|
// Reset for the next move
|
||||||
offset = 0;
|
offset = 0;
|
||||||
|
|
|
@ -23,6 +23,8 @@
|
||||||
|
|
||||||
#include "../inc/MarlinConfig.h"
|
#include "../inc/MarlinConfig.h"
|
||||||
|
|
||||||
|
#include "../module/motion.h"
|
||||||
|
|
||||||
#if HAS_BUZZER
|
#if HAS_BUZZER
|
||||||
#include "../libs/buzzer.h"
|
#include "../libs/buzzer.h"
|
||||||
#endif
|
#endif
|
||||||
|
@ -270,9 +272,22 @@
|
||||||
static int8_t constexpr e_index = 0;
|
static int8_t constexpr e_index = 0;
|
||||||
#endif
|
#endif
|
||||||
static millis_t start_time;
|
static millis_t start_time;
|
||||||
|
TERN_(IS_KINEMATIC, static xyze_pos_t all_axes_destination);
|
||||||
public:
|
public:
|
||||||
static float menu_scale;
|
static float menu_scale;
|
||||||
TERN_(IS_KINEMATIC, static float offset);
|
TERN_(IS_KINEMATIC, static float offset);
|
||||||
|
template <typename T>
|
||||||
|
void set_destination(const T& dest) {
|
||||||
|
#if IS_KINEMATIC
|
||||||
|
// Moves are segmented, so the entire move is not submitted at once.
|
||||||
|
// Using a separate variable prevents corrupting the in-progress move.
|
||||||
|
all_axes_destination = current_position;
|
||||||
|
all_axes_destination.set(dest);
|
||||||
|
#else
|
||||||
|
// Moves are submitted as single line to the planner using buffer_line.
|
||||||
|
current_position.set(dest);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
#if IS_KINEMATIC
|
#if IS_KINEMATIC
|
||||||
static bool processing;
|
static bool processing;
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -426,10 +426,9 @@ void ubl_map_move_to_xy() {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Do an internal move to the mesh point
|
// Use the built-in manual move handler to move to the mesh point.
|
||||||
destination.set(ubl.mesh_index_to_xpos(x_plot), ubl.mesh_index_to_ypos(y_plot));
|
ui.manual_move.set_destination(xy);
|
||||||
constexpr feedRate_t fr_mm_s = MMM_TO_MMS(XY_PROBE_SPEED);
|
ui.manual_move.soon(ALL_AXES);
|
||||||
prepare_internal_move_to_destination(fr_mm_s); // Set current_position from destination
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inline int32_t grid_index(const uint8_t x, const uint8_t y) {
|
inline int32_t grid_index(const uint8_t x, const uint8_t y) {
|
||||||
|
|
Loading…
Reference in a new issue