From 5604db8072b81d67be07791a944cc3960fde6df7 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Sat, 13 Mar 2021 22:21:44 +1100 Subject: [PATCH] The IFC Debug inspector now also shows inverse references, great for debugging IFC2X3 or style relationships --- .../blenderbim/bim/module/debug/operator.py | 6 ++++++ .../blenderbim/bim/module/debug/prop.py | 1 + .../blenderbim/bim/module/debug/ui.py | 11 +++++++++++ 3 files changed, 18 insertions(+) diff --git a/src/ifcblenderexport/blenderbim/bim/module/debug/operator.py b/src/ifcblenderexport/blenderbim/bim/module/debug/operator.py index 9134e665f1..26fd951e5f 100644 --- a/src/ifcblenderexport/blenderbim/bim/module/debug/operator.py +++ b/src/ifcblenderexport/blenderbim/bim/module/debug/operator.py @@ -121,6 +121,8 @@ class InspectFromStepId(bpy.types.Operator): bpy.context.scene.BIMDebugProperties.attributes.remove(0) while len(bpy.context.scene.BIMDebugProperties.inverse_attributes) > 0: bpy.context.scene.BIMDebugProperties.inverse_attributes.remove(0) + while len(bpy.context.scene.BIMDebugProperties.inverse_references) > 0: + bpy.context.scene.BIMDebugProperties.inverse_references.remove(0) for key, value in element.get_info().items(): self.add_attribute(bpy.context.scene.BIMDebugProperties.attributes, key, value) for key in dir(element): @@ -132,6 +134,10 @@ class InspectFromStepId(bpy.types.Operator): ): continue self.add_attribute(bpy.context.scene.BIMDebugProperties.inverse_attributes, key, getattr(element, key)) + for inverse in self.file.get_inverse(element): + new = bpy.context.scene.BIMDebugProperties.inverse_references.add() + new.string_value = str(inverse) + new.int_value = inverse.id() return {"FINISHED"} def add_attribute(self, prop, key, value): diff --git a/src/ifcblenderexport/blenderbim/bim/module/debug/prop.py b/src/ifcblenderexport/blenderbim/bim/module/debug/prop.py index 7d62feef2b..cc1ef6213c 100644 --- a/src/ifcblenderexport/blenderbim/bim/module/debug/prop.py +++ b/src/ifcblenderexport/blenderbim/bim/module/debug/prop.py @@ -19,3 +19,4 @@ class BIMDebugProperties(PropertyGroup): step_id_breadcrumb: CollectionProperty(name="STEP ID Breadcrumb", type=StrProperty) attributes: CollectionProperty(name="Attributes", type=Attribute) inverse_attributes: CollectionProperty(name="Inverse Attributes", type=Attribute) + inverse_references: CollectionProperty(name="Inverse References", type=Attribute) diff --git a/src/ifcblenderexport/blenderbim/bim/module/debug/ui.py b/src/ifcblenderexport/blenderbim/bim/module/debug/ui.py index 890039ac1e..707a12e34e 100644 --- a/src/ifcblenderexport/blenderbim/bim/module/debug/ui.py +++ b/src/ifcblenderexport/blenderbim/bim/module/debug/ui.py @@ -69,3 +69,14 @@ class BIM_PT_debug(Panel): row.operator( "bim.inspect_from_step_id", icon="DISCLOSURE_TRI_RIGHT", text="" ).step_id = attribute.int_value + + if props.inverse_references: + layout.label(text="Inverse references:") + + for index, attribute in enumerate(props.inverse_references): + row = layout.row(align=True) + row.prop(attribute, "string_value", text="") + if attribute.int_value: + row.operator( + "bim.inspect_from_step_id", icon="DISCLOSURE_TRI_RIGHT", text="" + ).step_id = attribute.int_value