@ -128,6 +128,10 @@
# define G26_XY_FEEDRATE (PLANNER_XY_FEEDRATE() / 3.0)
# define G26_XY_FEEDRATE (PLANNER_XY_FEEDRATE() / 3.0)
# endif
# endif
# ifndef G26_XY_FEEDRATE_TRAVEL
# define G26_XY_FEEDRATE_TRAVEL (PLANNER_XY_FEEDRATE() / 1.5)
# endif
# if CROSSHAIRS_SIZE >= INTERSECTION_CIRCLE_RADIUS
# if CROSSHAIRS_SIZE >= INTERSECTION_CIRCLE_RADIUS
# error "CROSSHAIRS_SIZE must be less than INTERSECTION_CIRCLE_RADIUS."
# error "CROSSHAIRS_SIZE must be less than INTERSECTION_CIRCLE_RADIUS."
# endif
# endif
@ -213,7 +217,8 @@ void move_to(const float &rx, const float &ry, const float &z, const float &e_de
const xy_pos_t dest = { rx , ry } ;
const xy_pos_t dest = { rx , ry } ;
const bool has_xy_component = dest ! = current_position ; // Check if X or Y is involved in the movement.
const bool has_xy_component = dest ! = current_position ; // Check if X or Y is involved in the movement.
const bool has_e_component = e_delta ! = 0.0 ;
destination = current_position ;
destination = current_position ;
@ -224,10 +229,15 @@ void move_to(const float &rx, const float &ry, const float &z, const float &e_de
destination = current_position ;
destination = current_position ;
}
}
// If X or Y is involved do a 'normal' move. Otherwise retract/recover/hop.
// If X or Y in combination with E is involved do a 'normal' move.
// If X or Y with no E is involved do a 'fast' move
// Otherwise retract/recover/hop.
destination = dest ;
destination = dest ;
destination . e + = e_delta ;
destination . e + = e_delta ;
const feedRate_t feed_value = has_xy_component ? feedRate_t ( G26_XY_FEEDRATE ) : planner . settings . max_feedrate_mm_s [ E_AXIS ] * 0.666f ;
const feedRate_t feed_value =
has_xy_component
? ( has_e_component ? feedRate_t ( G26_XY_FEEDRATE ) : feedRate_t ( G26_XY_FEEDRATE_TRAVEL ) )
: planner . settings . max_feedrate_mm_s [ E_AXIS ] * 0.666f ;
prepare_internal_move_to_destination ( feed_value ) ;
prepare_internal_move_to_destination ( feed_value ) ;
destination = current_position ;
destination = current_position ;
}
}