From dffbde0ccae89a147d314d23a1172c65e019fd28 Mon Sep 17 00:00:00 2001 From: Yuri D'Elia Date: Wed, 7 Aug 2019 21:45:23 +0200 Subject: [PATCH] Maximize gyroid printing speed angle Counter-rotate the default angle by 45' so that gyroid is kept at it's maximum printing speed by default. --- src/libslic3r/Fill/FillGyroid.cpp | 12 ++++++++---- src/libslic3r/Fill/FillGyroid.hpp | 5 +++++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/Fill/FillGyroid.cpp b/src/libslic3r/Fill/FillGyroid.cpp index 651abffd9..b7f0f879b 100644 --- a/src/libslic3r/Fill/FillGyroid.cpp +++ b/src/libslic3r/Fill/FillGyroid.cpp @@ -152,7 +152,9 @@ void FillGyroid::_fill_surface_single( ExPolygon &expolygon, Polylines &polylines_out) { - expolygon.rotate(-this->angle); + float infill_angle = this->angle + (CorrectionAngle * 2*M_PI) / 360.; + if(abs(infill_angle) >= EPSILON) + expolygon.rotate(-infill_angle); BoundingBox bb = expolygon.contour.bounding_box(); // Density adjusted to have a good %of weight. @@ -228,9 +230,11 @@ void FillGyroid::_fill_surface_single( } // new paths must be rotated back - for (Polylines::iterator it = polylines_out.begin() + polylines_out_first_idx; - it != polylines_out.end(); ++it) { - it->rotate(this->angle); + if(abs(infill_angle) >= EPSILON) { + for (Polylines::iterator it = polylines_out.begin() + polylines_out_first_idx; + it != polylines_out.end(); ++it) { + it->rotate(infill_angle); + } } } diff --git a/src/libslic3r/Fill/FillGyroid.hpp b/src/libslic3r/Fill/FillGyroid.hpp index 9c3cef940..171a6b034 100644 --- a/src/libslic3r/Fill/FillGyroid.hpp +++ b/src/libslic3r/Fill/FillGyroid.hpp @@ -16,6 +16,11 @@ public: // require bridge flow since most of this pattern hangs in air virtual bool use_bridge_flow() const { return false; } + // Correction applied to regular infill angle to maximize printing + // speed in default configuration (degrees) + static constexpr float CorrectionAngle = -45.; + + protected: virtual void _fill_surface_single( const FillParams ¶ms,