diff --git a/lib/Slic3r/Print.pm b/lib/Slic3r/Print.pm index 2b413360a..a84ba70cf 100644 --- a/lib/Slic3r/Print.pm +++ b/lib/Slic3r/Print.pm @@ -228,7 +228,7 @@ sub init_extruders { (map $self->config->get("${_}_extruder")-1, qw(perimeter infill support_material support_material_interface)), (values %extruder_mapping), ); - for my $extruder_id (keys %{{ map {$_ => 1} @used_extruders }}) { + for my $extruder_id (0 .. max(@used_extruders)) { $self->extruders->[$extruder_id] = Slic3r::Extruder->new( config => $self->config, id => $extruder_id, diff --git a/t/multi.t b/t/multi.t index c7214e8b9..1a46f353d 100644 --- a/t/multi.t +++ b/t/multi.t @@ -1,4 +1,4 @@ -use Test::More tests => 1; +use Test::More tests => 2; use strict; use warnings; @@ -59,4 +59,12 @@ use Slic3r::Test; ok !(first { $convex_hull->encloses_point($_) } @toolchange_points), 'all toolchanges happen outside skirt'; } +{ + my $config = Slic3r::Config->new_from_defaults; + $config->set('support_material_extruder', 3); + + my $print = Slic3r::Test::init_print('20mm_cube', config => $config); + ok Slic3r::Test::gcode($print), 'no errors when using non-consecutive extruders'; +} + __END__