Browse Source

Disable arc compensation code

Alessandro Ranellucci 12 years ago
parent
commit
ac08cf7469
1 changed files with 20 additions and 18 deletions
  1. 20 18
      lib/Slic3r/Layer.pm

+ 20 - 18
lib/Slic3r/Layer.pm

@@ -221,24 +221,26 @@ sub make_perimeters {
         my $distance = 0;
         
         # experimental hole compensation (see ArcCompensation in the RepRap wiki)
-        foreach my $hole ($last_offsets[0]->holes) {
-            my $circumference = abs($hole->length);
-            next unless $circumference <= $Slic3r::small_perimeter_length;
-            # this compensation only works for circular holes, while it would 
-            # overcompensate for hexagons and other shapes having straight edges.
-            # so we require a minimum number of vertices.
-            next unless $circumference / @$hole >= scale 3 * $Slic3r::flow->width;
-            
-            # revert the compensation done in make_surfaces() and get the actual radius
-            # of the hole
-            my $radius = ($circumference / PI / 2) - scale $self->perimeters_flow->spacing/2;
-            my $new_radius = (scale($self->perimeters_flow->width) + sqrt((scale($self->perimeters_flow->width)**2) + (4*($radius**2)))) / 2;
-            # holes are always turned to contours, so reverse point order before and after
-            $hole->reverse;
-            my @offsetted = $hole->offset(+ ($new_radius - $radius));
-            # skip arc compensation when hole is not round (thus leads to multiple offsets)
-            @$hole = map Slic3r::Point->new($_), @{ $offsetted[0] } if @offsetted == 1;
-            $hole->reverse;
+        if (0) {
+            foreach my $hole ($last_offsets[0]->holes) {
+                my $circumference = abs($hole->length);
+                next unless $circumference <= $Slic3r::small_perimeter_length;
+                # this compensation only works for circular holes, while it would 
+                # overcompensate for hexagons and other shapes having straight edges.
+                # so we require a minimum number of vertices.
+                next unless $circumference / @$hole >= scale 3 * $Slic3r::flow->width;
+                
+                # revert the compensation done in make_surfaces() and get the actual radius
+                # of the hole
+                my $radius = ($circumference / PI / 2) - scale $self->perimeters_flow->spacing/2;
+                my $new_radius = (scale($self->perimeters_flow->width) + sqrt((scale($self->perimeters_flow->width)**2) + (4*($radius**2)))) / 2;
+                # holes are always turned to contours, so reverse point order before and after
+                $hole->reverse;
+                my @offsetted = $hole->offset(+ ($new_radius - $radius));
+                # skip arc compensation when hole is not round (thus leads to multiple offsets)
+                @$hole = map Slic3r::Point->new($_), @{ $offsetted[0] } if @offsetted == 1;
+                $hole->reverse;
+            }
         }
         
         my @gaps = ();