From dde886aae8387caa296aa7b9a5564bf73d802cf2 Mon Sep 17 00:00:00 2001 From: "zhimin.zeng" Date: Mon, 5 Jun 2023 18:01:40 +0800 Subject: [PATCH] FIX: Scale coordinate display axis is wrong after the rotation STUDIO-2658 Change-Id: Ie3659ac29bdbc6f908fbd6fc3463d4498b1a1bbb --- src/libslic3r/Model.cpp | 7 ++++--- src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp | 5 +++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index 563fc8211..770f9b23d 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -2423,9 +2423,10 @@ void ModelObject::bake_xy_rotation_into_meshes(size_t instance_idx) assert(instance_idx < this->instances.size()); const Geometry::Transformation reference_trafo = this->instances[instance_idx]->get_transformation(); - if (Geometry::is_rotation_ninety_degrees(reference_trafo.get_rotation())) - // nothing to do, scaling in the world coordinate space is possible in the representation of Geometry::Transformation. - return; + // BBS: As long as the rotation value changed, the rotation angle will be applied to the mesh. + //if (Geometry::is_rotation_ninety_degrees(reference_trafo.get_rotation())) + // // nothing to do, scaling in the world coordinate space is possible in the representation of Geometry::Transformation. + // return; bool left_handed = reference_trafo.is_left_handed(); bool has_mirrorring = ! reference_trafo.get_mirror().isApprox(Vec3d(1., 1., 1.)); diff --git a/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp b/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp index 7c7b158d0..df3daa365 100644 --- a/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp +++ b/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp @@ -452,7 +452,8 @@ void GizmoObjectManipulation::set_uniform_scaling(const bool new_value) // all volumes in the selection belongs to the same instance, any of them contains the needed instance data, so we take the first one const GLVolume* volume = selection.get_volume(*selection.get_volume_idxs().begin()); // Is the angle close to a multiple of 90 degrees? - if (! Geometry::is_rotation_ninety_degrees(volume->get_instance_rotation())) { + // BBS: As long as the rotation value changed, the rotation angle will be applied to the mesh. + // if (! Geometry::is_rotation_ninety_degrees(volume->get_instance_rotation())) { // Cannot apply scaling in the world coordinate system. // BBS: remove tilt prompt dialog @@ -462,7 +463,7 @@ void GizmoObjectManipulation::set_uniform_scaling(const bool new_value) wxGetApp().plater()->update(); // Recalculate cached values at this panel, refresh the screen. this->UpdateAndShow(true); - } + // } } m_uniform_scale = new_value; }