|
@@ -128,6 +128,10 @@
|
128
|
128
|
#define G26_XY_FEEDRATE (PLANNER_XY_FEEDRATE() / 3.0)
|
129
|
129
|
#endif
|
130
|
130
|
|
|
131
|
+#ifndef G26_XY_FEEDRATE_TRAVEL
|
|
132
|
+ #define G26_XY_FEEDRATE_TRAVEL (PLANNER_XY_FEEDRATE() / 1.5)
|
|
133
|
+#endif
|
|
134
|
+
|
131
|
135
|
#if CROSSHAIRS_SIZE >= INTERSECTION_CIRCLE_RADIUS
|
132
|
136
|
#error "CROSSHAIRS_SIZE must be less than INTERSECTION_CIRCLE_RADIUS."
|
133
|
137
|
#endif
|
|
@@ -213,7 +217,8 @@ void move_to(const float &rx, const float &ry, const float &z, const float &e_de
|
213
|
217
|
|
214
|
218
|
const xy_pos_t dest = { rx, ry };
|
215
|
219
|
|
216
|
|
- const bool has_xy_component = dest != current_position; // Check if X or Y is involved in the movement.
|
|
220
|
+ const bool has_xy_component = dest != current_position; // Check if X or Y is involved in the movement.
|
|
221
|
+ const bool has_e_component = e_delta != 0.0;
|
217
|
222
|
|
218
|
223
|
destination = current_position;
|
219
|
224
|
|
|
@@ -224,10 +229,15 @@ void move_to(const float &rx, const float &ry, const float &z, const float &e_de
|
224
|
229
|
destination = current_position;
|
225
|
230
|
}
|
226
|
231
|
|
227
|
|
- // If X or Y is involved do a 'normal' move. Otherwise retract/recover/hop.
|
|
232
|
+ // If X or Y in combination with E is involved do a 'normal' move.
|
|
233
|
+ // If X or Y with no E is involved do a 'fast' move
|
|
234
|
+ // Otherwise retract/recover/hop.
|
228
|
235
|
destination = dest;
|
229
|
236
|
destination.e += e_delta;
|
230
|
|
- const feedRate_t feed_value = has_xy_component ? feedRate_t(G26_XY_FEEDRATE) : planner.settings.max_feedrate_mm_s[E_AXIS] * 0.666f;
|
|
237
|
+ const feedRate_t feed_value =
|
|
238
|
+ has_xy_component
|
|
239
|
+ ? (has_e_component ? feedRate_t(G26_XY_FEEDRATE) : feedRate_t(G26_XY_FEEDRATE_TRAVEL))
|
|
240
|
+ : planner.settings.max_feedrate_mm_s[E_AXIS] * 0.666f;
|
231
|
241
|
prepare_internal_move_to_destination(feed_value);
|
232
|
242
|
destination = current_position;
|
233
|
243
|
}
|