mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-09 17:31:45 +00:00
Roof slope as percentage property
This commit is contained in:
committed by
Dion Moult
parent
3f71efea6d
commit
2597827ab3
@@ -19,6 +19,7 @@
|
|||||||
import bpy
|
import bpy
|
||||||
import ifcopenshell
|
import ifcopenshell
|
||||||
import blenderbim.tool as tool
|
import blenderbim.tool as tool
|
||||||
|
import math
|
||||||
from blenderbim.bim.prop import ObjProperty
|
from blenderbim.bim.prop import ObjProperty
|
||||||
from blenderbim.bim.module.model.data import AuthoringData
|
from blenderbim.bim.module.model.data import AuthoringData
|
||||||
from bpy.types import PropertyGroup, NodeTree
|
from bpy.types import PropertyGroup, NodeTree
|
||||||
@@ -692,6 +693,7 @@ class BIMRoofProperties(PropertyGroup):
|
|||||||
"roof_type",
|
"roof_type",
|
||||||
"generation_method",
|
"generation_method",
|
||||||
"angle",
|
"angle",
|
||||||
|
"percentage",
|
||||||
"rafter_edge_angle",
|
"rafter_edge_angle",
|
||||||
)
|
)
|
||||||
roof_types = (("HIP/GABLE ROOF", "HIP/GABLE ROOF", ""),)
|
roof_types = (("HIP/GABLE ROOF", "HIP/GABLE ROOF", ""),)
|
||||||
@@ -710,7 +712,8 @@ class BIMRoofProperties(PropertyGroup):
|
|||||||
height: bpy.props.FloatProperty(
|
height: bpy.props.FloatProperty(
|
||||||
name="Height", default=1.0, description="Maximum height of the roof to be generated.", subtype="DISTANCE"
|
name="Height", default=1.0, description="Maximum height of the roof to be generated.", subtype="DISTANCE"
|
||||||
)
|
)
|
||||||
angle: bpy.props.FloatProperty(name="Slope Angle", default=pi / 18, subtype="ANGLE")
|
angle: bpy.props.FloatProperty(name="Slope Angle", default=pi / 18, subtype="ANGLE", update=lambda self, context: self.update_percentage())
|
||||||
|
percentage: bpy.props.FloatProperty(name="Slope %", default=17.63269754733197, subtype="PERCENTAGE", update=lambda self, context: self.update_angle())
|
||||||
roof_thickness: bpy.props.FloatProperty(name="Roof Thickness", default=0.1, subtype="DISTANCE")
|
roof_thickness: bpy.props.FloatProperty(name="Roof Thickness", default=0.1, subtype="DISTANCE")
|
||||||
rafter_edge_angle: bpy.props.FloatProperty(name="Rafter Edge Angle", min=0, max=pi, default=pi / 2, subtype="ANGLE")
|
rafter_edge_angle: bpy.props.FloatProperty(name="Rafter Edge Angle", min=0, max=pi, default=pi / 2, subtype="ANGLE")
|
||||||
|
|
||||||
@@ -727,6 +730,7 @@ class BIMRoofProperties(PropertyGroup):
|
|||||||
kwargs["height"] = self.height
|
kwargs["height"] = self.height
|
||||||
else:
|
else:
|
||||||
kwargs["angle"] = self.angle
|
kwargs["angle"] = self.angle
|
||||||
|
kwargs["percentage"] = self.percentage
|
||||||
|
|
||||||
if not convert_to_project_units:
|
if not convert_to_project_units:
|
||||||
return kwargs
|
return kwargs
|
||||||
@@ -736,3 +740,9 @@ class BIMRoofProperties(PropertyGroup):
|
|||||||
kwargs = tool.Model.convert_data_to_si_units(kwargs, self.non_si_units_props)
|
kwargs = tool.Model.convert_data_to_si_units(kwargs, self.non_si_units_props)
|
||||||
for prop_name in kwargs:
|
for prop_name in kwargs:
|
||||||
setattr(self, prop_name, kwargs[prop_name])
|
setattr(self, prop_name, kwargs[prop_name])
|
||||||
|
|
||||||
|
def update_angle(self):
|
||||||
|
self.angle = math.atan(self.percentage / 100)
|
||||||
|
|
||||||
|
def update_percentage(self):
|
||||||
|
self.percentage = math.tan(self.angle)*100
|
||||||
Reference in New Issue
Block a user