From 1f89a0089617c8eb63eccc327dd22338a2225c22 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Tue, 4 Feb 2020 11:57:06 +1100 Subject: [PATCH] Allow people to maintain parametric modifiers, or bake the results --- src/ifcblenderexport/blenderbim/export_ifc.py | 5 +++++ src/ifcblenderexport/blenderbim/prop.py | 1 + src/ifcblenderexport/blenderbim/ui.py | 3 +++ 3 files changed, 9 insertions(+) diff --git a/src/ifcblenderexport/blenderbim/export_ifc.py b/src/ifcblenderexport/blenderbim/export_ifc.py index 5298148730..cc42c99321 100644 --- a/src/ifcblenderexport/blenderbim/export_ifc.py +++ b/src/ifcblenderexport/blenderbim/export_ifc.py @@ -215,6 +215,8 @@ class IfcParser(): def resolve_modifiers(self, product): obj = product['raw'] + if obj.data and not obj.data.BIMMeshProperties.is_parametric: + return instance_objects = [(obj, { 'location': obj.matrix_world.translation, 'array_offset': Vector((0, 0, 0)), @@ -840,6 +842,7 @@ class IfcParser(): 'context': context, 'subcontext': subcontext, 'target_view': target_view, + 'is_parametric': mesh.BIMMeshProperties.is_parametric if hasattr(mesh, 'BIMMeshProperties') else False, 'is_curve': isinstance(mesh, bpy.types.Curve), 'is_point_cloud': self.is_point_cloud(obj), 'is_structural': self.is_structural(obj), @@ -2166,6 +2169,8 @@ class IfcExporter(): def create_solid_representation(self, representation): mesh = representation['raw'] + if not representation['is_parametric']: + mesh = representation['raw_object'].evaluated_get(bpy.context.evaluated_depsgraph_get()).to_mesh() self.create_vertices(mesh.vertices) for polygon in mesh.polygons: self.ifc_faces.append(self.file.createIfcFace([ diff --git a/src/ifcblenderexport/blenderbim/prop.py b/src/ifcblenderexport/blenderbim/prop.py index 0748356a88..7f415996fe 100644 --- a/src/ifcblenderexport/blenderbim/prop.py +++ b/src/ifcblenderexport/blenderbim/prop.py @@ -505,3 +505,4 @@ class BIMMeshProperties(PropertyGroup): is_wireframe: BoolProperty(name="Is Wireframe") is_swept_solid: BoolProperty(name="Is Swept Solid") swept_solids: CollectionProperty(name="Swept Solids", type=SweptSolid) + is_parametric: BoolProperty(name='Is Parametric', default=False) diff --git a/src/ifcblenderexport/blenderbim/ui.py b/src/ifcblenderexport/blenderbim/ui.py index e588a2c96d..2ba99c0182 100644 --- a/src/ifcblenderexport/blenderbim/ui.py +++ b/src/ifcblenderexport/blenderbim/ui.py @@ -142,6 +142,9 @@ class BIM_PT_mesh(Panel): row = layout.row() row.operator('bim.assign_context') + row = layout.row() + row.prop(props, 'is_parametric') + row = layout.row() row.prop(props, 'is_wireframe') row = layout.row()