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
path: root/src
diff options
context:
space:
mode:
authorEnrico Turri <enricoturri@seznam.cz>2019-04-05 11:08:34 +0300
committerEnrico Turri <enricoturri@seznam.cz>2019-04-05 11:08:34 +0300
commita9223aeb5f803736b0c94b2ebbb466ae79e69399 (patch)
treed64be72a9a3b249d8ee7da8fbed99f9767c85053 /src
parent88059baddba34fafd9952775491732192999fb3d (diff)
Follow-up of 763a91e2ca73a2a9189ea47bbdcb80089e3262b8 -> take in account of ModelObject::origin_translation when saving parts and modifiers to stl
Diffstat (limited to 'src')
-rw-r--r--src/libslic3r/TriangleMesh.cpp5
-rw-r--r--src/libslic3r/TriangleMesh.hpp1
-rw-r--r--src/slic3r/GUI/Plater.cpp9
3 files changed, 11 insertions, 4 deletions
diff --git a/src/libslic3r/TriangleMesh.cpp b/src/libslic3r/TriangleMesh.cpp
index 0d9a79978..bfba364af 100644
--- a/src/libslic3r/TriangleMesh.cpp
+++ b/src/libslic3r/TriangleMesh.cpp
@@ -273,6 +273,11 @@ void TriangleMesh::translate(float x, float y, float z)
stl_invalidate_shared_vertices(&this->stl);
}
+void TriangleMesh::translate(const Vec3f &displacement)
+{
+ translate(displacement(0), displacement(1), displacement(2));
+}
+
void TriangleMesh::rotate(float angle, const Axis &axis)
{
if (angle == 0.f)
diff --git a/src/libslic3r/TriangleMesh.hpp b/src/libslic3r/TriangleMesh.hpp
index 527846f9d..d389500c6 100644
--- a/src/libslic3r/TriangleMesh.hpp
+++ b/src/libslic3r/TriangleMesh.hpp
@@ -40,6 +40,7 @@ public:
void scale(float factor);
void scale(const Vec3d &versor);
void translate(float x, float y, float z);
+ void translate(const Vec3f &displacement);
void rotate(float angle, const Axis &axis);
void rotate(float angle, const Vec3d& axis);
void rotate_x(float angle) { this->rotate(angle, X); }
diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp
index c3352866a..ec2e88f84 100644
--- a/src/slic3r/GUI/Plater.cpp
+++ b/src/slic3r/GUI/Plater.cpp
@@ -3380,18 +3380,19 @@ void Plater::export_stl(bool selection_only)
const auto obj_idx = selection.get_object_idx();
if (obj_idx == -1) { return; }
+ const ModelObject* model_object = p->model.objects[obj_idx];
if (selection.get_mode() == Selection::Instance)
- mesh = p->model.objects[obj_idx]->mesh();
+ mesh = model_object->mesh();
else
{
const GLVolume* volume = selection.get_volume(*selection.get_volume_idxs().begin());
- mesh = p->model.objects[obj_idx]->volumes[volume->volume_idx()]->mesh;
+ mesh = model_object->volumes[volume->volume_idx()]->mesh;
mesh.transform(volume->get_volume_transformation().get_matrix());
+ mesh.translate(-model_object->origin_translation.cast<float>());
}
}
- else {
+ else
mesh = p->model.mesh();
- }
Slic3r::store_stl(path_u8.c_str(), &mesh, true);
p->statusbar()->set_status_text(wxString::Format(_(L("STL file exported to %s")), path));