From 73af0ed331601652e5b101559e7e5060c3c466cb Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Tue, 2 Nov 2021 09:52:44 +0100 Subject: [PATCH] Fixing slow conversion from cgal mesh format --- src/libslic3r/MeshBoolean.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/MeshBoolean.cpp b/src/libslic3r/MeshBoolean.cpp index 95daa33a60..346d7a9546 100644 --- a/src/libslic3r/MeshBoolean.cpp +++ b/src/libslic3r/MeshBoolean.cpp @@ -148,19 +148,23 @@ template TriangleMesh cgal_to_triangle_mesh(const _Mesh &cgalmesh) its.vertices.reserve(cgalmesh.num_vertices()); its.indices.reserve(cgalmesh.num_faces()); - for (auto &vi : cgalmesh.vertices()) { + const auto &faces = cgalmesh.faces(); + const auto &vertices = cgalmesh.vertices(); + int vsize = int(vertices.size()); + + for (auto &vi : vertices) { auto &v = cgalmesh.point(vi); // Don't ask... its.vertices.emplace_back(to_vec3f(v)); } - - for (auto &face : cgalmesh.faces()) { + + for (auto &face : faces) { auto vtc = cgalmesh.vertices_around_face(cgalmesh.halfedge(face)); int i = 0; Vec3i facet; for (auto v : vtc) { int iv = v; - if (i > 2 || iv < 0 || iv >= int(cgalmesh.vertices().size())) { i = 0; break; } + if (i > 2 || iv < 0 || iv >= vsize) { i = 0; break; } facet(i++) = iv; }