diff --git a/lib/Slic3r/Layer/Region.pm b/lib/Slic3r/Layer/Region.pm index 798fe363a..70c965e1d 100644 --- a/lib/Slic3r/Layer/Region.pm +++ b/lib/Slic3r/Layer/Region.pm @@ -224,7 +224,8 @@ sub make_perimeters { # process thin walls by collapsing slices to single passes if (@thin_walls) { - my @p = map @{$_->medial_axis($pspacing)}, @thin_walls; + # the maximum thickness of our thin wall area is equal to the minimum thickness of a single loop + my @p = map @{$_->medial_axis($pwidth + $pspacing)}, @thin_walls; if (0) { require "Slic3r/SVG.pm"; diff --git a/xs/src/Geometry.cpp b/xs/src/Geometry.cpp index c324a162c..aabc0846e 100644 --- a/xs/src/Geometry.cpp +++ b/xs/src/Geometry.cpp @@ -262,11 +262,8 @@ MedialAxis::is_valid_edge(const VD::edge_type& edge) const double dist = p0.distance_to(segment1); // if distance between this edge and the thin area boundary is greater - // than half the max width, then it's not a true medial axis segment; - // if it's too small then it's not suitable for extrusion since it would - // exceed the desired shape too much (this also traps some very narrow - // areas caused by collapsing/mitering that we should ignore) - if (dist > this->width/2 || dist < this->width/10) return false; + // than half the max width, then it's not a true medial axis segment + if (dist > this->width/2) return false; } return true;