From bb8113dee960730ba10c861224ffdd3cb995548d Mon Sep 17 00:00:00 2001 From: Wang YB <94800665+Gradbb@users.noreply.github.com> Date: Sat, 30 Dec 2023 10:45:44 +0800 Subject: [PATCH] update infill_overlap --- src/libslic3r/Fill/Fill.cpp | 18 +++++++++++++++++- src/libslic3r/Fill/FillBase.hpp | 5 +++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/libslic3r/Fill/Fill.cpp b/src/libslic3r/Fill/Fill.cpp index 55518cf..0f279c3 100644 --- a/src/libslic3r/Fill/Fill.cpp +++ b/src/libslic3r/Fill/Fill.cpp @@ -62,6 +62,9 @@ struct SurfaceFillParams // Index of this entry in a linear vector. size_t idx = 0; + //w14 + double perimeter_extrusion_width = 0; + double infill_overlap = 0; bool operator<(const SurfaceFillParams &rhs) const { @@ -549,6 +552,9 @@ void Layer::make_fills(FillAdaptive::Octree* adaptive_fill_octree, FillAdaptive: params.resolution = resolution; params.use_arachne = (perimeter_generator == PerimeterGeneratorType::Arachne && surface_fill.params.pattern == ipConcentric) || surface_fill.params.pattern == ipEnsuring; params.layer_height = layerm.layer()->height; + //w14 + const PrintRegionConfig &getregion = layerm.region().config(); + params.perimeter_extrusion_width = float(getregion.perimeter_extrusion_width); for (ExPolygon &expoly : surface_fill.expolygons) { // Spacing is modified by the filler to indicate adjustments. Reset it for each expolygon. @@ -557,8 +563,18 @@ void Layer::make_fills(FillAdaptive::Octree* adaptive_fill_octree, FillAdaptive: Polylines polylines; ThickPolylines thick_polylines; try { - if (params.use_arachne) + if (params.use_arachne) { + //w14 + if (surface_fill.surface.surface_type == stInternalSolid) { + getregion.infill_overlap.percent ? + params.temp_set = params.perimeter_extrusion_width *getregion.infill_overlap.value / 100 : + params.temp_set = float(getregion.infill_overlap.value); + + f->overlap = params.temp_set * (-1); + } thick_polylines = f->fill_surface_arachne(&surface_fill.surface, params); + f->overlap = 0; + } else polylines = f->fill_surface(&surface_fill.surface, params); } catch (InfillFailedException &) { diff --git a/src/libslic3r/Fill/FillBase.hpp b/src/libslic3r/Fill/FillBase.hpp index 4130cc3..1e4ff8a 100644 --- a/src/libslic3r/Fill/FillBase.hpp +++ b/src/libslic3r/Fill/FillBase.hpp @@ -63,6 +63,11 @@ struct FillParams bool use_arachne { false }; // Layer height for Concentric infill with Arachne. coordf_t layer_height { 0.f }; + //w14 + double perimeter_extrusion_width{0}; + double infill_overlap {0}; + double castifop{0}; + float temp_set; }; static_assert(IsTriviallyCopyable::value, "FillParams class is not POD (and it should be - see constructor).");