mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-20 06:58:56 +00:00
Format stair lengths using IFC length unit
Display general and calculated stair parameters (Width, Height, Tread Run, Tread Rise, Length, etc.) formatted to the IFC file's configured length unit rather than raw numeric values. Generated with the assistance of an AI coding tool.
This commit is contained in:
@@ -24,6 +24,7 @@ from typing import TYPE_CHECKING, Any
|
|||||||
import bpy
|
import bpy
|
||||||
from bpy.types import Panel
|
from bpy.types import Panel
|
||||||
|
|
||||||
|
import ifcopenshell.util.unit
|
||||||
import bonsai.bim
|
import bonsai.bim
|
||||||
import bonsai.tool as tool
|
import bonsai.tool as tool
|
||||||
from bonsai.bim.helper import prop_with_search
|
from bonsai.bim.helper import prop_with_search
|
||||||
@@ -303,6 +304,8 @@ class BIM_PT_stair(bpy.types.Panel):
|
|||||||
row = self.layout.row(align=True)
|
row = self.layout.row(align=True)
|
||||||
row.label(text="Stair parameters", icon="IPO_CONSTANT")
|
row.label(text="Stair parameters", icon="IPO_CONSTANT")
|
||||||
|
|
||||||
|
si_conversion = ifcopenshell.util.unit.calculate_unit_scale(tool.Ifc.get())
|
||||||
|
|
||||||
if props.is_editing:
|
if props.is_editing:
|
||||||
calculated_params = tool.Model.get_active_stair_calculated_params()
|
calculated_params = tool.Model.get_active_stair_calculated_params()
|
||||||
row = self.layout.row(align=True)
|
row = self.layout.row(align=True)
|
||||||
@@ -322,16 +325,25 @@ class BIM_PT_stair(bpy.types.Panel):
|
|||||||
row.label(text=f"{prop_name}:")
|
row.label(text=f"{prop_name}:")
|
||||||
row = self.layout.row(align=True)
|
row = self.layout.row(align=True)
|
||||||
for prop_value_item in prop_value:
|
for prop_value_item in prop_value:
|
||||||
row.label(text=str(prop_value_item))
|
if isinstance(prop_value_item, float):
|
||||||
|
row.label(text=tool.Unit.format_distance(prop_value_item * si_conversion))
|
||||||
|
else:
|
||||||
|
row.label(text=str(prop_value_item))
|
||||||
else:
|
else:
|
||||||
row.label(text=prop_name)
|
row.label(text=prop_name)
|
||||||
row.label(text=str(prop_value))
|
if isinstance(prop_value, float):
|
||||||
|
row.label(text=tool.Unit.format_distance(prop_value * si_conversion))
|
||||||
|
else:
|
||||||
|
row.label(text=str(prop_value))
|
||||||
|
|
||||||
# calculated properties
|
# calculated properties
|
||||||
for prop_name, prop_value in calculated_params.items():
|
for prop_name, prop_value in calculated_params.items():
|
||||||
row = self.layout.row(align=True)
|
row = self.layout.row(align=True)
|
||||||
row.label(text=prop_name)
|
row.label(text=prop_name)
|
||||||
row.label(text=str(prop_value))
|
if isinstance(prop_value, float):
|
||||||
|
row.label(text=tool.Unit.format_distance(prop_value * si_conversion))
|
||||||
|
else:
|
||||||
|
row.label(text=str(prop_value))
|
||||||
else:
|
else:
|
||||||
row = self.layout.row()
|
row = self.layout.row()
|
||||||
row.label(text="No Stair Found")
|
row.label(text="No Stair Found")
|
||||||
|
|||||||
Reference in New Issue
Block a user