From 64b3101cef4c0702fbf438152d6ba208c925733a Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Thu, 31 Oct 2024 15:37:38 +0500 Subject: [PATCH] Skip applying scale to geometry on duplicate #5663 --- src/bonsai/bonsai/bim/module/geometry/operator.py | 4 +++- src/bonsai/bonsai/core/geometry.py | 9 +++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/bonsai/bonsai/bim/module/geometry/operator.py b/src/bonsai/bonsai/bim/module/geometry/operator.py index 9cfc142be8..a2a5ce76e2 100644 --- a/src/bonsai/bonsai/bim/module/geometry/operator.py +++ b/src/bonsai/bonsai/bim/module/geometry/operator.py @@ -947,7 +947,9 @@ class OverrideDuplicateMove(bpy.types.Operator): # Prior to duplicating, sync the object placement to make decomposition recreation more stable. if tool.Ifc.is_moved(obj): - bonsai.core.geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj) + bonsai.core.geometry.edit_object_placement( + tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj, apply_scale=False + ) new_obj = obj.copy() temp_data = None diff --git a/src/bonsai/bonsai/core/geometry.py b/src/bonsai/bonsai/core/geometry.py index 939247c5e7..4fff7592ac 100644 --- a/src/bonsai/bonsai/core/geometry.py +++ b/src/bonsai/bonsai/core/geometry.py @@ -26,7 +26,11 @@ if TYPE_CHECKING: def edit_object_placement( - ifc: tool.Ifc, geometry: tool.Geometry, surveyor: tool.Surveyor, obj: Optional[bpy.types.Object] = None + ifc: tool.Ifc, + geometry: tool.Geometry, + surveyor: tool.Surveyor, + obj: Optional[bpy.types.Object] = None, + apply_scale: bool = True, ) -> None: """Sync current object placement. @@ -38,7 +42,8 @@ def edit_object_placement( if not element: return geometry.clear_cache(element) - geometry.clear_scale(obj) + if apply_scale: + geometry.clear_scale(obj) geometry.get_blender_offset_type(obj) ifc.run("geometry.edit_object_placement", product=element, matrix=surveyor.get_absolute_matrix(obj)) geometry.record_object_position(obj)