Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/prusa3d/PrusaSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVojtech Bubnik <bubnikv@gmail.com>2021-09-21 17:03:30 +0300
committerVojtech Bubnik <bubnikv@gmail.com>2021-09-21 17:04:04 +0300
commita5a7f64db08bbd1c93c0800b3f96d0e372ca1e40 (patch)
treeb352e91bd2abc45b78c1b0b14a62f339a596eb8a /src/libslic3r
parent306b54bc0a78ba768aa7544f117c2884a3af833e (diff)
Mesh statistics for imported STLs: Added backwards_edges to open_edges,
so that a mesh with incorrectly oriented faces will not be considered a manifold. Added assert for 3D convex hulls constructed by QHull. They shall be manifold (however sometimes they are not).
Diffstat (limited to 'src/libslic3r')
-rw-r--r--src/libslic3r/TriangleMesh.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/libslic3r/TriangleMesh.cpp b/src/libslic3r/TriangleMesh.cpp
index 183b195a1..73ac2eade 100644
--- a/src/libslic3r/TriangleMesh.cpp
+++ b/src/libslic3r/TriangleMesh.cpp
@@ -191,7 +191,7 @@ bool TriangleMesh::ReadSTLFile(const char* input_file, bool repair)
auto facets_w_1_bad_edge = stl.stats.connected_facets_2_edge - stl.stats.connected_facets_3_edge;
auto facets_w_2_bad_edge = stl.stats.connected_facets_1_edge - stl.stats.connected_facets_2_edge;
auto facets_w_3_bad_edge = stl.stats.number_of_facets - stl.stats.connected_facets_1_edge;
- m_stats.open_edges = facets_w_1_bad_edge + facets_w_2_bad_edge * 2 + facets_w_3_bad_edge * 3;
+ m_stats.open_edges = stl.stats.backwards_edges + facets_w_1_bad_edge + facets_w_2_bad_edge * 2 + facets_w_3_bad_edge * 3;
m_stats.edges_fixed = stl.stats.edges_fixed;
m_stats.degenerate_facets = stl.stats.degenerate_facets;
@@ -507,7 +507,9 @@ TriangleMesh TriangleMesh::convex_hull_3d() const
}
}
- return TriangleMesh { std::move(dst_vertices), std::move(dst_facets) };
+ TriangleMesh mesh{ std::move(dst_vertices), std::move(dst_facets) };
+ assert(mesh.stats().manifold());
+ return mesh;
}
std::vector<ExPolygons> TriangleMesh::slice(const std::vector<double> &z) const