This commit is contained in:
Andrej730
2025-01-22 11:57:55 +05:00
parent a774a75509
commit 391091ad12
7 changed files with 24 additions and 12 deletions
@@ -124,6 +124,7 @@ class EditAttributes(bpy.types.Operator, tool.Ifc.Operator):
def edit_attributes_on_obj(self, obj):
props = obj.BIMAttributeProperties
product = tool.Ifc.get_entity(obj)
assert product
def callback(attributes, prop):
if prop.name in ("RefLatitude", "RefLongitude"):
@@ -89,7 +89,7 @@ class OverrideMeshSeparate(bpy.types.Operator, tool.Ifc.Operator):
else:
self.report({"INFO"}, f"Separating an {item.is_a()} is not supported")
def add_meshlike_item(self, obj):
def add_meshlike_item(self, obj: bpy.types.Object) -> None:
props = bpy.context.scene.BIMGeometryProperties
obj.show_in_front = True
new = props.item_objs.add()
@@ -981,7 +981,7 @@ class OverrideDuplicateMove(bpy.types.Operator):
self.report({"ERROR"}, lock_error_message(obj.name))
continue
elif tool.Geometry.is_representation_item(obj):
OverrideDuplicateMove.duplicate_item(self, obj)
OverrideDuplicateMove.duplicate_item(obj)
continue
tracked_opening_type = tool.Model.get_tracked_opening_type(obj)
@@ -1069,7 +1069,7 @@ class OverrideDuplicateMove(bpy.types.Operator):
return old_to_new
@staticmethod
def duplicate_item(self, obj):
def duplicate_item(obj: bpy.types.Object) -> None:
props = bpy.context.scene.BIMGeometryProperties
item = tool.Ifc.get().by_id(obj.data.BIMMeshProperties.ifc_definition_id)
new_item = ifcopenshell.util.element.copy_deep(tool.Ifc.get(), item)
@@ -317,7 +317,7 @@ class EnableEditingBooleans(bpy.types.Operator):
representation = ifcopenshell.util.representation.resolve_representation(representation)
props.booleans.clear()
def load_boolean(item, level=0):
def load_boolean(item: ifcopenshell.entity_instance, level: int = 0) -> None:
new = props.booleans.add()
new.name = f"{item.is_a()}/{item.id()}"
new.ifc_definition_id = item.id()
+3 -2
View File
@@ -19,6 +19,7 @@
import bpy
from bpy.types import PropertyGroup
from bpy.props import PointerProperty, StringProperty, IntProperty, BoolProperty, CollectionProperty, EnumProperty
from typing import Union
class Boolean(PropertyGroup):
@@ -47,6 +48,6 @@ class BIMBooleanProperties(PropertyGroup):
)
@property
def active_boolean(self):
if self.booleans and self.active_boolean_index < len(self.booleans):
def active_boolean(self) -> Union[Boolean, None]:
if self.booleans and 0 <= self.active_boolean_index < len(self.booleans):
return self.booleans[self.active_boolean_index]
+9 -1
View File
@@ -16,8 +16,16 @@
# You should have received a copy of the GNU General Public License
# along with Bonsai. If not, see <http://www.gnu.org/licenses/>.
from __future__ import annotations
from typing import TYPE_CHECKING, Union
def copy_attribute_to_selection(ifc, name=None, value=None, obj=None):
if TYPE_CHECKING:
import bpy
import ifcopenshell
import bonsai.tool as tool
def copy_attribute_to_selection(ifc: tool.Ifc, name: str, value: Union[str, None], obj: bpy.types.Object) -> None:
element = ifc.get_entity(obj)
if element:
try:
+2 -2
View File
@@ -144,7 +144,7 @@ class Blender(bonsai.core.tool.Blender):
return f"{name} {i}"
@classmethod
def get_active_object(cls, is_selected: bool = False) -> bpy.types.Object:
def get_active_object(cls, is_selected: bool = False) -> Union[bpy.types.Object, None]:
obj = getattr(bpy.context, "active_object", None) or bpy.context.view_layer.objects.active
if not is_selected:
return obj
@@ -319,7 +319,7 @@ class Blender(bonsai.core.tool.Blender):
bpy.ops.wm.tool_set_by_id(name=tool_name)
@classmethod
def get_shader_editor_context(cls) -> Union[dict, None]:
def get_shader_editor_context(cls) -> Union[dict[str, Any], None]:
for screen in bpy.data.screens:
for area in screen.areas:
if area.type == "NODE_EDITOR":