From deae4e659b9d426ad0adad153143e84726f73f84 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Fri, 23 May 2025 14:04:36 +0500 Subject: [PATCH] clash ui - expose clash type to UI Example - https://imgur.com/a/Wdyg3pn --- src/bonsai/bonsai/bim/module/clash/prop.py | 6 ++++++ src/bonsai/bonsai/bim/module/clash/ui.py | 5 ++++- src/bonsai/bonsai/tool/clash.py | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/bonsai/bonsai/bim/module/clash/prop.py b/src/bonsai/bonsai/bim/module/clash/prop.py index 70e4a422ea..a7c6101b73 100644 --- a/src/bonsai/bonsai/bim/module/clash/prop.py +++ b/src/bonsai/bonsai/bim/module/clash/prop.py @@ -30,6 +30,7 @@ from bpy.props import ( FloatVectorProperty, CollectionProperty, ) +from ifcopenshell.geom.main import ClashType, CLASH_TYPE_ITEMS from mathutils import Vector from typing import TYPE_CHECKING, Literal, Union @@ -60,6 +61,10 @@ class Clash(PropertyGroup): b_global_id: StringProperty(name="B") a_name: StringProperty(name="A Name") b_name: StringProperty(name="B Name") + clash_type: EnumProperty( # pyright: ignore[reportRedeclaration] + name="Clash Type", + items=tuple((i, i, "") for i in CLASH_TYPE_ITEMS), + ) status: BoolProperty( name="Status", description="Clash status, not stored anywhere - currently just displayed in UI for convenience.", @@ -71,6 +76,7 @@ class Clash(PropertyGroup): b_global_id: str a_name: str b_name: str + clash_type: ClashType status: bool diff --git a/src/bonsai/bonsai/bim/module/clash/ui.py b/src/bonsai/bonsai/bim/module/clash/ui.py index 93cc1c45e0..40128aad4a 100644 --- a/src/bonsai/bonsai/bim/module/clash/ui.py +++ b/src/bonsai/bonsai/bim/module/clash/ui.py @@ -264,9 +264,12 @@ class BIM_UL_clashes(bpy.types.UIList): active_propname, ) -> None: if item: - row = layout.row(align=True) + row = layout.row(align=False) row.label(text=str(item.a_name), translate=False, icon="NONE", icon_value=0) row.label(text=str(item.b_name), translate=False, icon="NONE", icon_value=0) + col = row.column() + col.enabled = False + col.prop(item, "clash_type", text="") row.prop(item, "status", text="") else: layout.label(text="", translate=False) diff --git a/src/bonsai/bonsai/tool/clash.py b/src/bonsai/bonsai/tool/clash.py index 7948e929de..5f110aebab 100644 --- a/src/bonsai/bonsai/tool/clash.py +++ b/src/bonsai/bonsai/tool/clash.py @@ -108,6 +108,7 @@ class Clash(bonsai.core.tool.Clash): blender_clash.b_global_id = clash["b_global_id"] blender_clash.a_name = "{}/{}".format(clash["a_ifc_class"], clash["a_name"]) blender_clash.b_name = "{}/{}".format(clash["b_ifc_class"], clash["b_name"]) + blender_clash.clash_type = clash["type"] blender_clash.status = False if not "status" in clash else clash["status"] clash_set.clashes_loaded = True