From d42b4924391a03f2141131b43e96ca1c0ffa1bd0 Mon Sep 17 00:00:00 2001 From: "xun.zhang" Date: Wed, 14 May 2025 16:32:44 +0800 Subject: [PATCH] FIX: reverse the logic of narrow area detect 1. Add reorder function for floating concentric jira: STUDIO-11675,STUDIO-11691 Signed-off-by: xun.zhang Change-Id: Ia2f5e8d6ca631794fb4bc8f4abcb541f92e52c78 --- src/libslic3r/Fill/Fill.cpp | 12 +++++++++++- src/libslic3r/Fill/FillFloatingConcentric.cpp | 2 ++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/libslic3r/Fill/Fill.cpp b/src/libslic3r/Fill/Fill.cpp index 4804107cd..3aded3c7e 100644 --- a/src/libslic3r/Fill/Fill.cpp +++ b/src/libslic3r/Fill/Fill.cpp @@ -135,6 +135,16 @@ struct SurfaceFill { ExPolygons no_overlap_expolygons; }; +// BBS: used to judge whether the internal solid infill area is narrow +static bool is_narrow_infill_area(const ExPolygon& expolygon) +{ + ExPolygons offsets = offset_ex(expolygon, -scale_(NARROW_INFILL_AREA_THRESHOLD)); + if (offsets.empty()) + return true; + + return false; +} + std::vector group_fills(const Layer &layer) { std::vector surface_fills; @@ -384,7 +394,7 @@ std::vector group_fills(const Layer &layer) auto bbox = get_extents(surface_fills[i].expolygons[j]); auto clipped_internals = ClipperUtils::clip_clipper_polygons_with_subject_bbox(lower_internal_areas, bbox.inflated(scale_(2))); // expand a little auto clipped_internal_bbox = get_extents(clipped_internals); - if (is_narrow_expolygon(surface_fills[i].expolygons[j], narrow_threshold)) { + if (is_narrow_infill_area(surface_fills[i].expolygons[j])) { if (!clipped_internals.empty() && bbox.overlap(clipped_internal_bbox) && !intersection_ex(offset_ex(surface_fills[i].expolygons[j],SCALED_EPSILON), clipped_internals).empty()) { narrow_floating_expoly_idx.emplace_back(j); } diff --git a/src/libslic3r/Fill/FillFloatingConcentric.cpp b/src/libslic3r/Fill/FillFloatingConcentric.cpp index a10c4589e..e9d929f0e 100644 --- a/src/libslic3r/Fill/FillFloatingConcentric.cpp +++ b/src/libslic3r/Fill/FillFloatingConcentric.cpp @@ -7,6 +7,7 @@ #include "../format.hpp" #include "FillFloatingConcentric.hpp" #include +#include namespace Slic3r { @@ -855,6 +856,7 @@ FloatingThickPolylines FillFloatingConcentric::fill_surface_arachne_floating(con void FillFloatingConcentric::fill_surface_extrusion(const Surface* surface, const FillParams& params, ExtrusionEntitiesPtr& out) { FloatingThickPolylines floating_lines = this->fill_surface_arachne_floating(surface, params); + //reorder_by_shortest_traverse(floating_lines); if (floating_lines.empty()) return; Flow new_flow = params.flow.with_spacing(this->spacing);