From 34fb5c84d9c95cbe7c3fab3b9990c2b57a44c0c1 Mon Sep 17 00:00:00 2001 From: "zhimin.zeng" Date: Tue, 11 Oct 2022 15:18:35 +0800 Subject: [PATCH] FIX: the position of the assembly view is wrong after adding text Change-Id: I1fa465b9155a0718ca7122d4591023de963152c6 (cherry picked from commit cd95bfaea18b9f77f9b3deb1bf27ee1188201f69) --- src/slic3r/GUI/GUI_ObjectList.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 80971189b..c61ae0482 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -5041,6 +5041,15 @@ void ObjectList::apply_object_instance_transfrom_to_all_volumes(ModelObject *mod const Geometry::Transformation &instance_transformation = model_object->instances[0]->get_transformation(); Vec3d original_instance_center = instance_transformation.get_offset(); + // apply the instance_transform(except offset) to assemble_transform + Geometry::Transformation instance_transformation_copy = instance_transformation; + instance_transformation_copy.set_offset(Vec3d(0, 0, 0)); // remove the effect of offset + const Transform3d & instance_inverse_matrix = instance_transformation_copy.get_matrix().inverse(); + const Transform3d & assemble_matrix = model_object->instances[0]->get_assemble_transformation().get_matrix(); + Transform3d new_assemble_transform = assemble_matrix * instance_inverse_matrix; + model_object->instances[0]->set_assemble_from_transform(new_assemble_transform); + + // apply the instance_transform to volumn const Transform3d &transformation_matrix = instance_transformation.get_matrix(); for (ModelVolume *volume : model_object->volumes) { const Transform3d &volume_matrix = volume->get_matrix();