From 639bf63af52424400e932ef45d20c16c285b9d14 Mon Sep 17 00:00:00 2001 From: "zhimin.zeng" Date: Fri, 21 Jul 2023 18:19:05 +0800 Subject: [PATCH] FIX: filament painting doesnt work properly #2078 STUDIO-3731 Change-Id: Ifc93baf194d5e81eb7e00facf85344bfc05878fc --- src/libslic3r/MultiMaterialSegmentation.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/libslic3r/MultiMaterialSegmentation.cpp b/src/libslic3r/MultiMaterialSegmentation.cpp index 06efb5fdd..2d3710878 100644 --- a/src/libslic3r/MultiMaterialSegmentation.cpp +++ b/src/libslic3r/MultiMaterialSegmentation.cpp @@ -1662,9 +1662,12 @@ static inline std::vector> mmu_segmentation_top_and_bott self = union_ex(self); } // Trim one region by the other if some of the regions overlap. - for (size_t color_idx = 1; color_idx < triangles_by_color_merged.size(); ++ color_idx) - triangles_by_color_merged[color_idx][layer_idx] = diff_ex(triangles_by_color_merged[color_idx][layer_idx], - triangles_by_color_merged[color_idx - 1][layer_idx]); + ExPolygons painted_regions; + for (size_t color_idx = 1; color_idx < triangles_by_color_merged.size(); ++color_idx) { + triangles_by_color_merged[color_idx][layer_idx] = diff_ex(triangles_by_color_merged[color_idx][layer_idx], painted_regions); + append(painted_regions, triangles_by_color_merged[color_idx][layer_idx]); + } + triangles_by_color_merged[0][layer_idx] = diff_ex(triangles_by_color_merged[0][layer_idx], painted_regions); } });