Combine Z changes and retractions using G0. #51

This commit is contained in:
Alessandro Ranellucci 2011-11-14 12:45:20 +01:00
parent db35faeabb
commit c2a2d9ae6d

View File

@ -40,8 +40,9 @@ sub move_z {
my $gcode = ""; my $gcode = "";
$gcode .= $self->retract(dont_lift => 1); $gcode .= $self->retract(move_z => $z);
$gcode .= $self->G0(undef, $z, 0, 'move to next layer'); $gcode .= $self->G0(undef, $z, 0, 'move to next layer')
if $self->z != $z;
return $gcode; return $gcode;
} }
@ -123,7 +124,7 @@ sub retract {
# prepare moves # prepare moves
my $retract = [undef, undef, -$Slic3r::retract_length, "retract"]; my $retract = [undef, undef, -$Slic3r::retract_length, "retract"];
my $lift = ($params{dont_lift} || $Slic3r::retract_lift == 0) my $lift = ($Slic3r::retract_lift == 0)
? undef ? undef
: [undef, $self->z + $Slic3r::retract_lift, 0, 'lift plate during retraction']; : [undef, $self->z + $Slic3r::retract_lift, 0, 'lift plate during retraction'];
@ -138,6 +139,10 @@ sub retract {
my $travel = [$params{travel_to}, undef, $retract->[2], 'travel and retract']; my $travel = [$params{travel_to}, undef, $retract->[2], 'travel and retract'];
$gcode .= $self->G0(@$travel); $gcode .= $self->G0(@$travel);
} }
} elsif ($Slic3r::g0 && defined $params{move_z}) {
# combine Z change and retraction
my $travel = [undef, $params{move_z}, $retract->[2], 'change layer and retract'];
$gcode .= $self->G0(@$travel);
} else { } else {
$gcode .= $self->G1(@$retract); $gcode .= $self->G1(@$retract);
if ($lift) { if ($lift) {
@ -163,11 +168,11 @@ sub unretract {
my $gcode = ""; my $gcode = "";
if ($self->lifted) { if ($self->lifted) {
$gcode .= $self->G1(undef, $self->z - $Slic3r::retract_lift, 0, 'restore layer Z'); $gcode .= $self->G0(undef, $self->z - $Slic3r::retract_lift, 0, 'restore layer Z');
$self->lifted(0); $self->lifted(0);
} }
$gcode .= $self->G1(undef, undef, ($Slic3r::retract_length + $Slic3r::retract_restart_extra), $gcode .= $self->G0(undef, undef, ($Slic3r::retract_length + $Slic3r::retract_restart_extra),
"compensate retraction"); "compensate retraction");
return $gcode; return $gcode;