diff --git a/src/libslic3r/TriangleMesh.cpp b/src/libslic3r/TriangleMesh.cpp index 9a1a9def4e..7595688603 100644 --- a/src/libslic3r/TriangleMesh.cpp +++ b/src/libslic3r/TriangleMesh.cpp @@ -361,6 +361,10 @@ bool TriangleMesh::is_splittable() const */ std::deque TriangleMesh::find_unvisited_neighbors(std::vector &facet_visited) const { + // Make sure we're not operating on a broken mesh. + if (!this->repaired) + throw std::runtime_error("split() requires repair()"); + // If the visited list is empty, populate it with false for every facet. if (facet_visited.empty()) { facet_visited = std::vector(this->stl.stats.number_of_facets, false); @@ -397,10 +401,6 @@ std::deque TriangleMesh::find_unvisited_neighbors(std::vector &f */ TriangleMeshPtrs TriangleMesh::split() const { - // Make sure we're not operating on a broken mesh. - if (!this->repaired) - throw std::runtime_error("split() requires repair()"); - // Loop while we have remaining facets. std::vector facet_visited; TriangleMeshPtrs meshes; @@ -417,7 +417,7 @@ TriangleMeshPtrs TriangleMesh::split() const mesh->stl.stats.original_num_facets = mesh->stl.stats.number_of_facets; stl_clear_error(&mesh->stl); stl_allocate(&mesh->stl); - + // Assign the facets to the new mesh. bool first = true; for (auto facet = facets.begin(); facet != facets.end(); ++ facet) { @@ -425,7 +425,7 @@ TriangleMeshPtrs TriangleMesh::split() const stl_facet_stats(&mesh->stl, this->stl.facet_start[*facet], first); } } - + return meshes; }