diff --git a/lib/Slic3r/Fill.pm b/lib/Slic3r/Fill.pm index b44d9dcf0..03b0ef842 100644 --- a/lib/Slic3r/Fill.pm +++ b/lib/Slic3r/Fill.pm @@ -35,6 +35,10 @@ sub filler { my $self = shift; my ($filler) = @_; + if (!ref $self) { + return $FillTypes{$filler}->new; + } + if (!$self->fillers->{$filler}) { my $f = $self->fillers->{$filler} = $FillTypes{$filler}->new; $f->bounding_box([ $self->print->bounding_box ]) if $filler->can('bounding_box'); diff --git a/lib/Slic3r/Layer/Region.pm b/lib/Slic3r/Layer/Region.pm index 0fbd1f495..f2e34426f 100644 --- a/lib/Slic3r/Layer/Region.pm +++ b/lib/Slic3r/Layer/Region.pm @@ -232,7 +232,7 @@ sub make_perimeters { # fill gaps { - my $filler = Slic3r::Fill->new(print => $self->layer->object->print)->filler('rectilinear'); + my $filler = Slic3r::Fill::Rectilinear->new; my $w = $self->perimeter_flow->width; my @widths = (1.5 * $w, $w, 0.5 * $w); # worth trying 0.2 too? diff --git a/lib/Slic3r/Print/Object.pm b/lib/Slic3r/Print/Object.pm index cba8dedd6..d1e3611dc 100644 --- a/lib/Slic3r/Print/Object.pm +++ b/lib/Slic3r/Print/Object.pm @@ -570,8 +570,7 @@ sub generate_support_material { my @support_material_areas = map $_->offset_ex(- 0.5 * $flow->scaled_width), @{union_ex([ map $_->contour, map @$_, values %layers ])}; - my $fill = Slic3r::Fill->new(print => $self->print); - my $filler = $fill->filler($Slic3r::Config->support_material_pattern); + my $filler = Slic3r::Fill->filler($Slic3r::Config->support_material_pattern); $filler->angle($Slic3r::Config->support_material_angle); { my @patterns = ();