Ported test_trianglemesh from upstream slic3r, thanks @lordofhyphens

This commit is contained in:
bubnikv 2019-10-15 13:49:28 +02:00
parent 67e1eba8e6
commit c99e7cb0df
7 changed files with 506 additions and 9 deletions

View file

@ -593,6 +593,16 @@ TriangleMesh TriangleMesh::convex_hull_3d() const
return output_mesh;
}
std::vector<ExPolygons> TriangleMesh::slice(const std::vector<double> &z)
{
// convert doubles to floats
std::vector<float> z_f(z.begin(), z.end());
TriangleMeshSlicer mslicer(this);
std::vector<ExPolygons> layers;
mslicer.slice(z_f, 0.0004f, &layers, [](){});
return layers;
}
void TriangleMesh::require_shared_vertices()
{
BOOST_LOG_TRIVIAL(trace) << "TriangleMeshSlicer::require_shared_vertices - start";
@ -1861,7 +1871,8 @@ void TriangleMeshSlicer::cut(float z, TriangleMesh* upper, TriangleMesh* lower)
}
// Generate the vertex list for a cube solid of arbitrary size in X/Y/Z.
TriangleMesh make_cube(double x, double y, double z) {
TriangleMesh make_cube(double x, double y, double z)
{
Vec3d pv[8] = {
Vec3d(x, y, 0), Vec3d(x, 0, 0), Vec3d(0, 0, 0),
Vec3d(0, y, 0), Vec3d(x, y, z), Vec3d(0, y, z),
@ -1878,7 +1889,8 @@ TriangleMesh make_cube(double x, double y, double z) {
Pointf3s vertices(&pv[0], &pv[0]+8);
TriangleMesh mesh(vertices ,facets);
return mesh;
mesh.repair();
return mesh;
}
// Generate the mesh for a cylinder and return it, using
@ -1922,7 +1934,9 @@ TriangleMesh make_cylinder(double r, double h, double fa)
facets.emplace_back(Vec3crd(id, 2, 3));
facets.emplace_back(Vec3crd(id, id - 1, 2));
return TriangleMesh(std::move(vertices), std::move(facets));
TriangleMesh mesh(std::move(vertices), std::move(facets));
mesh.repair();
return mesh;
}
// Generates mesh for a sphere centered about the origin, using the generated angle
@ -1978,7 +1992,9 @@ TriangleMesh make_sphere(double radius, double fa)
k2 = k2_next;
}
}
return TriangleMesh(std::move(vertices), std::move(facets));
TriangleMesh mesh(std::move(vertices), std::move(facets));
mesh.repair();
return mesh;
}
}