|
@@ -3791,11 +3791,12 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float
|
|
//Not let's go back to print
|
|
//Not let's go back to print
|
|
fanSpeed = fanSpeedBckp;
|
|
fanSpeed = fanSpeedBckp;
|
|
|
|
|
|
- //Feed a little of filament to stabilize pressure
|
|
|
|
|
|
+ //Retract filament to prevent drooling
|
|
if (!automatic)
|
|
if (!automatic)
|
|
{
|
|
{
|
|
- current_position[E_AXIS] += FILAMENTCHANGE_RECFEED;
|
|
|
|
- plan_buffer_line_curposXYZE(FILAMENTCHANGE_EXFEED);
|
|
|
|
|
|
+ current_position[E_AXIS] -= FILAMENTCHANGE_LOADRETRACT;
|
|
|
|
+ plan_buffer_line_curposXYZE(FILAMENTCHANGE_EFEED_FIRST);
|
|
|
|
+ st_synchronize();
|
|
}
|
|
}
|
|
|
|
|
|
//Move XY back
|
|
//Move XY back
|
|
@@ -3807,6 +3808,15 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float
|
|
FILAMENTCHANGE_ZFEED, active_extruder);
|
|
FILAMENTCHANGE_ZFEED, active_extruder);
|
|
st_synchronize();
|
|
st_synchronize();
|
|
|
|
|
|
|
|
+ //Restore filament
|
|
|
|
+ if (!automatic)
|
|
|
|
+ {
|
|
|
|
+ current_position[E_AXIS] += FILAMENTCHANGE_LOADRETRACT;
|
|
|
|
+ plan_buffer_line(lastpos[X_AXIS], lastpos[Y_AXIS], lastpos[Z_AXIS], current_position[E_AXIS],
|
|
|
|
+ FILAMENTCHANGE_EFEED_FIRST, active_extruder);
|
|
|
|
+ st_synchronize();
|
|
|
|
+ }
|
|
|
|
+
|
|
//Set E position to original
|
|
//Set E position to original
|
|
plan_set_e_position(lastpos[E_AXIS]);
|
|
plan_set_e_position(lastpos[E_AXIS]);
|
|
|
|
|