From 9d83eec67490cfe26768c7d3b4419326f067c838 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Tue, 5 Aug 2025 10:51:23 +0500 Subject: [PATCH] typing --- src/bonsai/bonsai/bim/module/bsdd/operator.py | 1 + src/bonsai/bonsai/bim/module/geometry/operator.py | 15 ++++++++++----- src/bonsai/bonsai/bim/module/search/prop.py | 3 --- src/bonsai/bonsai/tool/bsdd.py | 2 +- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/bonsai/bonsai/bim/module/bsdd/operator.py b/src/bonsai/bonsai/bim/module/bsdd/operator.py index 5db751f8ef..bc4995b6c6 100644 --- a/src/bonsai/bonsai/bim/module/bsdd/operator.py +++ b/src/bonsai/bonsai/bim/module/bsdd/operator.py @@ -94,6 +94,7 @@ class AddBSDDProperties(bpy.types.Operator, tool.Ifc.Operator): psets.setdefault(selected_property.metadata, {})[selected_property.name] = selected_property.get_value() ifc_definition_id = tool.Blender.get_obj_ifc_definition_id(self.obj, self.obj_type, context) + assert ifc_definition_id element = tool.Ifc.get().by_id(ifc_definition_id) current_psets = ifcopenshell.util.element.get_psets(element, verbose=True) diff --git a/src/bonsai/bonsai/bim/module/geometry/operator.py b/src/bonsai/bonsai/bim/module/geometry/operator.py index 933b9801ed..ac16d52ff6 100644 --- a/src/bonsai/bonsai/bim/module/geometry/operator.py +++ b/src/bonsai/bonsai/bim/module/geometry/operator.py @@ -22,6 +22,7 @@ import bmesh import numpy as np import numpy.typing as npt import ifcopenshell +import ifcopenshell.api.drawing import ifcopenshell.api.group import ifcopenshell.api.pset import ifcopenshell.api.geometry @@ -51,6 +52,7 @@ from mathutils import Vector, Matrix, Quaternion from time import time from bonsai.bim.ifc import IfcStore from ifcopenshell.util.shape_builder import ShapeBuilder +from collections.abc import Sequence from typing import Any, Union, Literal, get_args, TYPE_CHECKING, assert_never, NamedTuple from bonsai.bim.module.model.decorator import ProfileDecorator @@ -1382,7 +1384,7 @@ class RefreshLinkedAggregate(bpy.types.Operator, tool.Ifc.Operator): tool.Geometry.delete_ifc_object(tool.Ifc.get_object(element)) - def get_assignments(element: ifcopenshell.entity_instance) -> list: + def get_assignments(element: ifcopenshell.entity_instance) -> Sequence[ifcopenshell.entity_instance]: annotations = [] inverse = list(tool.Ifc.get().get_inverse(element)) assignments = [a for a in inverse if a.is_a("IfcRelAssignsToProduct")] @@ -1393,7 +1395,8 @@ class RefreshLinkedAggregate(bpy.types.Operator, tool.Ifc.Operator): annotations = assignment.RelatedObjects return annotations - def assign_to_annotations(obj, assignments): + def assign_to_annotations(obj: bpy.types.Object, assignments: Sequence[ifcopenshell.entity_instance]) -> None: + ifc_file = tool.Ifc.get() for assignment in assignments: product = tool.Ifc.get_entity(obj) annotation = tool.Ifc.get_object(assignment) @@ -1403,11 +1406,13 @@ class RefreshLinkedAggregate(bpy.types.Operator, tool.Ifc.Operator): existing_product = tool.Drawing.get_assigned_product(assignment) if existing_product != product: if existing_product: - tool.Ifc.run( - "drawing.unassign_product", relating_product=existing_product, related_object=assignment + ifcopenshell.api.drawing.unassign_product( + ifc_file, relating_product=existing_product, related_object=assignment ) if product: - tool.Ifc.run("drawing.assign_product", relating_product=product, related_object=assignment) + ifcopenshell.api.drawing.assign_product( + ifc_file, relating_product=product, related_object=assignment + ) tool.Blender.update_viewport() def get_original_data(element: ifcopenshell.entity_instance) -> dict[int, dict[int, str]]: diff --git a/src/bonsai/bonsai/bim/module/search/prop.py b/src/bonsai/bonsai/bim/module/search/prop.py index 110d015b01..0b6001bb1f 100644 --- a/src/bonsai/bonsai/bim/module/search/prop.py +++ b/src/bonsai/bonsai/bim/module/search/prop.py @@ -104,7 +104,6 @@ def update_show_flat_colours(self: "BIMSearchProperties", context: bpy.types.Con class BIMFilterClasses(PropertyGroup): - name: StringProperty(name="Name") is_selected: BoolProperty(name="Is Selected", default=True, update=update_is_class_selected) total: IntProperty(name="Total") unselected_objects: CollectionProperty(type=ObjProperty, name="Unfiltered Objects") @@ -116,7 +115,6 @@ class BIMFilterClasses(PropertyGroup): class BIMFilterBuildingStoreys(PropertyGroup): - name: StringProperty(name="Name") is_selected: BoolProperty(name="Is Level Selected", default=True, update=update_is_container_selected) total: IntProperty(name="Total") unselected_objects: CollectionProperty(type=ObjProperty, name="Unfiltered Objects") @@ -128,7 +126,6 @@ class BIMFilterBuildingStoreys(PropertyGroup): class BIMColour(PropertyGroup): - name: StringProperty(name="Name") total: IntProperty(name="Total") colour: FloatVectorProperty(name="Colour", subtype="COLOR", default=(1, 0, 0), min=0.0, max=1.0) diff --git a/src/bonsai/bonsai/tool/bsdd.py b/src/bonsai/bonsai/tool/bsdd.py index c07cc6672e..337cf626c9 100644 --- a/src/bonsai/bonsai/tool/bsdd.py +++ b/src/bonsai/bonsai/tool/bsdd.py @@ -475,7 +475,7 @@ class Bsdd(bonsai.core.tool.Bsdd): return results @classmethod - def set_library_active(cls, uri: str, state: bool): + def set_library_active(cls, uri: str, state: bool) -> None: for dictionary in cls.get_bsdd_props().dictionaries: if dictionary.uri == uri: dictionary.is_active = state