From 2d0b27abedc0478eadb1e6eb00c99542ed012f26 Mon Sep 17 00:00:00 2001
From: Alessandro Ranellucci <aar@cpan.org>
Date: Fri, 8 Aug 2014 03:13:45 +0200
Subject: [PATCH] Bugfix: 3D honeycomb infill wasn't correctly aligned among
 skewed layers. #2194

---
 lib/Slic3r/Fill/3DHoneycomb.pm | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/lib/Slic3r/Fill/3DHoneycomb.pm b/lib/Slic3r/Fill/3DHoneycomb.pm
index fe0d82e4c..2f1a52509 100644
--- a/lib/Slic3r/Fill/3DHoneycomb.pm
+++ b/lib/Slic3r/Fill/3DHoneycomb.pm
@@ -24,6 +24,16 @@ sub fill_surface {
     
     my $distance = $flow->scaled_spacing / $params{density};
     
+    # align bounding box to a multiple of our honeycomb grid
+    {
+        my $min = $bb->min_point;
+        $min->translate(
+            -($bb->x_min % $distance),
+            -($bb->y_min % $distance),
+        );
+        $bb->merge_point($min);
+    }
+    
     # generate pattern
     my @polylines = map Slic3r::Polyline->new(@$_),
         makeGrid(
@@ -176,9 +186,9 @@ sub makeNormalisedGrid {
     my ($z, $gridWidth, $gridHeight, $curveType) = @_;
     
     ## offset required to create a regular octagram
-    ## my $octagramGap = 1 / (1 + sqrt(2));
+    my $octagramGap = 1 / (1 + sqrt(2));
     
-    my $octagramGap = 1;
+    # my $octagramGap = 1;
     
     # sawtooth wave function for range f($z) = [-$octagramGap .. $octagramGap]
     my $offset = (abs((fmod($z * sqrt(2), 4)) - 2) - 1) * $octagramGap;