diff --git a/lib/Slic3r/Layer/Region.pm b/lib/Slic3r/Layer/Region.pm index f4c425a191..798fe363a8 100644 --- a/lib/Slic3r/Layer/Region.pm +++ b/lib/Slic3r/Layer/Region.pm @@ -99,6 +99,7 @@ sub make_perimeters { my $diff = diff_ex( \@last, offset(\@offsets, +0.5*$pwidth), + 1, # medial axis requires non-overlapping geometry ); push @thin_walls, @$diff; } @@ -222,9 +223,6 @@ sub make_perimeters { $self->perimeters->append(@loops); # process thin walls by collapsing slices to single passes - my $min_thin_wall_width = $pwidth/3; - my $min_thin_wall_length = 2*$pwidth; - #@thin_walls = @{offset2_ex([ map @$_, @thin_walls ], -0.5*$min_thin_wall_width, +0.5*$min_thin_wall_width)}; if (@thin_walls) { my @p = map @{$_->medial_axis($pspacing)}, @thin_walls; @@ -240,6 +238,7 @@ sub make_perimeters { } my @paths = (); + my $min_thin_wall_length = 2*$pwidth; for my $p (@p) { next if $p->length < $min_thin_wall_length; my %params = ( diff --git a/xs/src/Geometry.cpp b/xs/src/Geometry.cpp index a4ff2f24d2..c324a162c9 100644 --- a/xs/src/Geometry.cpp +++ b/xs/src/Geometry.cpp @@ -237,7 +237,7 @@ MedialAxis::is_valid_edge(const VD::edge_type& edge) const // if we only process segments representing closed loops, none if the // infinite edges (if any) would be part of our MAT anyway if (edge.is_secondary() || edge.is_infinite()) return false; - + /* If the cells sharing this edge have a common vertex, we're not interested in this edge. Why? Because it means that the edge lies on the bisector of two contiguous input lines and it was included in the Voronoi graph because