extraneous fill against sloped walls with fill every N layers #834

Polygons used for N x depth fill surfaces need to be offset
by flow spacing before they are reused to clip lower fill surfaces.
Otherwise thin fill sections remain on clipped layers against sloping
walls, and the N x depth fill collides with them.
This commit is contained in:
Mike Sheldrake 2013-01-14 21:18:31 -08:00
parent 68fc91d854
commit bce3e96210

View file

@ -445,8 +445,8 @@ sub combine_infill {
my $area_threshold = $Slic3r::flow->scaled_spacing ** 2; my $area_threshold = $Slic3r::flow->scaled_spacing ** 2;
for my $region_id (0 .. ($self->print->regions_count-1)) { for my $region_id (0 .. ($self->print->regions_count-1)) {
# start from bottom, skip first layer # start from top, skip lowest layer
for (my $i = 1; $i < $self->layer_count; $i++) { for (my $i = $self->layer_count - 1; $i > 0; $i--) {
my $layerm = $self->layers->[$i]->regions->[$region_id]; my $layerm = $self->layers->[$i]->regions->[$region_id];
# skip layer if no internal fill surfaces # skip layer if no internal fill surfaces
@ -506,6 +506,13 @@ sub combine_infill {
{ {
my @new_surfaces = (); my @new_surfaces = ();
push @new_surfaces, grep $_->surface_type != S_TYPE_INTERNAL, @{$lower_layerm->fill_surfaces}; push @new_surfaces, grep $_->surface_type != S_TYPE_INTERNAL, @{$lower_layerm->fill_surfaces};
# offset for the two different flow spacings
$intersection = [ map $_->offset_ex(
$lower_layerm->perimeter_flow->scaled_spacing / 2
+ $layerm->perimeter_flow->scaled_spacing / 2
), @$intersection];
foreach my $depth (1..$Slic3r::Config->infill_every_layers) { foreach my $depth (1..$Slic3r::Config->infill_every_layers) {
push @new_surfaces, map Slic3r::Surface->new push @new_surfaces, map Slic3r::Surface->new
(expolygon => $_, surface_type => S_TYPE_INTERNAL, depth_layers => $depth), (expolygon => $_, surface_type => S_TYPE_INTERNAL, depth_layers => $depth),