mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-21 23:50:59 +00:00
The IFC Debug inspector now also shows inverse references, great for debugging IFC2X3 or style relationships
This commit is contained in:
@@ -121,6 +121,8 @@ class InspectFromStepId(bpy.types.Operator):
|
|||||||
bpy.context.scene.BIMDebugProperties.attributes.remove(0)
|
bpy.context.scene.BIMDebugProperties.attributes.remove(0)
|
||||||
while len(bpy.context.scene.BIMDebugProperties.inverse_attributes) > 0:
|
while len(bpy.context.scene.BIMDebugProperties.inverse_attributes) > 0:
|
||||||
bpy.context.scene.BIMDebugProperties.inverse_attributes.remove(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():
|
for key, value in element.get_info().items():
|
||||||
self.add_attribute(bpy.context.scene.BIMDebugProperties.attributes, key, value)
|
self.add_attribute(bpy.context.scene.BIMDebugProperties.attributes, key, value)
|
||||||
for key in dir(element):
|
for key in dir(element):
|
||||||
@@ -132,6 +134,10 @@ class InspectFromStepId(bpy.types.Operator):
|
|||||||
):
|
):
|
||||||
continue
|
continue
|
||||||
self.add_attribute(bpy.context.scene.BIMDebugProperties.inverse_attributes, key, getattr(element, key))
|
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"}
|
return {"FINISHED"}
|
||||||
|
|
||||||
def add_attribute(self, prop, key, value):
|
def add_attribute(self, prop, key, value):
|
||||||
|
|||||||
@@ -19,3 +19,4 @@ class BIMDebugProperties(PropertyGroup):
|
|||||||
step_id_breadcrumb: CollectionProperty(name="STEP ID Breadcrumb", type=StrProperty)
|
step_id_breadcrumb: CollectionProperty(name="STEP ID Breadcrumb", type=StrProperty)
|
||||||
attributes: CollectionProperty(name="Attributes", type=Attribute)
|
attributes: CollectionProperty(name="Attributes", type=Attribute)
|
||||||
inverse_attributes: CollectionProperty(name="Inverse Attributes", type=Attribute)
|
inverse_attributes: CollectionProperty(name="Inverse Attributes", type=Attribute)
|
||||||
|
inverse_references: CollectionProperty(name="Inverse References", type=Attribute)
|
||||||
|
|||||||
@@ -69,3 +69,14 @@ class BIM_PT_debug(Panel):
|
|||||||
row.operator(
|
row.operator(
|
||||||
"bim.inspect_from_step_id", icon="DISCLOSURE_TRI_RIGHT", text=""
|
"bim.inspect_from_step_id", icon="DISCLOSURE_TRI_RIGHT", text=""
|
||||||
).step_id = attribute.int_value
|
).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
|
||||||
|
|||||||
Reference in New Issue
Block a user