diff --git a/xs/src/libslic3r/IO.cpp b/xs/src/libslic3r/IO.cpp index 60c1ff686..ee81924e5 100644 --- a/xs/src/libslic3r/IO.cpp +++ b/xs/src/libslic3r/IO.cpp @@ -50,6 +50,7 @@ bool POV::write(TriangleMesh& mesh, std::string output_file) { TriangleMesh mesh2 = mesh; + mesh2.center_around_origin(); { Sizef3 size = mesh2.bounding_box().size(); coordf_t maxdim = fmax(size.x, fmax(size.y, size.y)); diff --git a/xs/src/libslic3r/TriangleMesh.cpp b/xs/src/libslic3r/TriangleMesh.cpp index d29503de7..cea6706e9 100644 --- a/xs/src/libslic3r/TriangleMesh.cpp +++ b/xs/src/libslic3r/TriangleMesh.cpp @@ -262,6 +262,16 @@ void TriangleMesh::align_to_origin() ); } +void TriangleMesh::center_around_origin() +{ + this->align_to_origin(); + this->translate( + -(this->stl.stats.size.x/2), + -(this->stl.stats.size.y/2), + -(this->stl.stats.size.z/2) + ); +} + void TriangleMesh::rotate(double angle, Point* center) { this->translate(-center->x, -center->y, 0); diff --git a/xs/src/libslic3r/TriangleMesh.hpp b/xs/src/libslic3r/TriangleMesh.hpp index 62c38e90b..f0dd66fba 100644 --- a/xs/src/libslic3r/TriangleMesh.hpp +++ b/xs/src/libslic3r/TriangleMesh.hpp @@ -41,6 +41,7 @@ class TriangleMesh void mirror_y(); void mirror_z(); void align_to_origin(); + void center_around_origin(); void rotate(double angle, Point* center); TriangleMeshPtrs split() const; void merge(const TriangleMesh &mesh);