From 4c93d6e59ddd9faac334b72bb68c16908a4945f3 Mon Sep 17 00:00:00 2001 From: wintergua Date: Fri, 24 Feb 2023 16:52:43 +0800 Subject: [PATCH] FIX: Brim may not generate with a large positive xy compensation value studio-2344 Change-Id: I74e91ccae8465ab747f2ed7e95e3d2694238c407 (cherry picked from commit a076c0541e88c68b11cf3b91725da6f8421c405b) --- src/libslic3r/PrintObjectSlice.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/PrintObjectSlice.cpp b/src/libslic3r/PrintObjectSlice.cpp index 8ed2565c73..9dcdbe044e 100644 --- a/src/libslic3r/PrintObjectSlice.cpp +++ b/src/libslic3r/PrintObjectSlice.cpp @@ -563,15 +563,18 @@ void reGroupingLayerPolygons(std::vector& gvss, ExPolygons std::vector epsIndex; epsIndex.resize(eps.size(), -1); for (int ie = 0; ie != eps.size(); ie++) { + if (eps[ie].area() <= 0) + continue; + double minArea = eps[ie].area(); for (int iv = 0; iv != gvss.size(); iv++) { auto clipedExPolys = diff_ex(eps[ie], gvss[iv].slices); double area = 0; for (const auto& ce : clipedExPolys) { area += ce.area(); } - if (eps[ie].area() > 0 && area / eps[ie].area() < 0.3) { + if (area < minArea) { + minArea = area; epsIndex[ie] = iv; - break; } } }