From 56b2f2b48325b0568a2c4e22a2a16f7d4f31591a Mon Sep 17 00:00:00 2001 From: supermerill Date: Wed, 2 Feb 2022 00:25:59 +0100 Subject: [PATCH] Fix dense_infill when infill/perimeter encroachment is 0 supermerill/SuperSlicer#2243 --- src/libslic3r/Layer.hpp | 1 + src/libslic3r/PrintObject.cpp | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/libslic3r/Layer.hpp b/src/libslic3r/Layer.hpp index 6becc1584..b0d92b661 100644 --- a/src/libslic3r/Layer.hpp +++ b/src/libslic3r/Layer.hpp @@ -43,6 +43,7 @@ public: // and for re-starting of infills. ExPolygons fill_expolygons; // Unspecified fill polygons, used for interecting when we don't want the infill/perimeter overlap + // note: if empty, that means there is no overlap, so you don't need to intersect with it. ExPolygons fill_no_overlap_expolygons; // collection of surfaces for infill generation SurfaceCollection fill_surfaces; diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index e40c31c63..bffa9ceeb 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -1330,7 +1330,9 @@ namespace Slic3r { for (int idx_dense = 0; idx_dense < dense_polys.size(); idx_dense++) { ExPolygon dense_poly = dense_polys[idx_dense]; //remove overlap with perimeter - ExPolygons offseted_dense_polys = intersection_ex({ dense_poly }, layerm->fill_no_overlap_expolygons); + ExPolygons offseted_dense_polys = layerm->fill_no_overlap_expolygons.empty() + ? ExPolygons{dense_poly} + : intersection_ex({ dense_poly }, layerm->fill_no_overlap_expolygons); //add overlap with everything offseted_dense_polys = offset_ex(offseted_dense_polys, overlap); for (ExPolygon offseted_dense_poly : offseted_dense_polys) {