Bonsai - assign/unassign structural model for all selected elements

This commit is contained in:
Andrej730
2025-01-23 16:09:16 +05:00
parent 3eeb58dded
commit 4717dffcdc
2 changed files with 28 additions and 28 deletions
@@ -314,26 +314,32 @@ class DisableEditingStructuralAnalysisModel(bpy.types.Operator):
class AssignStructuralAnalysisModel(bpy.types.Operator, tool.Ifc.Operator):
bl_idname = "bim.assign_structural_analysis_model"
bl_label = "Assign Structural Analysis Model"
bl_description = "Assign structual analysis model to the selected objects."
bl_options = {"REGISTER", "UNDO"}
product: bpy.props.StringProperty()
structural_analysis_model: bpy.props.IntProperty()
def _execute(self, context):
ifc_file = tool.Ifc.get()
structural_analysis_model = ifc_file.by_id(self.structural_analysis_model)
products = [element for o in tool.Blender.get_selected_objects() if (element := tool.Ifc.get_entity(o))]
core.assign_structural_analysis_model(
tool.Ifc, tool.Structural, product=self.product, structural_analysis_model=self.structural_analysis_model
tool.Ifc, products=products, structural_analysis_model=structural_analysis_model
)
class UnassignStructuralAnalysisModel(bpy.types.Operator, tool.Ifc.Operator):
bl_idname = "bim.unassign_structural_analysis_model"
bl_label = "Unassign Structural Analysis Model"
bl_description = "Unassign structual analysis model from the selected objects."
bl_options = {"REGISTER", "UNDO"}
product: bpy.props.StringProperty()
structural_analysis_model: bpy.props.IntProperty()
def _execute(self, context):
ifc_file = tool.Ifc.get()
structural_analysis_model = ifc_file.by_id(self.structural_analysis_model)
products = [element for o in tool.Blender.get_selected_objects() if (element := tool.Ifc.get_entity(o))]
core.unassign_structural_analysis_model(
tool.Ifc, tool.Structural, product=self.product, structural_analysis_model=self.structural_analysis_model
tool.Ifc, products=products, structural_analysis_model=structural_analysis_model
)
+18 -24
View File
@@ -34,19 +34,16 @@ def add_structural_analysis_model(ifc: tool.Ifc, structural: tool.Structural) ->
def assign_structural_analysis_model(
ifc: tool.Ifc,
structural: tool.Structural,
product: str,
structural_analysis_model: Union[int, None],
products: list[ifcopenshell.entity_instance],
structural_analysis_model: ifcopenshell.entity_instance,
) -> None:
product_ = structural.get_product_or_active_object(product)
if structural_analysis_model and product:
ifc.run(
"structural.assign_structural_analysis_model",
**{
"products": [ifc.get().by_id(product_.BIMObjectProperties.ifc_definition_id)],
"structural_analysis_model": ifc.get().by_id(structural_analysis_model),
},
)
ifc.run(
"structural.assign_structural_analysis_model",
**{
"products": products,
"structural_analysis_model": structural_analysis_model,
},
)
def disable_editing_structural_analysis_model(structural: tool.Structural) -> None:
@@ -101,16 +98,13 @@ def remove_structural_analysis_model(ifc: tool.Ifc, structural: tool.Structural,
def unassign_structural_analysis_model(
ifc: tool.Ifc,
structural: tool.Structural,
product: str,
structural_analysis_model: Union[int, None],
products: list[ifcopenshell.entity_instance],
structural_analysis_model: ifcopenshell.entity_instance,
) -> None:
product_ = structural.get_product_or_active_object(product)
if structural_analysis_model and product:
ifc.run(
"structural.unassign_structural_analysis_model",
**{
"products": [ifc.get().by_id(product_.BIMObjectProperties.ifc_definition_id)],
"structural_analysis_model": ifc.get().by_id(structural_analysis_model),
},
)
ifc.run(
"structural.unassign_structural_analysis_model",
**{
"products": products,
"structural_analysis_model": structural_analysis_model,
},
)