mirror of https://github.com/vitalif/Slic3r
Bugfix: detect thin fill loops so that they can be started at the nearest point without unnecessary loops. #1990
parent
abdf6531f1
commit
2bce8bb745
|
@ -180,8 +180,7 @@ sub make_perimeters {
|
||||||
# and use zigzag).
|
# and use zigzag).
|
||||||
my $w = $gap_size->[2];
|
my $w = $gap_size->[2];
|
||||||
my @filled = map {
|
my @filled = map {
|
||||||
@{($_->isa('Slic3r::ExtrusionLoop') ? $_->split_at_first_point : $_)
|
@{($_->isa('Slic3r::ExtrusionLoop') ? $_->polygon->split_at_first_point : $_->polyline)
|
||||||
->polyline
|
|
||||||
->grow(scale $w/2)};
|
->grow(scale $w/2)};
|
||||||
} @gap_fill;
|
} @gap_fill;
|
||||||
@last = @{diff(\@last, \@filled)};
|
@last = @{diff(\@last, \@filled)};
|
||||||
|
@ -438,6 +437,11 @@ sub _fill_gaps {
|
||||||
my $loop = Slic3r::ExtrusionLoop->new;
|
my $loop = Slic3r::ExtrusionLoop->new;
|
||||||
$loop->append(Slic3r::ExtrusionPath->new(polyline => $polylines[$i]->split_at_first_point, %path_args));
|
$loop->append(Slic3r::ExtrusionPath->new(polyline => $polylines[$i]->split_at_first_point, %path_args));
|
||||||
$polylines[$i] = $loop;
|
$polylines[$i] = $loop;
|
||||||
|
} elsif ($polylines[$i]->is_valid && $polylines[$i]->first_point->coincides_with($polylines[$i]->last_point)) {
|
||||||
|
# since medial_axis() now returns only Polyline objects, detect loops here
|
||||||
|
my $loop = Slic3r::ExtrusionLoop->new;
|
||||||
|
$loop->append(Slic3r::ExtrusionPath->new(polyline => $polylines[$i], %path_args));
|
||||||
|
$polylines[$i] = $loop;
|
||||||
} else {
|
} else {
|
||||||
$polylines[$i] = Slic3r::ExtrusionPath->new(polyline => $polylines[$i], %path_args);
|
$polylines[$i] = Slic3r::ExtrusionPath->new(polyline => $polylines[$i], %path_args);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue