diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index de2b10ba37..016236b358 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -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);