From e3d44b07fec13e1a9ead40bb954f48914cac6ad1 Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Mon, 24 Sep 2018 15:21:18 +0200 Subject: [PATCH] Fixed arrange for objects with 3D rotations --- lib/Slic3r/Model.pm | 2 +- xs/src/libslic3r/ModelArrange.hpp | 3 +-- xs/xsp/Model.xsp | 4 ++-- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/lib/Slic3r/Model.pm b/lib/Slic3r/Model.pm index 22a76100d..6ec3fc1bf 100644 --- a/lib/Slic3r/Model.pm +++ b/lib/Slic3r/Model.pm @@ -122,7 +122,7 @@ sub add_instance { my $new_instance = $self->_add_instance; - $new_instance->set_rotation($args{rotation}) + $new_instance->set_rotations($args{rotation}) if defined $args{rotation}; $new_instance->set_scaling_factor($args{scaling_factor}) if defined $args{scaling_factor}; diff --git a/xs/src/libslic3r/ModelArrange.hpp b/xs/src/libslic3r/ModelArrange.hpp index 9f983ee9f..b203193ef 100644 --- a/xs/src/libslic3r/ModelArrange.hpp +++ b/xs/src/libslic3r/ModelArrange.hpp @@ -687,8 +687,7 @@ void applyResult( // write the transformation data into the model instance #if ENABLE_MODELINSTANCE_3D_ROTATION - // CHECK_ME -> Is the following correct ? - inst_ptr->set_rotation(Vec3d(0.0, 0.0, rot)); + inst_ptr->set_rotation(Z, rot); #else inst_ptr->rotation = rot; #endif // ENABLE_MODELINSTANCE_3D_ROTATION diff --git a/xs/xsp/Model.xsp b/xs/xsp/Model.xsp index 892ecd861..d5192cf8e 100644 --- a/xs/xsp/Model.xsp +++ b/xs/xsp/Model.xsp @@ -365,8 +365,8 @@ ModelMaterial::attributes() %code%{ RETVAL = THIS->get_object(); %}; #if ENABLE_MODELINSTANCE_3D_ROTATION - double rotation() - %code%{ RETVAL = THIS->get_rotation(Z); %}; + Vec3d* rotation() + %code%{ RETVAL = new Vec3d(THIS->get_rotation(X), THIS->get_rotation(Y), THIS->get_rotation(Z)); %}; #else double rotation() %code%{ RETVAL = THIS->rotation; %};