From 91b1d469eb01a918d7ea824065d60787ad3db1e5 Mon Sep 17 00:00:00 2001 From: tamasmeszaros <meszaros.q@gmail.com> Date: Thu, 3 Dec 2020 14:16:13 +0100 Subject: [PATCH] Fix arrange with malformed contours --- src/libslic3r/Arrange.cpp | 11 +++++++---- src/libslic3r/Model.cpp | 2 -- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/libslic3r/Arrange.cpp b/src/libslic3r/Arrange.cpp index bb13a9a0a..3800d49e3 100644 --- a/src/libslic3r/Arrange.cpp +++ b/src/libslic3r/Arrange.cpp @@ -572,10 +572,13 @@ static void process_arrangeable(const ArrangePolygon &arrpoly, clppr::Polygon clpath(Slic3rMultiPoint_to_ClipperPath(p)); - if (!clpath.Contour.empty()) { - auto firstp = clpath.Contour.front(); - clpath.Contour.emplace_back(firstp); - } + // This fixes: + // https://github.com/prusa3d/PrusaSlicer/issues/2209 + if (clpath.Contour.size() < 3) + return; + + auto firstp = clpath.Contour.front(); + clpath.Contour.emplace_back(firstp); outp.emplace_back(std::move(clpath)); outp.back().rotation(rotation); diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index b06b1f347..c0258e719 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -1858,8 +1858,6 @@ arrangement::ArrangePolygon ModelInstance::get_arrange_polygon() const assert(!p.points.empty()); - // this may happen for malformed models, see: - // https://github.com/prusa3d/PrusaSlicer/issues/2209 // if (!p.points.empty()) { // Polygons pp{p}; // pp = p.simplify(scaled<double>(SIMPLIFY_TOLERANCE_MM));