diff --git a/lib/Slic3r/GCode.pm b/lib/Slic3r/GCode.pm index ab8f01576..867d5a27c 100644 --- a/lib/Slic3r/GCode.pm +++ b/lib/Slic3r/GCode.pm @@ -10,7 +10,7 @@ has 'shift_y' => (is => 'rw', default => sub {0} ); has 'z' => (is => 'rw', default => sub {0} ); has 'speed' => (is => 'rw'); -has 'extruder_idx' => (is => 'rw', default => sub {0}); +has 'extruder_idx' => (is => 'rw'); has 'extrusion_distance' => (is => 'rw', default => sub {0} ); has 'elapsed_time' => (is => 'rw', default => sub {0} ); # seconds has 'total_extrusion_length' => (is => 'rw', default => sub {0} ); @@ -378,9 +378,10 @@ sub set_tool { my $self = shift; my ($tool) = @_; - return "" if $self->extruder_idx == $tool; - + return "" if (defined $self->extruder_idx) && ($self->extruder_idx == $tool); $self->extruder_idx($tool); + return "" if @{$Slic3r::extruders} == 1; + return $self->retract(toolchange => 1) . (sprintf "T%d%s\n", $tool, ($Slic3r::Config->gcode_comments ? ' ; change tool' : '')) . $self->reset_e; diff --git a/lib/Slic3r/Print.pm b/lib/Slic3r/Print.pm index 16e0f03b0..97a84b1ce 100644 --- a/lib/Slic3r/Print.pm +++ b/lib/Slic3r/Print.pm @@ -566,7 +566,7 @@ sub write_gcode { my $gcodegen = Slic3r::GCode->new; my $min_print_speed = 60 * $Slic3r::Config->min_print_speed; my $dec = $gcodegen->dec; - print $fh $gcodegen->set_tool(0) if @$Slic3r::extruders > 1; + print $fh $gcodegen->set_tool(0); print $fh $gcodegen->set_fan(0, 1) if $Slic3r::Config->cooling && $Slic3r::Config->disable_fan_first_layers; # this spits out some platic at start from the first extruder