mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-09 17:31:45 +00:00
Bonsai - assign/unassign structural model for all selected elements
This commit is contained in:
@@ -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
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -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,
|
||||
},
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user