diff --git a/src/libslic3r/MeshBoolean.cpp b/src/libslic3r/MeshBoolean.cpp index 5a518d5806..7507e1c548 100644 --- a/src/libslic3r/MeshBoolean.cpp +++ b/src/libslic3r/MeshBoolean.cpp @@ -150,11 +150,20 @@ template TriangleMesh cgal_to_triangle_mesh(const _Mesh &cgalmesh) } for (auto &face : cgalmesh.faces()) { - auto vtc = cgalmesh.vertices_around_face(cgalmesh.halfedge(face)); - int i = 0; - Vec3i trface; - for (auto v : vtc) trface(i++) = static_cast(v); - facets.emplace_back(trface); + auto vtc = cgalmesh.vertices_around_face(cgalmesh.halfedge(face)); + + int i = 0; + Vec3i facet; + for (const auto &v : vtc) { + if (i > 2) { i = 0; break; } + facet(i++) = v; + } + + if (i == 3) { + facets.emplace_back(facet); + } else { + BOOST_LOG_TRIVIAL(error) << "CGAL face is not a triangle."; + } } TriangleMesh out{points, facets};