From debdd164e20c89786701a8f1be452f16c049b382 Mon Sep 17 00:00:00 2001 From: Alessandro Ranellucci Date: Sat, 21 Jan 2012 18:44:24 +0100 Subject: [PATCH] Bugfix: fatal error and warnings removed when cleaning some dirty layers --- lib/Slic3r/Geometry.pm | 2 +- lib/Slic3r/Polygon.pm | 1 + lib/Slic3r/TriangleMesh.pm | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/Slic3r/Geometry.pm b/lib/Slic3r/Geometry.pm index 6652a49d..4166fa49 100644 --- a/lib/Slic3r/Geometry.pm +++ b/lib/Slic3r/Geometry.pm @@ -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; diff --git a/lib/Slic3r/Polygon.pm b/lib/Slic3r/Polygon.pm index 1c5d9021..b3bab44a 100644 --- a/lib/Slic3r/Polygon.pm +++ b/lib/Slic3r/Polygon.pm @@ -38,6 +38,7 @@ sub lines { sub cleanup { my $self = shift; $self->merge_continuous_lines; + return @$self >= 3; } sub merge_continuous_lines { diff --git a/lib/Slic3r/TriangleMesh.pm b/lib/Slic3r/TriangleMesh.pm index 1d68804a..e67c514e 100644 --- a/lib/Slic3r/TriangleMesh.pm +++ b/lib/Slic3r/TriangleMesh.pm @@ -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; } };