From 1901533470a16e8405790e0adcda4e0aab3d22d2 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Thu, 20 Jul 2023 19:33:13 +0500 Subject: [PATCH] Distance subtype for rl1, rl2 and x/y/z (opening dimensions) in BIM Tool --- .../blenderbim/bim/module/model/opening.py | 3 +-- src/blenderbim/blenderbim/bim/module/model/prop.py | 12 +++++++----- src/blenderbim/blenderbim/bim/module/model/wall.py | 2 +- .../blenderbim/bim/module/model/workspace.py | 3 +-- src/blenderbim/blenderbim/tool/project.py | 8 ++++---- src/blenderbim/test/tool/test_project.py | 8 ++++---- 6 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/module/model/opening.py b/src/blenderbim/blenderbim/bim/module/model/opening.py index bd7e7f2974..2a1e7267f1 100644 --- a/src/blenderbim/blenderbim/bim/module/model/opening.py +++ b/src/blenderbim/blenderbim/bim/module/model/opening.py @@ -91,7 +91,7 @@ class FilledOpeningGenerator: if filling.is_a("IfcDoor"): new_matrix.translation.z = voided_obj.matrix_world.translation.z else: - new_matrix.translation.z = voided_obj.matrix_world.translation.z + (props.rl2 * unit_scale) + new_matrix.translation.z = voided_obj.matrix_world.translation.z + props.rl2 filling_obj.matrix_world = new_matrix bpy.context.view_layer.update() @@ -557,7 +557,6 @@ class ShowBooleans(Operator, tool.Ifc.Operator, AddObjectHelper): and obj.data.BIMMeshProperties.ifc_definition_id ) - def _execute(self, context): obj = context.active_object unit_scale = ifcopenshell.util.unit.calculate_unit_scale(tool.Ifc.get()) diff --git a/src/blenderbim/blenderbim/bim/module/model/prop.py b/src/blenderbim/blenderbim/bim/module/model/prop.py index dcbdd45366..2089302990 100644 --- a/src/blenderbim/blenderbim/bim/module/model/prop.py +++ b/src/blenderbim/blenderbim/bim/module/model/prop.py @@ -128,11 +128,13 @@ class BIMModelProperties(PropertyGroup): ) length: bpy.props.FloatProperty(default=42.0, subtype="DISTANCE") openings: bpy.props.CollectionProperty(type=ObjProperty) - x: bpy.props.FloatProperty(name="X", default=0.5) - y: bpy.props.FloatProperty(name="Y", default=0.5) - z: bpy.props.FloatProperty(name="Z", default=0.5) - rl1: bpy.props.FloatProperty(name="RL", default=1) # Used for things like walls, doors, flooring, skirting, etc - rl2: bpy.props.FloatProperty(name="RL", default=1) # Used for things like windows, other hosted furniture + x: bpy.props.FloatProperty(name="X", default=0.5, subtype="DISTANCE", "Size by X axis for the opening") + y: bpy.props.FloatProperty(name="Y", default=0.5, subtype="DISTANCE", "Size by Y axis for the opening") + z: bpy.props.FloatProperty(name="Z", default=0.5, subtype="DISTANCE", "Size by Z axis for the opening") + # Used for things like walls, doors, flooring, skirting, etc + rl1: bpy.props.FloatProperty(name="RL", default=1, subtype="DISTANCE", description="Z offset for walls") + # Used for things like windows, other hosted furniture + rl2: bpy.props.FloatProperty(name="RL", default=1, subtype="DISTANCE", description="Z offset for windows") x_angle: bpy.props.FloatProperty(name="X Angle", default=0, subtype="ANGLE", min=0, max=pi / 180 * 89) type_page: bpy.props.IntProperty(name="Type Page", default=1, update=update_type_page) type_template: bpy.props.EnumProperty( diff --git a/src/blenderbim/blenderbim/bim/module/model/wall.py b/src/blenderbim/blenderbim/bim/module/model/wall.py index bca89ecda4..09836c0d33 100644 --- a/src/blenderbim/blenderbim/bim/module/model/wall.py +++ b/src/blenderbim/blenderbim/bim/module/model/wall.py @@ -589,7 +589,7 @@ class DumbWallGenerator: matrix_world = Matrix.Rotation(self.rotation, 4, "Z") matrix_world.translation = self.location if self.collection_obj and self.collection_obj.BIMObjectProperties.ifc_definition_id: - matrix_world.location.z = self.collection_obj.location.z + (props.rl1 * self.unit_scale) + matrix_world.location.z = self.collection_obj.location.z + props.rl1 obj.matrix_world = matrix_world bpy.context.view_layer.update() self.collection.objects.link(obj) diff --git a/src/blenderbim/blenderbim/bim/module/model/workspace.py b/src/blenderbim/blenderbim/bim/module/model/workspace.py index 26f5631947..6e63eeb4b7 100644 --- a/src/blenderbim/blenderbim/bim/module/model/workspace.py +++ b/src/blenderbim/blenderbim/bim/module/model/workspace.py @@ -176,7 +176,6 @@ class BimToolUI: row.operator("bim.join_wall", icon="X", text="").join_type = "" elif AuthoringData.data["active_material_usage"] == "LAYER3": - if len(context.selected_objects) == 1: add_layout_hotkey_operator(cls.layout, "Edit Profile", "S_E", "") elif "LAYER2" in AuthoringData.data["selected_material_usages"]: @@ -591,7 +590,7 @@ class Hotkey(bpy.types.Operator, tool.Ifc.Operator): bpy.ops.bim.add_opening() else: unit_scale = ifcopenshell.util.unit.calculate_unit_scale(tool.Ifc.get()) - bpy.ops.bim.add_potential_opening(x=self.x * unit_scale, y=self.y * unit_scale, z=self.z * unit_scale) + bpy.ops.bim.add_potential_opening(x=self.x, y=self.y, z=self.z) self.props.x = self.x self.props.y = self.y self.props.z = self.z diff --git a/src/blenderbim/blenderbim/tool/project.py b/src/blenderbim/blenderbim/tool/project.py index db8038b1f3..537426f769 100644 --- a/src/blenderbim/blenderbim/tool/project.py +++ b/src/blenderbim/blenderbim/tool/project.py @@ -138,7 +138,7 @@ class Project(blenderbim.core.tool.Project): props.extrusion_depth = 3 props.length = 1 props.rl1 = 0 - props.rl2 = 1 / unit_scale - props.x = 0.5 / unit_scale - props.y = 0.5 / unit_scale - props.z = 0.5 / unit_scale + props.rl2 = 1 + props.x = 0.5 + props.y = 0.5 + props.z = 0.5 diff --git a/src/blenderbim/test/tool/test_project.py b/src/blenderbim/test/tool/test_project.py index 1cbd4a4cfb..043d251616 100644 --- a/src/blenderbim/test/tool/test_project.py +++ b/src/blenderbim/test/tool/test_project.py @@ -133,7 +133,7 @@ class TestSetDefaultModelingDimensions(NewFile): assert props.extrusion_depth == 3 assert props.length == 1 assert props.rl1 == 0 - assert props.rl2 == 1000 - assert props.x == 500 - assert props.y == 500 - assert props.z == 500 + assert props.rl2 == 1 + assert props.x == 0.5 + assert props.y == 0.5 + assert props.z == 0.5