diff --git a/lib/Slic3r/GCode.pm b/lib/Slic3r/GCode.pm index 658fca26a..a127c9bfb 100644 --- a/lib/Slic3r/GCode.pm +++ b/lib/Slic3r/GCode.pm @@ -71,7 +71,7 @@ sub move_z { my $self = shift; my ($z, $comment) = @_; - $z = $Slic3r::Config->z_offset + $z * &Slic3r::SCALING_FACTOR; + $z = $z * &Slic3r::SCALING_FACTOR; my $gcode = ""; $gcode .= $self->retract(move_z => $z); diff --git a/lib/Slic3r/Print.pm b/lib/Slic3r/Print.pm index 05eef7479..e6a1990e7 100644 --- a/lib/Slic3r/Print.pm +++ b/lib/Slic3r/Print.pm @@ -705,6 +705,14 @@ sub write_gcode { } } + # apply Z offset + if ($Slic3r::Config->z_offset > 0) { + printf $fh "G1 Z%s ; set Z offset\n", $Slic3r::Config->z_offset; + print $fh "G92 Z0 ; set Z offset\n"; + } elsif ($Slic3r::Config->z_offset < 0) { + printf $fh "G92 Z%s ; set Z offset\n", 1*(-$Slic3r::Config->z_offset); + } + # calculate X,Y shift to center print around specified origin my @print_bb = $self->bounding_box; my @shift = (