diff --git a/src/ifcblenderexport/blenderbim/bim/__init__.py b/src/ifcblenderexport/blenderbim/bim/__init__.py index 380c9e335e..3556d40b1c 100644 --- a/src/ifcblenderexport/blenderbim/bim/__init__.py +++ b/src/ifcblenderexport/blenderbim/bim/__init__.py @@ -225,6 +225,7 @@ if bpy is not None: operator.RewindInspector, operator.RefreshDrawingList, operator.GetRepresentationIfcParameters, + operator.BakeParametricGeometry, operator.UpdateIfcRepresentation, operator.SetBlenderClashSetA, operator.SetBlenderClashSetB, diff --git a/src/ifcblenderexport/blenderbim/bim/operator.py b/src/ifcblenderexport/blenderbim/bim/operator.py index 314619e85b..e33fdfdac3 100644 --- a/src/ifcblenderexport/blenderbim/bim/operator.py +++ b/src/ifcblenderexport/blenderbim/bim/operator.py @@ -4712,6 +4712,22 @@ class GetRepresentationIfcParameters(bpy.types.Operator): return c.ifc_definition_id or None +class BakeParametricGeometry(bpy.types.Operator): + bl_idname = "bim.bake_parametric_geometry" + bl_label = "Bake Parametric Geometry" + + def execute(self, context): + obj = bpy.context.active_object + if "/" not in obj.data.name: + context, subcontext, target_view = ("Model", "Body", "MODEL_VIEW") + else: + context, subcontext, target_view = obj.data.name.split("/")[0:3] + for c in obj.BIMObjectProperties.representation_contexts: + if c.context == context and c.name == subcontext and c.target_view == target_view: + c.ifc_definition_id = 0 + return {"FINISHED"} + + class UpdateIfcRepresentation(bpy.types.Operator): bl_idname = "bim.update_ifc_representation" bl_label = "Update IFC Representation" diff --git a/src/ifcblenderexport/blenderbim/bim/ui.py b/src/ifcblenderexport/blenderbim/bim/ui.py index 71a0b521d5..062f260b1a 100644 --- a/src/ifcblenderexport/blenderbim/bim/ui.py +++ b/src/ifcblenderexport/blenderbim/bim/ui.py @@ -814,6 +814,8 @@ class BIM_PT_mesh(Panel): layout.label(text="IFC Parameters:") row = layout.row() row.operator("bim.get_representation_ifc_parameters") + row = layout.row() + row.operator("bim.bake_parametric_geometry") for index, ifc_parameter in enumerate(props.ifc_parameters): row = layout.row(align=True) row.prop(ifc_parameter, "name", text="")