Do not enqueue a E/Z moves unless requested
Do not unconditionally enqueue a Z move if no move has been requested. Since Z is calculated using the absolute current (saved) position and scheduled for later execution, the queue order becomes relevant.
This commit is contained in:
parent
0cc68228f8
commit
5660fcffb0
@ -10238,6 +10238,8 @@ void stop_and_save_print_to_ram(float z_move, float e_move)
|
||||
// move away from the print.
|
||||
char buf[48];
|
||||
|
||||
if(e_move)
|
||||
{
|
||||
// First unretract (relative extrusion)
|
||||
if(!saved_extruder_relative_mode){
|
||||
enquecommand(PSTR("M83"), true);
|
||||
@ -10250,11 +10252,15 @@ void stop_and_save_print_to_ram(float z_move, float e_move)
|
||||
// The behavior of dtostrf 8,3 should be roughly the same as %-0.3
|
||||
sprintf_P(buf, PSTR("G1 E%-0.3f F2700"), e_move);
|
||||
enquecommand(buf, false);
|
||||
}
|
||||
|
||||
if(z_move)
|
||||
{
|
||||
// Then lift Z axis
|
||||
sprintf_P(buf, PSTR("G1 Z%-0.3f F%-0.3f"), saved_pos[Z_AXIS] + z_move, homing_feedrate[Z_AXIS]);
|
||||
// At this point the command queue is empty.
|
||||
enquecommand(buf, false);
|
||||
}
|
||||
|
||||
// If this call is invoked from the main Arduino loop() function, let the caller know that the command
|
||||
// in the command queue is not the original command, but a new one, so it should not be removed from the queue.
|
||||
repeatcommand_front();
|
||||
|
Loading…
Reference in New Issue
Block a user