diff --git a/src/libslic3r/Fill/FillBase.hpp b/src/libslic3r/Fill/FillBase.hpp index 0fee1fe56..ab150c48c 100644 --- a/src/libslic3r/Fill/FillBase.hpp +++ b/src/libslic3r/Fill/FillBase.hpp @@ -88,9 +88,9 @@ public: // Index of the layer. size_t layer_id; // Z coordinate of the top print surface, in unscaled coordinates - coordf_t z; + double z; // infill / perimeter overlap, in unscaled coordinates - coordf_t overlap; + double overlap; ExPolygons no_overlap_expolygons; // in radians, ccw, 0 = East float angle; diff --git a/src/libslic3r/Fill/FillSmooth.cpp b/src/libslic3r/Fill/FillSmooth.cpp index 561c6a0f6..4f6276ee6 100644 --- a/src/libslic3r/Fill/FillSmooth.cpp +++ b/src/libslic3r/Fill/FillSmooth.cpp @@ -46,7 +46,10 @@ namespace Slic3r { } else{ Surface surfaceNoOverlap(srf_source); - for (const ExPolygon &poly : this->no_overlap_expolygons) { + //use half overlap instead of none. + ExPolygons half_overlap = offset_ex(this->no_overlap_expolygons, scale_(this->overlap / 2)); + half_overlap = intersection_ex({ srf_source.expolygon }, half_overlap); + for (const ExPolygon &poly : half_overlap) { if (poly.empty()) continue; surfaceNoOverlap.expolygon = poly; this->fill_expolygon(idx, *eec, surfaceNoOverlap, params_modifided, volume); diff --git a/src/libslic3r/Fill/FillSmooth.hpp b/src/libslic3r/Fill/FillSmooth.hpp index fa7a0b4b6..1c8a8fae7 100644 --- a/src/libslic3r/Fill/FillSmooth.hpp +++ b/src/libslic3r/Fill/FillSmooth.hpp @@ -15,7 +15,7 @@ public: anglePass[0] = 0; anglePass[1] = float(M_PI/2); anglePass[2] = 0; - fillPattern[0] = InfillPattern::ipRectilinearWGapFill; + fillPattern[0] = InfillPattern::ipMonotonicWGapFill;//ipRectilinearWGapFill; fillPattern[1] = InfillPattern::ipRectilinear; fillPattern[2] = InfillPattern::ipRectilinear; rolePass[0] = erNone;// erTopSolidInfill;