From 0207b7915ecc4957749f3a419ead6d1214539a48 Mon Sep 17 00:00:00 2001 From: "qing.zhang" Date: Fri, 9 Jun 2023 14:51:26 +0800 Subject: [PATCH] ENH: fix hole compensation fail with modifier Signed-off-by: qing.zhang Change-Id: Ifa71772a1ded8fcb9ae2e4de6723c1a41b3cfe6f --- src/libslic3r/PrintObjectSlice.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/PrintObjectSlice.cpp b/src/libslic3r/PrintObjectSlice.cpp index 35feb6eca..341b185f3 100644 --- a/src/libslic3r/PrintObjectSlice.cpp +++ b/src/libslic3r/PrintObjectSlice.cpp @@ -1147,8 +1147,13 @@ void PrintObject::slice_volumes() std::min(0.f, xy_hole_scaled), trimming); //BBS: trim surfaces - for (size_t region_id = 0; region_id < layer->regions().size(); ++region_id) - layer->regions()[region_id]->trim_surfaces(to_polygons(trimming)); + for (size_t region_id = 0; region_id < layer->regions().size(); ++region_id) { + // BBS: split trimming result by region + Polygons contour_exp; + for (Surface surface : layer->regions()[region_id]->slices.surfaces) contour_exp.push_back(surface.expolygon.contour); + + layer->regions()[region_id]->slices.set(intersection_ex(contour_exp, to_polygons(trimming)), stInternal); + } } } // Merge all regions' slices to get islands, chain them by a shortest path.