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
							
								
									385152b3d2
								
							
						
					
					
						commit
						3f8a83b285
					
				@ -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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user