From 74786185e4332e2da1fba99940faa66361fb2638 Mon Sep 17 00:00:00 2001 From: Alessandro Ranellucci Date: Mon, 21 Nov 2011 16:09:13 +0100 Subject: [PATCH] Don't die on non-manifold models, after having tried the slower detection algorithm too. #16 --- lib/Slic3r/Layer.pm | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/lib/Slic3r/Layer.pm b/lib/Slic3r/Layer.pm index 6712fb3d4..5d5b1f821 100644 --- a/lib/Slic3r/Layer.pm +++ b/lib/Slic3r/Layer.pm @@ -158,6 +158,7 @@ sub make_surfaces { my $self = shift; if (0) { + printf "Layer was sliced at z = %f\n", $self->slice_z * $Slic3r::resolution; require "Slic3r/SVG.pm"; Slic3r::SVG::output(undef, "lines.svg", lines => [ grep !$_->isa('Slic3r::Line::FacetEdge'), @{$self->lines} ], @@ -206,12 +207,15 @@ sub make_surfaces { } } - #Slic3r::SVG::output(undef, "lines.svg", - # lines => [ map $_->p, grep !$_->isa('Slic3r::Line::FacetEdge'), @{$self->lines} ], - # red_lines => [ map $_->p, grep $_->isa('Slic3r::Line::FacetEdge'), @{$self->lines} ], - # points => [ $points[-1] ], - # no_arrows => 1, - #) if !$next_lines; + if (0 && !$next_lines) { + require "Slic3r/SVG.pm"; + Slic3r::SVG::output(undef, "no_lines.svg", + lines => [ grep !$_->isa('Slic3r::Line::FacetEdge'), @{$self->lines} ], + red_lines => [ grep $_->isa('Slic3r::Line::FacetEdge'), @{$self->lines} ], + points => [ $points[-1] ], + no_arrows => 1, + ); + } $next_lines or die sprintf("No lines start at point %s. This shouldn't happen. Please check the model for manifoldness.", $get_point_id->($points[-1])); @@ -289,11 +293,10 @@ sub make_surfaces { Slic3r::SVG::output(undef, "layer" . $self->id . "_discarded_polylines.svg", polylines => \@discarded_polylines, ); - exit; } $self->cleanup_lines; - $detect->(); + eval { $detect->(); }; if (@discarded_lines) { print " Warning: even slow detection algorithm throwed errors. Review the output before printing.\n";