From 1ca1954edc78c03cfad04a93b89442a963500c56 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Fri, 14 Nov 2025 19:28:00 +0500 Subject: [PATCH] try to catch bug in assign_product --- .../api/drawing/assign_product.py | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/ifcopenshell-python/ifcopenshell/api/drawing/assign_product.py b/src/ifcopenshell-python/ifcopenshell/api/drawing/assign_product.py index e8b22c1024..14d14ea905 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/drawing/assign_product.py +++ b/src/ifcopenshell-python/ifcopenshell/api/drawing/assign_product.py @@ -79,10 +79,24 @@ def assign_product( RelatingProduct=grid, ) - if related_object.HasAssignments: - for rel in related_object.HasAssignments: - if rel.is_a("IfcRelAssignsToProduct") and rel.RelatingProduct == relating_product: - return + import bonsai.tool as tool + + def warn(msg: str) -> None: + print(msg) + tool.Blender.show_info_message(msg, "ERROR") + + has_assignments = [r.RelatingProduct for r in related_object.HasAssignments if r.is_a("IfcRelAssignsToProduct")] + + if has_assignments: + if relating_product in has_assignments: + if len(has_assignments) > 1: + warn( + f"Was trying to assign a product {relating_product} and found multiple assignments!! {has_assignments}" + ) + return + warn( + f"WARNING. assign_product - trying to assign product {relating_product}, but other products already assigned: {has_assignments}" + ) referenced_by = None if relating_product.ReferencedBy: