Bugfix: fatal error and warnings removed when cleaning some dirty layers
This commit is contained in:
parent
00c6287488
commit
debdd164e2
3 changed files with 3 additions and 2 deletions
|
@ -654,7 +654,7 @@ sub angle3points {
|
||||||
sub polyline_remove_parallel_continuous_edges {
|
sub polyline_remove_parallel_continuous_edges {
|
||||||
my ($points, $isPolygon) = @_;
|
my ($points, $isPolygon) = @_;
|
||||||
|
|
||||||
for (my $i = $isPolygon ? 0 : 2; $i <= $#$points; $i++) {
|
for (my $i = $isPolygon ? 0 : 2; $i <= $#$points && @$points >= 3; $i++) {
|
||||||
if (Slic3r::Geometry::lines_parallel([$points->[$i-2], $points->[$i-1]], [$points->[$i-1], $points->[$i]])) {
|
if (Slic3r::Geometry::lines_parallel([$points->[$i-2], $points->[$i-1]], [$points->[$i-1], $points->[$i]])) {
|
||||||
# we can remove $points->[$i-1]
|
# we can remove $points->[$i-1]
|
||||||
splice @$points, $i-1, 1;
|
splice @$points, $i-1, 1;
|
||||||
|
|
|
@ -38,6 +38,7 @@ sub lines {
|
||||||
sub cleanup {
|
sub cleanup {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
$self->merge_continuous_lines;
|
$self->merge_continuous_lines;
|
||||||
|
return @$self >= 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub merge_continuous_lines {
|
sub merge_continuous_lines {
|
||||||
|
|
|
@ -166,7 +166,7 @@ sub make_loops {
|
||||||
pop @points;
|
pop @points;
|
||||||
Slic3r::debugf " Discovered polygon of %d points\n", scalar(@points);
|
Slic3r::debugf " Discovered polygon of %d points\n", scalar(@points);
|
||||||
push @polygons, Slic3r::Polygon->new(@points);
|
push @polygons, Slic3r::Polygon->new(@points);
|
||||||
$polygons[-1]->cleanup;
|
pop @polygons if !$polygons[-1]->cleanup;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue