|
|
@ -6624,21 +6624,22 @@ inline void gcode_T(uint8_t tmp_extruder) { |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
float stored_feedrate = feedrate; |
|
|
|
#if HOTENDS > 1 |
|
|
|
|
|
|
|
if (code_seen('F')) { |
|
|
|
float next_feedrate = code_value_axis_units(X_AXIS); |
|
|
|
if (next_feedrate > 0.0) stored_feedrate = feedrate = next_feedrate; |
|
|
|
} |
|
|
|
else { |
|
|
|
#ifdef XY_TRAVEL_SPEED |
|
|
|
feedrate = XY_TRAVEL_SPEED; |
|
|
|
#else |
|
|
|
feedrate = min(planner.max_feedrate[X_AXIS], planner.max_feedrate[Y_AXIS]); |
|
|
|
#endif |
|
|
|
} |
|
|
|
float stored_feedrate = feedrate; |
|
|
|
|
|
|
|
if (code_seen('F')) { |
|
|
|
float next_feedrate = code_value_axis_units(X_AXIS); |
|
|
|
if (next_feedrate > 0.0) stored_feedrate = feedrate = next_feedrate; |
|
|
|
} |
|
|
|
else { |
|
|
|
#ifdef XY_TRAVEL_SPEED |
|
|
|
feedrate = XY_TRAVEL_SPEED; |
|
|
|
#else |
|
|
|
feedrate = min(planner.max_feedrate[X_AXIS], planner.max_feedrate[Y_AXIS]); |
|
|
|
#endif |
|
|
|
} |
|
|
|
|
|
|
|
#if HOTENDS > 1 |
|
|
|
if (tmp_extruder != active_extruder) { |
|
|
|
bool no_move = code_seen('S') && code_value_bool(); |
|
|
|
// Save current position to return to after applying extruder offset
|
|
|
@ -6794,9 +6795,14 @@ inline void gcode_T(uint8_t tmp_extruder) { |
|
|
|
enable_solenoid_on_active_extruder(); |
|
|
|
#endif // EXT_SOLENOID
|
|
|
|
|
|
|
|
#endif // HOTENDS > 1
|
|
|
|
feedrate = stored_feedrate; |
|
|
|
|
|
|
|
#else // !HOTENDS > 1
|
|
|
|
|
|
|
|
feedrate = stored_feedrate; |
|
|
|
// Set the new active extruder
|
|
|
|
active_extruder = tmp_extruder; |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
SERIAL_ECHO_START; |
|
|
|
SERIAL_ECHO(MSG_ACTIVE_EXTRUDER); |
|
|
|