From 8c302ed85c84bee7a4250a3739e0886eec24563a Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Thu, 4 May 2023 15:53:29 +0500 Subject: [PATCH] Changed x_angle subtype to degrees Now BIMModelProperties.x_angle stores data in radians internally but for user it still appears as degrees --- src/blenderbim/blenderbim/bim/handler.py | 4 ++-- src/blenderbim/blenderbim/bim/module/model/prop.py | 2 +- src/blenderbim/blenderbim/bim/module/model/slab.py | 6 +++--- src/blenderbim/blenderbim/bim/module/model/wall.py | 4 ++-- src/blenderbim/blenderbim/bim/module/model/workspace.py | 1 + 5 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/handler.py b/src/blenderbim/blenderbim/bim/handler.py index 244b1eef2e..1705b3beba 100644 --- a/src/blenderbim/blenderbim/bim/handler.py +++ b/src/blenderbim/blenderbim/bim/handler.py @@ -140,11 +140,11 @@ def update_bim_tool_props(): axis = tool.Model.get_wall_axis(obj)["reference"] props.extrusion_depth = extrusion.Depth * si_conversion * cos(x_angle) props.length = (axis[1] - axis[0]).length - props.x_angle = degrees(x_angle) + props.x_angle = x_angle elif AuthoringData.data["active_material_usage"] == "LAYER3": x_angle = get_x_angle(extrusion) - props.x_angle = degrees(x_angle) + props.x_angle = x_angle elif AuthoringData.data["active_material_usage"] == "PROFILE": props.extrusion_depth = extrusion.Depth * si_conversion diff --git a/src/blenderbim/blenderbim/bim/module/model/prop.py b/src/blenderbim/blenderbim/bim/module/model/prop.py index 3affc647e2..0e6773431d 100644 --- a/src/blenderbim/blenderbim/bim/module/model/prop.py +++ b/src/blenderbim/blenderbim/bim/module/model/prop.py @@ -126,7 +126,7 @@ class BIMModelProperties(PropertyGroup): 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_angle: bpy.props.FloatProperty(name="X Angle", default=0) + x_angle: bpy.props.FloatProperty(name="X Angle", default=0, subtype="ANGLE") type_page: bpy.props.IntProperty(name="Type Page", default=1, update=update_type_page) type_template: bpy.props.EnumProperty( items=( diff --git a/src/blenderbim/blenderbim/bim/module/model/slab.py b/src/blenderbim/blenderbim/bim/module/model/slab.py index f33d6f0709..8b9efc0ef7 100644 --- a/src/blenderbim/blenderbim/bim/module/model/slab.py +++ b/src/blenderbim/blenderbim/bim/module/model/slab.py @@ -139,7 +139,7 @@ class DumbSlabGenerator: self.length = 3 self.rotation = 0 self.location = Vector((0, 0, 0)) - self.x_angle = 0 if tool.Cad.is_x(props.x_angle, 0, tolerance=0.001) else radians(props.x_angle) + self.x_angle = 0 if tool.Cad.is_x(props.x_angle, 0, tolerance=0.001) else props.x_angle return self.derive_from_cursor() def derive_from_cursor(self): @@ -274,7 +274,7 @@ class DumbSlabPlaner: extrusion.Depth = thickness else: props = bpy.context.scene.BIMModelProperties - x_angle = 0 if tool.Cad.is_x(props.x_angle, 0, tolerance=0.001) else radians(props.x_angle) + x_angle = 0 if tool.Cad.is_x(props.x_angle, 0, tolerance=0.001) else props.x_angle new_rep = ifcopenshell.api.run( "geometry.add_slab_representation", tool.Ifc.get(), @@ -299,7 +299,7 @@ class DumbSlabPlaner: return else: props = bpy.context.scene.BIMModelProperties - x_angle = 0 if tool.Cad.is_x(props.x_angle, 0, tolerance=0.001) else radians(props.x_angle) + x_angle = 0 if tool.Cad.is_x(props.x_angle, 0, tolerance=0.001) else props.x_angle representation = ifcopenshell.api.run( "geometry.add_slab_representation", tool.Ifc.get(), diff --git a/src/blenderbim/blenderbim/bim/module/model/wall.py b/src/blenderbim/blenderbim/bim/module/model/wall.py index 0b55cffaa8..5e096e4da7 100644 --- a/src/blenderbim/blenderbim/bim/module/model/wall.py +++ b/src/blenderbim/blenderbim/bim/module/model/wall.py @@ -249,7 +249,7 @@ class ChangeExtrusionXAngle(bpy.types.Operator, tool.Ifc.Operator): def _execute(self, context): layer2_objs = [] other_objs = [] - x_angle = radians(self.x_angle) + x_angle = self.x_angle unit_scale = ifcopenshell.util.unit.calculate_unit_scale(tool.Ifc.get()) for obj in context.selected_objects: element = tool.Ifc.get_entity(obj) @@ -440,7 +440,7 @@ class DumbWallGenerator: self.length = props.length self.rotation = 0.0 self.location = Vector((0, 0, 0)) - self.x_angle = 0 if tool.Cad.is_x(props.x_angle, 0, tolerance=0.001) else radians(props.x_angle) + self.x_angle = 0 if tool.Cad.is_x(props.x_angle, 0, tolerance=0.001) else props.x_angle return self.derive_from_cursor() diff --git a/src/blenderbim/blenderbim/bim/module/model/workspace.py b/src/blenderbim/blenderbim/bim/module/model/workspace.py index 05cf6ec358..a658af8316 100644 --- a/src/blenderbim/blenderbim/bim/module/model/workspace.py +++ b/src/blenderbim/blenderbim/bim/module/model/workspace.py @@ -182,6 +182,7 @@ class BimToolUI: row.prop(data=cls.props, property="x_angle", text="X Angle") op = row.operator("bim.change_extrusion_x_angle", icon="FILE_REFRESH", text="") op.x_angle = cls.props.x_angle + elif AuthoringData.data["active_material_usage"] == "PROFILE": row = cls.layout.row(align=True) row.prop(data=cls.props, property="cardinal_point", text="Axis")