From 95e9b8aeefb845e4a82661eecbdc59406b72ae72 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Wed, 25 Sep 2024 17:09:49 +0500 Subject: [PATCH] Import representation items for curve representations too https://i.imgur.com/TeITxa0.png --- src/bonsai/bonsai/bim/module/geometry/operator.py | 5 ++++- src/bonsai/bonsai/tool/loader.py | 6 ++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/bonsai/bonsai/bim/module/geometry/operator.py b/src/bonsai/bonsai/bim/module/geometry/operator.py index 6f7a400cb1..4e997a31a6 100644 --- a/src/bonsai/bonsai/bim/module/geometry/operator.py +++ b/src/bonsai/bonsai/bim/module/geometry/operator.py @@ -2307,7 +2307,10 @@ class ImportRepresentationItems(bpy.types.Operator, tool.Ifc.Operator): tool.Loader.load_settings() - for item_id in set(obj.data["ios_item_ids"]): + data = obj.data + assert data + item_ids = data["ios_item_ids"] if "ios_item_ids" in data else data["ios_edges_item_ids"] + for item_id in set(item_ids): item = tool.Ifc.get().by_id(item_id) item_mesh = bpy.data.meshes.new(f"Item/{item.is_a()}/{item_id}") item_mesh.BIMMeshProperties.ifc_definition_id = item_id diff --git a/src/bonsai/bonsai/tool/loader.py b/src/bonsai/bonsai/tool/loader.py index 061cc7d31f..7cbcb7d13d 100644 --- a/src/bonsai/bonsai/tool/loader.py +++ b/src/bonsai/bonsai/tool/loader.py @@ -940,6 +940,12 @@ class Loader(bonsai.core.tool.Loader): vertices = [[v[i], v[i + 1], v[i + 2]] for i in range(0, len(v), 3)] edges = [[e[i], e[i + 1]] for i in range(0, len(e), 2)] mesh.from_pydata(vertices, edges, []) + # TODO: remove error handling after we update build in Bonsai. + try: + edges_item_ids = ifcopenshell.util.shape.get_edges_representation_item_ids(geometry).tolist() + except AttributeError: + edges_item_ids = [] + mesh["ios_edges_item_ids"] = edges_item_ids mesh["ios_materials"] = [m.instance_id() for m in geometry.materials] mesh["ios_material_ids"] = geometry.material_ids