mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-20 23:36:20 +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):
|
class AssignStructuralAnalysisModel(bpy.types.Operator, tool.Ifc.Operator):
|
||||||
bl_idname = "bim.assign_structural_analysis_model"
|
bl_idname = "bim.assign_structural_analysis_model"
|
||||||
bl_label = "Assign Structural Analysis Model"
|
bl_label = "Assign Structural Analysis Model"
|
||||||
|
bl_description = "Assign structual analysis model to the selected objects."
|
||||||
bl_options = {"REGISTER", "UNDO"}
|
bl_options = {"REGISTER", "UNDO"}
|
||||||
product: bpy.props.StringProperty()
|
|
||||||
structural_analysis_model: bpy.props.IntProperty()
|
structural_analysis_model: bpy.props.IntProperty()
|
||||||
|
|
||||||
def _execute(self, context):
|
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(
|
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):
|
class UnassignStructuralAnalysisModel(bpy.types.Operator, tool.Ifc.Operator):
|
||||||
bl_idname = "bim.unassign_structural_analysis_model"
|
bl_idname = "bim.unassign_structural_analysis_model"
|
||||||
bl_label = "Unassign Structural Analysis Model"
|
bl_label = "Unassign Structural Analysis Model"
|
||||||
|
bl_description = "Unassign structual analysis model from the selected objects."
|
||||||
bl_options = {"REGISTER", "UNDO"}
|
bl_options = {"REGISTER", "UNDO"}
|
||||||
product: bpy.props.StringProperty()
|
|
||||||
structural_analysis_model: bpy.props.IntProperty()
|
structural_analysis_model: bpy.props.IntProperty()
|
||||||
|
|
||||||
def _execute(self, context):
|
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(
|
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(
|
def assign_structural_analysis_model(
|
||||||
ifc: tool.Ifc,
|
ifc: tool.Ifc,
|
||||||
structural: tool.Structural,
|
products: list[ifcopenshell.entity_instance],
|
||||||
product: str,
|
structural_analysis_model: ifcopenshell.entity_instance,
|
||||||
structural_analysis_model: Union[int, None],
|
|
||||||
) -> None:
|
) -> None:
|
||||||
product_ = structural.get_product_or_active_object(product)
|
ifc.run(
|
||||||
if structural_analysis_model and product:
|
"structural.assign_structural_analysis_model",
|
||||||
ifc.run(
|
**{
|
||||||
"structural.assign_structural_analysis_model",
|
"products": products,
|
||||||
**{
|
"structural_analysis_model": structural_analysis_model,
|
||||||
"products": [ifc.get().by_id(product_.BIMObjectProperties.ifc_definition_id)],
|
},
|
||||||
"structural_analysis_model": ifc.get().by_id(structural_analysis_model),
|
)
|
||||||
},
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def disable_editing_structural_analysis_model(structural: tool.Structural) -> None:
|
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(
|
def unassign_structural_analysis_model(
|
||||||
ifc: tool.Ifc,
|
ifc: tool.Ifc,
|
||||||
structural: tool.Structural,
|
products: list[ifcopenshell.entity_instance],
|
||||||
product: str,
|
structural_analysis_model: ifcopenshell.entity_instance,
|
||||||
structural_analysis_model: Union[int, None],
|
|
||||||
) -> None:
|
) -> None:
|
||||||
product_ = structural.get_product_or_active_object(product)
|
ifc.run(
|
||||||
if structural_analysis_model and product:
|
"structural.unassign_structural_analysis_model",
|
||||||
ifc.run(
|
**{
|
||||||
"structural.unassign_structural_analysis_model",
|
"products": products,
|
||||||
**{
|
"structural_analysis_model": structural_analysis_model,
|
||||||
"products": [ifc.get().by_id(product_.BIMObjectProperties.ifc_definition_id)],
|
},
|
||||||
"structural_analysis_model": ifc.get().by_id(structural_analysis_model),
|
)
|
||||||
},
|
|
||||||
)
|
|
||||||
|
|||||||
Reference in New Issue
Block a user