🐛 Fix tool-change E prime (#26494)

Followup to #17248
This commit is contained in:
studiodyne 2023-12-06 06:05:48 +01:00 committed by GitHub
parent 4a4c1db606
commit 425af4240b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1028,7 +1028,7 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0.
if (!too_cold(active_extruder)) { if (!too_cold(active_extruder)) {
destination = current_position; // Remember the old position destination = current_position; // Remember the old position
const bool ok = TERN1(TOOLCHANGE_PARK, all_axes_homed() && toolchange_settings.enable_park); const bool ok = TERN0(TOOLCHANGE_PARK, all_axes_homed() && toolchange_settings.enable_park);
#if HAS_FAN && TOOLCHANGE_FS_FAN >= 0 #if HAS_FAN && TOOLCHANGE_FS_FAN >= 0
// Store and stop fan. Restored on any exit. // Store and stop fan. Restored on any exit.
@ -1080,7 +1080,20 @@ void fast_line_to_current(const AxisEnum fr_axis) { _line_to_current(fr_axis, 0.
} }
#endif #endif
// Clone previous position
extruder_cutting_recover(destination.e); // Cutting recover extruder_cutting_recover(destination.e); // Cutting recover
// Retract if previously retracted
#if ENABLED(FWRETRACT)
if (fwretract.retracted[active_extruder])
unscaled_e_move(-fwretract.settings.retract_length, fwretract.settings.retract_feedrate_mm_s);
#endif
// If resume_position is negative
if (current_position.e < 0) unscaled_e_move(current_position.e, MMM_TO_MMS(toolchange_settings.retract_speed));
planner.synchronize();
planner.set_e_position_mm(current_position.e); // Extruder primed and ready
} }
} }
@ -1597,6 +1610,9 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) {
unscaled_e_move(-fwretract.settings.retract_length, fwretract.settings.retract_feedrate_mm_s); unscaled_e_move(-fwretract.settings.retract_length, fwretract.settings.retract_feedrate_mm_s);
#endif #endif
// If resume_position is negative
if (resume_current_e < 0) unscaled_e_move(resume_current_e, MMM_TO_MMS(toolchange_settings.retract_speed));
// If no available extruder // If no available extruder
if (EXTRUDERS < 2 || active_extruder >= EXTRUDERS - 2 || active_extruder == migration.last) if (EXTRUDERS < 2 || active_extruder >= EXTRUDERS - 2 || active_extruder == migration.last)
migration.automode = false; migration.automode = false;