diff --git a/lib/Slic3r/Extruder.pm b/lib/Slic3r/Extruder.pm index b1fc895b2..ed537e3bf 100644 --- a/lib/Slic3r/Extruder.pm +++ b/lib/Slic3r/Extruder.pm @@ -8,6 +8,7 @@ has 'z' => (is => 'rw', default => sub {0} ); has 'flow_ratio' => (is => 'rw', default => sub {1}); has 'extrusion_distance' => (is => 'rw', default => sub {0} ); +has 'enable_retraction' => (is => 'rw', default => sub {1} ); has 'retracted' => (is => 'rw', default => sub {1} ); # this spits out some plastic at start has 'lifted' => (is => 'rw', default => sub {0} ); has 'last_pos' => (is => 'rw', default => sub { [0,0] } ); @@ -123,7 +124,8 @@ sub retract { my $self = shift; my %params = @_; - return "" unless $Slic3r::retract_length > 0 + return "" unless $self->enable_retraction + && $Slic3r::retract_length > 0 && !$self->retracted; # prepare moves diff --git a/lib/Slic3r/Print.pm b/lib/Slic3r/Print.pm index f67f97244..029b4f514 100644 --- a/lib/Slic3r/Print.pm +++ b/lib/Slic3r/Print.pm @@ -423,8 +423,11 @@ sub export_gcode { # extrude fills for my $fill (@{ $layer->fills }) { - printf $fh $extruder->extrude($_, 'fill') - for $fill->shortest_path($extruder->last_pos); + for ($fill->shortest_path($extruder->last_pos)) { + printf $fh $extruder->extrude($_, 'fill'); + $extruder->enable_retraction(0); + } + $extruder->enable_retraction(1); } }