Merge branch 'tm_fix_split_arrange_crash'

fixes #2209
This commit is contained in:
tamasmeszaros 2020-12-03 14:59:52 +01:00
commit 4b040b8569
2 changed files with 11 additions and 6 deletions

View file

@ -572,10 +572,13 @@ static void process_arrangeable(const ArrangePolygon &arrpoly,
clppr::Polygon clpath(Slic3rMultiPoint_to_ClipperPath(p)); clppr::Polygon clpath(Slic3rMultiPoint_to_ClipperPath(p));
if (!clpath.Contour.empty()) { // This fixes:
auto firstp = clpath.Contour.front(); // https://github.com/prusa3d/PrusaSlicer/issues/2209
clpath.Contour.emplace_back(firstp); if (clpath.Contour.size() < 3)
} return;
auto firstp = clpath.Contour.front();
clpath.Contour.emplace_back(firstp);
outp.emplace_back(std::move(clpath)); outp.emplace_back(std::move(clpath));
outp.back().rotation(rotation); outp.back().rotation(rotation);

View file

@ -1273,6 +1273,10 @@ void ModelObject::split(ModelObjectPtrs* new_objects)
ModelVolume* volume = this->volumes.front(); ModelVolume* volume = this->volumes.front();
TriangleMeshPtrs meshptrs = volume->mesh().split(); TriangleMeshPtrs meshptrs = volume->mesh().split();
for (TriangleMesh *mesh : meshptrs) { for (TriangleMesh *mesh : meshptrs) {
// FIXME: crashes if not satisfied
if (mesh->facets_count() < 3) continue;
mesh->repair(); mesh->repair();
// XXX: this seems to be the only real usage of m_model, maybe refactor this so that it's not needed? // XXX: this seems to be the only real usage of m_model, maybe refactor this so that it's not needed?
@ -1858,8 +1862,6 @@ arrangement::ArrangePolygon ModelInstance::get_arrange_polygon() const
assert(!p.points.empty()); assert(!p.points.empty());
// this may happen for malformed models, see:
// https://github.com/prusa3d/PrusaSlicer/issues/2209
// if (!p.points.empty()) { // if (!p.points.empty()) {
// Polygons pp{p}; // Polygons pp{p};
// pp = p.simplify(scaled<double>(SIMPLIFY_TOLERANCE_MM)); // pp = p.simplify(scaled<double>(SIMPLIFY_TOLERANCE_MM));