Bugfix: fatal error and warnings removed when cleaning some dirty layers

degen-loop-screen
Alessandro Ranellucci 2012-01-21 18:44:24 +01:00
parent 00c6287488
commit debdd164e2
3 changed files with 3 additions and 2 deletions

View File

@ -654,7 +654,7 @@ sub angle3points {
sub polyline_remove_parallel_continuous_edges {
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]])) {
# we can remove $points->[$i-1]
splice @$points, $i-1, 1;

View File

@ -38,6 +38,7 @@ sub lines {
sub cleanup {
my $self = shift;
$self->merge_continuous_lines;
return @$self >= 3;
}
sub merge_continuous_lines {

View File

@ -166,7 +166,7 @@ sub make_loops {
pop @points;
Slic3r::debugf " Discovered polygon of %d points\n", scalar(@points);
push @polygons, Slic3r::Polygon->new(@points);
$polygons[-1]->cleanup;
pop @polygons if !$polygons[-1]->cleanup;
}
};