mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-17 14:02:27 +00:00
StairData refactor, solves #3416
This commit is contained in:
@@ -290,12 +290,27 @@ class StairData:
|
|||||||
@classmethod
|
@classmethod
|
||||||
def load(cls):
|
def load(cls):
|
||||||
cls.is_loaded = True
|
cls.is_loaded = True
|
||||||
cls.data = {"pset_data": cls.pset_data()}
|
cls.data = {}
|
||||||
|
cls.data["pset_data"] = cls.pset_data()
|
||||||
|
if not cls.data["pset_data"]:
|
||||||
|
return
|
||||||
|
cls.data["general_params"] = cls.general_params()
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def pset_data(cls):
|
def pset_data(cls):
|
||||||
return tool.Model.get_modeling_bbim_pset_data(bpy.context.active_object, "BBIM_Stair")
|
return tool.Model.get_modeling_bbim_pset_data(bpy.context.active_object, "BBIM_Stair")
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def general_params(cls):
|
||||||
|
props = bpy.context.active_object.BIMStairProperties
|
||||||
|
data = cls.data["pset_data"]["data_dict"]
|
||||||
|
general_params = {}
|
||||||
|
general_props = props.get_props_kwargs(stair_type=data["stair_type"])
|
||||||
|
for prop_name in general_props:
|
||||||
|
prop_readable_name, prop_value = get_prop_from_data(props, data, prop_name)
|
||||||
|
general_params[prop_readable_name] = prop_value
|
||||||
|
return general_params
|
||||||
|
|
||||||
|
|
||||||
class SverchokData:
|
class SverchokData:
|
||||||
data = {}
|
data = {}
|
||||||
|
|||||||
@@ -201,16 +201,18 @@ class BIMStairProperties(PropertyGroup):
|
|||||||
has_top_nib: bpy.props.BoolProperty(name="Has top nib", default=True)
|
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")
|
stair_type: bpy.props.EnumProperty(name="Stair type", items=stair_types, default="CONCRETE")
|
||||||
|
|
||||||
def get_props_kwargs(self, convert_to_project_units=False):
|
def get_props_kwargs(self, convert_to_project_units=False, stair_type=None):
|
||||||
|
if not stair_type:
|
||||||
|
stair_type = self.stair_type
|
||||||
stair_kwargs = {
|
stair_kwargs = {
|
||||||
"stair_type": self.stair_type,
|
"stair_type": stair_type,
|
||||||
"width": self.width,
|
"width": self.width,
|
||||||
"height": self.height,
|
"height": self.height,
|
||||||
"number_of_treads": self.number_of_treads,
|
"number_of_treads": self.number_of_treads,
|
||||||
"tread_run": self.tread_run,
|
"tread_run": self.tread_run,
|
||||||
}
|
}
|
||||||
|
|
||||||
if self.stair_type == "CONCRETE":
|
if stair_type == "CONCRETE":
|
||||||
concrete_props = {
|
concrete_props = {
|
||||||
"base_slab_depth": self.base_slab_depth,
|
"base_slab_depth": self.base_slab_depth,
|
||||||
"top_slab_depth": self.top_slab_depth,
|
"top_slab_depth": self.top_slab_depth,
|
||||||
@@ -219,13 +221,13 @@ class BIMStairProperties(PropertyGroup):
|
|||||||
}
|
}
|
||||||
stair_kwargs.update(concrete_props)
|
stair_kwargs.update(concrete_props)
|
||||||
|
|
||||||
elif self.stair_type == "WOOD/STEEL":
|
elif stair_type == "WOOD/STEEL":
|
||||||
wood_steel_props = {
|
wood_steel_props = {
|
||||||
"tread_depth": self.tread_depth,
|
"tread_depth": self.tread_depth,
|
||||||
}
|
}
|
||||||
stair_kwargs.update(wood_steel_props)
|
stair_kwargs.update(wood_steel_props)
|
||||||
|
|
||||||
elif self.stair_type == "GENERIC":
|
elif stair_type == "GENERIC":
|
||||||
pass
|
pass
|
||||||
|
|
||||||
if not convert_to_project_units:
|
if not convert_to_project_units:
|
||||||
|
|||||||
@@ -269,11 +269,9 @@ class BIM_PT_stair(bpy.types.Panel):
|
|||||||
row.operator("bim.enable_editing_stair", icon="GREASEPENCIL", text="")
|
row.operator("bim.enable_editing_stair", icon="GREASEPENCIL", text="")
|
||||||
row.operator("bim.remove_stair", icon="X", text="")
|
row.operator("bim.remove_stair", icon="X", text="")
|
||||||
row = self.layout.row(align=True)
|
row = self.layout.row(align=True)
|
||||||
for prop in props.get_props_kwargs():
|
for prop_name, prop_value in StairData.data["general_params"].items():
|
||||||
prop_value = stair_data[prop]
|
|
||||||
prop_value = round(prop_value, 5) if type(prop_value) is float else prop_value
|
|
||||||
row = self.layout.row(align=True)
|
row = self.layout.row(align=True)
|
||||||
row.label(text=f"{props.bl_rna.properties[prop].name}")
|
row.label(text=prop_name)
|
||||||
row.label(text=str(prop_value))
|
row.label(text=str(prop_value))
|
||||||
|
|
||||||
# calculated properties
|
# calculated properties
|
||||||
|
|||||||
Reference in New Issue
Block a user