Browse Source

Fix the max width supplied to medial axis code: it's up to two extrusions

Alessandro Ranellucci 11 years ago
parent
commit
c2ed6090d3
2 changed files with 4 additions and 6 deletions
  1. 2 1
      lib/Slic3r/Layer/Region.pm
  2. 2 5
      xs/src/Geometry.cpp

+ 2 - 1
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";

+ 2 - 5
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;