mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-11 10:06:47 +00:00
IFC Stair - cosmetic adjustments
This commit is contained in:
@@ -256,18 +256,25 @@ class BIMArrayProperties(PropertyGroup):
|
||||
|
||||
|
||||
class BIMStairProperties(PropertyGroup):
|
||||
stair_types = (
|
||||
("CONCRETE", "Concrete", ""),
|
||||
("WOOD/STEEL", "Wood / Steel", ""),
|
||||
)
|
||||
|
||||
is_editing: bpy.props.IntProperty(default=-1)
|
||||
width: bpy.props.FloatProperty(name="Width", default=1.2, soft_min=0.01)
|
||||
height: bpy.props.FloatProperty(name="Height", default=1.0, soft_min=0.01)
|
||||
number_of_treads: bpy.props.IntProperty(name="Number of Treads (Goings)", default=6, soft_min=1)
|
||||
number_of_treads: bpy.props.IntProperty(name="Number of treads", default=6, soft_min=1)
|
||||
tread_depth: bpy.props.FloatProperty(name="Tread Depth", default=0.25, soft_min=0.01)
|
||||
tread_run: bpy.props.FloatProperty(name="Tread Run", default=0.3, soft_min=0.01)
|
||||
base_slab_depth: bpy.props.FloatProperty(name="Base slab depth", default=0.25, soft_min=0)
|
||||
top_slab_depth: bpy.props.FloatProperty(name="Top slab depth", default=0.25, soft_min=0)
|
||||
has_top_nib: bpy.props.BoolProperty(name="Has top nib", default=True)
|
||||
stair_type: bpy.props.EnumProperty(name="Stair type", items=stair_types, default="CONCRETE")
|
||||
|
||||
def get_props_kwargs(self):
|
||||
kwargs = {
|
||||
"stair_type": self.stair_type,
|
||||
"width": self.width,
|
||||
"height": self.height,
|
||||
"number_of_treads": self.number_of_treads,
|
||||
|
||||
@@ -92,7 +92,7 @@ def generate_stair_2d_profile(
|
||||
has_top_nib,
|
||||
top_slab_depth,
|
||||
base_slab_depth,
|
||||
stair_type="CONCRETE",
|
||||
stair_type,
|
||||
):
|
||||
vertices = []
|
||||
edges = []
|
||||
@@ -162,7 +162,6 @@ def update_stair_modifier(context):
|
||||
props = obj.BIMStairProperties
|
||||
|
||||
props_kwargs = props.get_props_kwargs()
|
||||
props_kwargs["stair_type"] = "CONCRETE"
|
||||
vertices, edges, faces = generate_stair_2d_profile(**props_kwargs)
|
||||
|
||||
obj = context.object
|
||||
@@ -268,6 +267,7 @@ class AddStair(bpy.types.Operator, tool.Ifc.Operator):
|
||||
element.NumberOfTreads = props.number_of_treads
|
||||
element.RiserHeight = props.height / element.NumberOfRisers
|
||||
element.TreadLength = props.tread_depth
|
||||
element.PredefinedType = "STRAIGHT"
|
||||
return {"FINISHED"}
|
||||
|
||||
|
||||
@@ -320,6 +320,7 @@ class FinishEditingStair(bpy.types.Operator, tool.Ifc.Operator):
|
||||
element.NumberOfTreads = props.number_of_treads
|
||||
element.RiserHeight = props.height / element.NumberOfRisers
|
||||
element.TreadLength = props.tread_depth
|
||||
element.PredefinedType = "STRAIGHT"
|
||||
return {"FINISHED"}
|
||||
|
||||
|
||||
|
||||
@@ -329,34 +329,39 @@ class BIM_PT_stair(bpy.types.Panel):
|
||||
|
||||
if StairData.data["parameters"]:
|
||||
row = self.layout.row(align=True)
|
||||
row.label(text="Stair", icon="IPO_CONSTANT")
|
||||
row.label(text="Stair parameters", icon="IPO_CONSTANT")
|
||||
|
||||
stair_data = StairData.data["parameters"]["data"]
|
||||
box = self.layout.box()
|
||||
if props.is_editing != -1:
|
||||
row = box.row(align=True)
|
||||
row = self.layout.row(align=True)
|
||||
row.operator("bim.finish_editing_stair", icon="CHECKMARK", text="Finish editing")
|
||||
row.operator("bim.cancel_editing_stair", icon="CANCEL", text="")
|
||||
row = box.row(align=True)
|
||||
row = self.layout.row(align=True)
|
||||
for prop_name in props.get_props_kwargs():
|
||||
box.prop(props, prop_name)
|
||||
self.layout.prop(props, prop_name)
|
||||
update_stair_modifier(context)
|
||||
else:
|
||||
row = box.row(align=True)
|
||||
row.label(text=f"Parameters:", icon="MOD_ARRAY")
|
||||
row.operator("bim.enable_editing_stair", icon="GREASEPENCIL", text="")
|
||||
row.operator("bim.remove_stair", icon="X", text="")
|
||||
row = box.row(align=True)
|
||||
row = self.layout.row(align=True)
|
||||
for prop in props.get_props_kwargs():
|
||||
prop_value = stair_data[prop]
|
||||
prop_value = round(prop_value, 5) if type(prop_value) is float else prop_value
|
||||
box.label(text=f"{props.bl_rna.properties[prop].name}: {prop_value}")
|
||||
row = self.layout.row(align=True)
|
||||
row.label(text=f"{props.bl_rna.properties[prop].name}")
|
||||
row.label(text=str(prop_value))
|
||||
|
||||
# calculated properties
|
||||
number_of_rises = props.number_of_treads + 1
|
||||
box.label(text=f"Number of risers: {number_of_rises}")
|
||||
box.label(text=f"Tread rise: {round(props.height / number_of_rises, 5)}")
|
||||
box.label(text=f"Length: {round(props.tread_run * number_of_rises, 5)}")
|
||||
row = self.layout.row(align=True)
|
||||
row.label(text="Number of risers")
|
||||
row.label(text=str(number_of_rises))
|
||||
row = self.layout.row(align=True)
|
||||
row.label(text="Tread rise")
|
||||
row.label(text=str(round(props.height / number_of_rises, 5)))
|
||||
row = self.layout.row(align=True)
|
||||
row.label(text="Length")
|
||||
row.label(text=str(round(props.tread_run * number_of_rises, 5)))
|
||||
else:
|
||||
row = self.layout.row()
|
||||
row.label(text="No Stair Found")
|
||||
|
||||
Reference in New Issue
Block a user