Bugfix: recent changes broke the "Infill every N layers" feature
This commit is contained in:
parent
ba1b59f54c
commit
8f32ee8f5a
@ -8,6 +8,7 @@ use Slic3r::Fill::HilbertCurve;
|
||||
use Slic3r::Fill::OctagramSpiral;
|
||||
use Slic3r::Fill::Rectilinear;
|
||||
use Slic3r::Fill::Rectilinear2;
|
||||
use Slic3r::Geometry qw(shortest_path);
|
||||
|
||||
use XXX;
|
||||
|
||||
@ -40,7 +41,19 @@ sub make_fill {
|
||||
}
|
||||
|
||||
printf "Filling layer %d:\n", $layer->id;
|
||||
|
||||
# organize $layer->fill_surfaces using a shortest path search
|
||||
@{ $layer->fill_surfaces } = @{shortest_path([
|
||||
map [ $_->[0]->contour->points->[0], $_ ], grep @$_, @{ $layer->fill_surfaces },
|
||||
])};
|
||||
|
||||
foreach my $surfaces (@{ $layer->fill_surfaces }) {
|
||||
|
||||
# organize $surfaces using a shortest path search
|
||||
@$surfaces = @{shortest_path([
|
||||
map [ $_->contour->points->[0], $_ ], @$surfaces,
|
||||
])};
|
||||
|
||||
SURFACE: foreach my $surface (@$surfaces) {
|
||||
Slic3r::debugf " Processing surface %s:\n", $surface->id;
|
||||
|
||||
|
@ -31,11 +31,14 @@ sub diff_ex {
|
||||
$clipper->clear;
|
||||
$clipper->add_subject_polygons($subject);
|
||||
$clipper->add_clip_polygons($clip);
|
||||
return $clipper->ex_execute(CT_DIFFERENCE, PFT_NONZERO, PFT_NONZERO);
|
||||
return [
|
||||
map Slic3r::ExPolygon->new($_),
|
||||
@{ $clipper->ex_execute(CT_DIFFERENCE, PFT_NONZERO, PFT_NONZERO) },
|
||||
];
|
||||
}
|
||||
|
||||
sub diff {
|
||||
return [ map { $_->{outer}, $_->{holes} } diff_ex(@_) ];
|
||||
return [ map @$_, diff_ex(@_) ];
|
||||
}
|
||||
|
||||
sub union_ex {
|
||||
|
@ -365,6 +365,7 @@ sub infill_every_layers {
|
||||
[ map $_->p, grep $_->surface_type eq 'internal', @$surfaces ],
|
||||
);
|
||||
next if !@$intersection;
|
||||
my $intersection_offsetted = safety_offset([ map @$_, @$intersection ]);
|
||||
|
||||
# new fill surfaces of the current layer are:
|
||||
# - any non-internal surface
|
||||
@ -387,7 +388,7 @@ sub infill_every_layers {
|
||||
map $_->p, grep $_->surface_type eq 'internal' && $_->depth_layers == $depth,
|
||||
@$surfaces,
|
||||
],
|
||||
safety_offset($intersection),
|
||||
$intersection_offsetted,
|
||||
)};
|
||||
}
|
||||
@$surfaces = @new_surfaces;
|
||||
@ -408,7 +409,7 @@ sub infill_every_layers {
|
||||
map $_->p, grep $_->surface_type eq 'internal' && $_->depth_layers == $depth,
|
||||
@$lower_surfaces,
|
||||
],
|
||||
safety_offset($intersection),
|
||||
$intersection_offsetted,
|
||||
)};
|
||||
}
|
||||
@$lower_surfaces = @new_surfaces;
|
||||
|
Loading…
Reference in New Issue
Block a user