From 76f8e355022b001dead35b8913af039fb97c739f Mon Sep 17 00:00:00 2001 From: Alessandro Ranellucci Date: Sat, 9 Jul 2016 14:28:24 +0200 Subject: [PATCH] Center mesh around origin for POV export --- xs/src/libslic3r/IO.cpp | 1 + xs/src/libslic3r/TriangleMesh.cpp | 10 ++++++++++ xs/src/libslic3r/TriangleMesh.hpp | 1 + 3 files changed, 12 insertions(+) diff --git a/xs/src/libslic3r/IO.cpp b/xs/src/libslic3r/IO.cpp index 60c1ff686b..ee81924e5c 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 d29503de7f..cea6706e99 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 62c38e90b5..f0dd66fbad 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);