From d65835f89b2d7138e5225bc1ddb4931f09ad4f73 Mon Sep 17 00:00:00 2001 From: bubnikv Date: Thu, 14 Dec 2017 13:26:44 +0100 Subject: Improvement of region classification numerical stability. The Clipper library is not stable when calcuating offsets of contours with holes. Replaced a single call of offset2 with offset_ex(offset_ex()). This is not the most efficient solution, but it fixes this problem. Fixes https://github.com/prusa3d/Slic3r/issues/456 --- xs/src/libslic3r/PrintObject.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'xs/src/libslic3r') diff --git a/xs/src/libslic3r/PrintObject.cpp b/xs/src/libslic3r/PrintObject.cpp index fc2979c20..c61fc102b 100644 --- a/xs/src/libslic3r/PrintObject.cpp +++ b/xs/src/libslic3r/PrintObject.cpp @@ -447,7 +447,8 @@ void PrintObject::detect_surfaces_type() to_polygons(upper_layer->get_region(idx_region)->slices.surfaces) : to_polygons(upper_layer->slices); surfaces_append(top, - offset2_ex(diff(layerm_slices_surfaces, upper_slices, true), -offset, offset), + //FIXME implement offset2_ex working over ExPolygons, that should be a bit more efficient than calling offset_ex twice. + offset_ex(offset_ex(diff_ex(layerm_slices_surfaces, upper_slices, true), -offset), offset), stTop); } else { // if no upper layer, all surfaces of this one are solid -- cgit v1.2.3