Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/prusa3d/PrusaSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlessandro Ranellucci <aar@cpan.org>2011-10-11 19:53:50 +0400
committerAlessandro Ranellucci <aar@cpan.org>2011-10-11 19:53:50 +0400
commit82d8d0896f6e6b9a246da4ac63613ec84b72037d (patch)
treea50098c6ac36693f53bbcd6a66254525ec23c2da /lib/Slic3r/Extruder.pm
parentf352dd8e81d36cefc4f2754a0d8a798d5164c9de (diff)
Reset extrusion distance during retracts
Diffstat (limited to 'lib/Slic3r/Extruder.pm')
-rw-r--r--lib/Slic3r/Extruder.pm13
1 files changed, 8 insertions, 5 deletions
diff --git a/lib/Slic3r/Extruder.pm b/lib/Slic3r/Extruder.pm
index 367945f96..e4bf3958e 100644
--- a/lib/Slic3r/Extruder.pm
+++ b/lib/Slic3r/Extruder.pm
@@ -107,7 +107,14 @@ sub retract {
&& !$self->retracted;
$self->retracted(1);
- return $self->G1(undef, undef, -$Slic3r::retract_length, "retract");
+ my $gcode = $self->G1(undef, undef, -$Slic3r::retract_length, "retract");
+
+ # reset extrusion distance during retracts
+ # this makes sure we leave sufficient precision in the firmware
+ if (!$Slic3r::use_relative_e_distances) {
+ $gcode .= "G92 E0\n";
+ $self->extrusion_distance(0);
+ }
}
sub unretract {
@@ -159,10 +166,6 @@ sub G1 {
if ($e) {
$self->extrusion_distance(0) if $Slic3r::use_relative_e_distances;
$self->extrusion_distance($self->extrusion_distance + $e);
- if ($self->extrusion_distance > 65535) {
- $gcode = "G92 E0\n" . $gcode;
- $self->extrusion_distance($e);
- }
$gcode .= sprintf " E%.5f", $self->extrusion_distance;
}