Changed x_angle subtype to degrees

Now BIMModelProperties.x_angle stores data in radians internally but for user it still appears as degrees
This commit is contained in:
Andrej730
2023-05-04 15:53:29 +05:00
parent dc4dc46b62
commit 8c302ed85c
5 changed files with 9 additions and 8 deletions
+2 -2
View File
@@ -140,11 +140,11 @@ def update_bim_tool_props():
axis = tool.Model.get_wall_axis(obj)["reference"] axis = tool.Model.get_wall_axis(obj)["reference"]
props.extrusion_depth = extrusion.Depth * si_conversion * cos(x_angle) props.extrusion_depth = extrusion.Depth * si_conversion * cos(x_angle)
props.length = (axis[1] - axis[0]).length 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": elif AuthoringData.data["active_material_usage"] == "LAYER3":
x_angle = get_x_angle(extrusion) x_angle = get_x_angle(extrusion)
props.x_angle = degrees(x_angle) props.x_angle = x_angle
elif AuthoringData.data["active_material_usage"] == "PROFILE": elif AuthoringData.data["active_material_usage"] == "PROFILE":
props.extrusion_depth = extrusion.Depth * si_conversion props.extrusion_depth = extrusion.Depth * si_conversion
@@ -126,7 +126,7 @@ class BIMModelProperties(PropertyGroup):
z: bpy.props.FloatProperty(name="Z", 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 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 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_page: bpy.props.IntProperty(name="Type Page", default=1, update=update_type_page)
type_template: bpy.props.EnumProperty( type_template: bpy.props.EnumProperty(
items=( items=(
@@ -139,7 +139,7 @@ class DumbSlabGenerator:
self.length = 3 self.length = 3
self.rotation = 0 self.rotation = 0
self.location = Vector((0, 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() return self.derive_from_cursor()
def derive_from_cursor(self): def derive_from_cursor(self):
@@ -274,7 +274,7 @@ class DumbSlabPlaner:
extrusion.Depth = thickness extrusion.Depth = thickness
else: else:
props = bpy.context.scene.BIMModelProperties 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( new_rep = ifcopenshell.api.run(
"geometry.add_slab_representation", "geometry.add_slab_representation",
tool.Ifc.get(), tool.Ifc.get(),
@@ -299,7 +299,7 @@ class DumbSlabPlaner:
return return
else: else:
props = bpy.context.scene.BIMModelProperties 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( representation = ifcopenshell.api.run(
"geometry.add_slab_representation", "geometry.add_slab_representation",
tool.Ifc.get(), tool.Ifc.get(),
@@ -249,7 +249,7 @@ class ChangeExtrusionXAngle(bpy.types.Operator, tool.Ifc.Operator):
def _execute(self, context): def _execute(self, context):
layer2_objs = [] layer2_objs = []
other_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()) unit_scale = ifcopenshell.util.unit.calculate_unit_scale(tool.Ifc.get())
for obj in context.selected_objects: for obj in context.selected_objects:
element = tool.Ifc.get_entity(obj) element = tool.Ifc.get_entity(obj)
@@ -440,7 +440,7 @@ class DumbWallGenerator:
self.length = props.length self.length = props.length
self.rotation = 0.0 self.rotation = 0.0
self.location = Vector((0, 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() return self.derive_from_cursor()
@@ -182,6 +182,7 @@ class BimToolUI:
row.prop(data=cls.props, property="x_angle", text="X Angle") row.prop(data=cls.props, property="x_angle", text="X Angle")
op = row.operator("bim.change_extrusion_x_angle", icon="FILE_REFRESH", text="") op = row.operator("bim.change_extrusion_x_angle", icon="FILE_REFRESH", text="")
op.x_angle = cls.props.x_angle op.x_angle = cls.props.x_angle
elif AuthoringData.data["active_material_usage"] == "PROFILE": elif AuthoringData.data["active_material_usage"] == "PROFILE":
row = cls.layout.row(align=True) row = cls.layout.row(align=True)
row.prop(data=cls.props, property="cardinal_point", text="Axis") row.prop(data=cls.props, property="cardinal_point", text="Axis")