From 1320eac8005298c386971d8df9a2727d9a67bce2 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Wed, 18 Sep 2024 22:57:51 +1000 Subject: [PATCH] Switch representation now cleans up orphaned meshes itself so callers don't need that responsibility --- src/bonsai/bonsai/bim/module/model/profile.py | 1 - src/bonsai/bonsai/bim/module/model/slab.py | 3 --- src/bonsai/bonsai/bim/module/model/wall.py | 1 - src/bonsai/bonsai/tool/geometry.py | 9 +++++++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/bonsai/bonsai/bim/module/model/profile.py b/src/bonsai/bonsai/bim/module/model/profile.py index 3148a29ddc..e10eb578bf 100644 --- a/src/bonsai/bonsai/bim/module/model/profile.py +++ b/src/bonsai/bonsai/bim/module/model/profile.py @@ -138,7 +138,6 @@ class DumbProfileGenerator: is_global=True, should_sync_changes_first=False, ) - tool.Blender.remove_data_block(mesh) pset = ifcopenshell.api.run("pset.add_pset", self.file, product=element, name="EPset_Parametric") ifcopenshell.api.run("pset.edit_pset", self.file, pset=pset, properties={"Engine": "Bonsai.DumbProfile"}) diff --git a/src/bonsai/bonsai/bim/module/model/slab.py b/src/bonsai/bonsai/bim/module/model/slab.py index 75f0a7bc6d..56c4c7aa65 100644 --- a/src/bonsai/bonsai/bim/module/model/slab.py +++ b/src/bonsai/bonsai/bim/module/model/slab.py @@ -126,7 +126,6 @@ class DumbSlabGenerator: is_global=True, should_sync_changes_first=False, ) - tool.Blender.remove_data_block(mesh) if self.footprint_context: extrusion = tool.Model.get_extrusion(representation) @@ -520,7 +519,6 @@ def disable_editing_extrusion_profile(context): is_global=True, should_sync_changes_first=False, ) - tool.Geometry.delete_data(profile_mesh) return {"FINISHED"} @@ -621,7 +619,6 @@ class EditExtrusionProfile(bpy.types.Operator, tool.Ifc.Operator): is_global=True, should_sync_changes_first=False, ) - bpy.data.meshes.remove(profile_mesh) # Only certain classes should have a footprint if element.is_a() not in ("IfcSlab", "IfcRamp"): diff --git a/src/bonsai/bonsai/bim/module/model/wall.py b/src/bonsai/bonsai/bim/module/model/wall.py index 0931e3b8e9..0c72bd1646 100644 --- a/src/bonsai/bonsai/bim/module/model/wall.py +++ b/src/bonsai/bonsai/bim/module/model/wall.py @@ -712,7 +712,6 @@ class DumbWallGenerator: is_global=True, should_sync_changes_first=False, ) - tool.Blender.remove_data_block(mesh) pset = ifcopenshell.api.run("pset.add_pset", self.file, product=element, name="EPset_Parametric") ifcopenshell.api.run("pset.edit_pset", self.file, pset=pset, properties={"Engine": "Bonsai.DumbLayer2"}) obj.select_set(True) diff --git a/src/bonsai/bonsai/tool/geometry.py b/src/bonsai/bonsai/tool/geometry.py index e362460b0b..a3908f2cd9 100644 --- a/src/bonsai/bonsai/tool/geometry.py +++ b/src/bonsai/bonsai/tool/geometry.py @@ -662,9 +662,14 @@ class Geometry(bonsai.core.tool.Geometry): settings.set("disable-opening-subtractions", True) shape = None - iterator = ifcopenshell.geom.iterator(settings, tool.Ifc.get(), multiprocessing.cpu_count(), include=elements) + if elements: + iterator = ifcopenshell.geom.iterator( + settings, tool.Ifc.get(), multiprocessing.cpu_count(), include=elements + ) + else: + iterator = None # For example, when switching representation of a type with no occurrences meshes = {} - if iterator.initialize(): + if iterator and iterator.initialize(): while True: shape = iterator.get() element = tool.Ifc.get().by_id(shape.id)