From 319f63c86179ec5dc2ee68cfdcf88b2b39ee6461 Mon Sep 17 00:00:00 2001 From: carlos Date: Wed, 29 Jun 2022 17:39:40 +0200 Subject: [PATCH] Preventing error when IfcSpatialElement has been deleted and an IFC Type instance is added --- src/blenderbim/blenderbim/bim/module/model/mep.py | 10 +++++++++- src/blenderbim/blenderbim/bim/module/model/profile.py | 10 +++++++++- src/blenderbim/blenderbim/bim/module/model/slab.py | 10 +++++++++- src/blenderbim/blenderbim/bim/module/model/wall.py | 10 +++++++++- src/blenderbim/blenderbim/tool/collector.py | 3 ++- 5 files changed, 38 insertions(+), 5 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/module/model/mep.py b/src/blenderbim/blenderbim/bim/module/model/mep.py index 3fe07c3fe8..571ea0a3cf 100644 --- a/src/blenderbim/blenderbim/bim/module/model/mep.py +++ b/src/blenderbim/blenderbim/bim/module/model/mep.py @@ -114,5 +114,13 @@ class MepGenerator: tool.Ifc.run("system.assign_port", element=element, port=port) tool.Ifc.run("geometry.edit_object_placement", product=port, matrix=obj.matrix_world @ mat, is_si=True) - obj.select_set(True) + try: + obj.select_set(True) + except RuntimeError: + def msg(self, context): + txt = "The created object could not be assigned to a collection. " + txt += "Has any IfcSpatialElement been deleted?" + self.layout.label(text=txt) + + bpy.context.window_manager.popup_menu(msg, title="Error", icon="ERROR") return obj diff --git a/src/blenderbim/blenderbim/bim/module/model/profile.py b/src/blenderbim/blenderbim/bim/module/model/profile.py index 1c3e6bbe26..b074ef6dac 100644 --- a/src/blenderbim/blenderbim/bim/module/model/profile.py +++ b/src/blenderbim/blenderbim/bim/module/model/profile.py @@ -162,7 +162,15 @@ class DumbProfileGenerator: 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": "BlenderBIM.DumbProfile"}) MaterialData.load(self.file) - obj.select_set(True) + try: + obj.select_set(True) + except RuntimeError: + def msg(self, context): + txt = "The created object could not be assigned to a collection. " + txt += "Has any IfcSpatialElement been deleted?" + self.layout.label(text=txt) + + bpy.context.window_manager.popup_menu(msg, title="Error", icon="ERROR") return obj diff --git a/src/blenderbim/blenderbim/bim/module/model/slab.py b/src/blenderbim/blenderbim/bim/module/model/slab.py index 327ab18c18..6a96490d18 100644 --- a/src/blenderbim/blenderbim/bim/module/model/slab.py +++ b/src/blenderbim/blenderbim/bim/module/model/slab.py @@ -306,7 +306,15 @@ class DumbSlabGenerator: 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": "BlenderBIM.DumbLayer3"}) MaterialData.load(self.file) - obj.select_set(True) + try: + obj.select_set(True) + except RuntimeError: + def msg(self, context): + txt = "The created object could not be assigned to a collection. " + txt += "Has any IfcSpatialElement been deleted?" + self.layout.label(text=txt) + + bpy.context.window_manager.popup_menu(msg, title="Error", icon="ERROR") return obj diff --git a/src/blenderbim/blenderbim/bim/module/model/wall.py b/src/blenderbim/blenderbim/bim/module/model/wall.py index 441c6abd52..b3662208c1 100644 --- a/src/blenderbim/blenderbim/bim/module/model/wall.py +++ b/src/blenderbim/blenderbim/bim/module/model/wall.py @@ -817,7 +817,15 @@ class DumbWallGenerator: 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": "BlenderBIM.DumbLayer2"}) MaterialData.load(self.file) - obj.select_set(True) + try: + obj.select_set(True) + except RuntimeError: + def msg(self, context): + txt = "The created object could not be assigned to a collection. " + txt += "Has any IfcSpatialElement been deleted?" + self.layout.label(text=txt) + + bpy.context.window_manager.popup_menu(msg, title="Error", icon="ERROR") return obj diff --git a/src/blenderbim/blenderbim/tool/collector.py b/src/blenderbim/blenderbim/tool/collector.py index e202ab50cb..8b08e14f0b 100644 --- a/src/blenderbim/blenderbim/tool/collector.py +++ b/src/blenderbim/blenderbim/tool/collector.py @@ -82,7 +82,8 @@ class Collector(blenderbim.core.tool.Collector): if obj.users_collection != (object_collection,): for collection in obj.users_collection: collection.objects.unlink(obj) - object_collection.objects.link(obj) + if object_collection is not None: + object_collection.objects.link(obj) if collection_collection and collection_collection.children.find(object_collection.name) == -1: if bpy.context.scene.collection.children.find(object_collection.name) != -1: