Add AuthoringData.data["relating_type_id_current"] to model data.

This commit is contained in:
Bruno Perdigão
2024-11-08 11:13:38 -03:00
committed by Bruno Perdigão
parent 084c2aa25a
commit b416df538a
2 changed files with 14 additions and 9 deletions
+9 -4
View File
@@ -58,6 +58,7 @@ class AuthoringData:
cls.data["ifc_classes"] = cls.ifc_classes()
cls.data["ifc_class_current"] = cls.ifc_class_current()
cls.data["relating_type_id"] = cls.relating_type_id() # only after .ifc_classes()
cls.data["relating_type_id_current"] = cls.relating_type_id_current() # only after .ifc_classes()
cls.data["relating_type_name"] = cls.relating_type_name() # only after .relating_type_id()
cls.data["relating_type_description"] = cls.relating_type_description() # only after .relating_type_id()
cls.data["predefined_type"] = cls.predefined_type() # only after .relating_type_id()
@@ -247,18 +248,22 @@ class AuthoringData:
return [(str(e.id()), e.Name or "Unnamed", e.Description or "") for e in results]
return []
@classmethod
def relating_type_name(cls):
@classmethod
def relating_type_id_current(cls):
relating_type_id = tool.Blender.get_enum_safe(cls.props, "relating_type_id")
relating_type_id_data = cls.data["relating_type_id"]
if not relating_type_id and relating_type_id_data:
relating_type_id = relating_type_id_data[0][0]
if relating_type_id:
return relating_type_id
@classmethod
def relating_type_name(cls):
if relating_type_id := cls.data["relating_type_id_current"]:
return tool.Ifc.get().by_id(int(relating_type_id)).Name or "Unnamed"
@classmethod
def relating_type_description(cls):
if relating_type_id := cls.props.relating_type_id:
if relating_type_id := cls.data["relating_type_id_current"]:
return tool.Ifc.get().by_id(int(relating_type_id)).Description or "No description"
@classmethod
@@ -936,18 +936,18 @@ class Hotkey(bpy.types.Operator, tool.Ifc.Operator):
def hotkey_S_A(self):
props = bpy.context.scene.BIMModelProperties
relating_type_id = AuthoringData.data["relating_type_id_current"]
props.relating_type_id = relating_type_id
if bpy.context.scene.BIMGeometryProperties.mode == "ITEM":
bpy.ops.wm.call_menu(name="BIM_MT_add_representation_item")
else:
for obj in tool.Blender.get_selected_objects():
obj.select_set(False)
if (
relating_type_id := tool.Blender.get_enum_safe(props, "relating_type_id")
) and tool.Model.get_usage_type(tool.Ifc.get().by_id(int(relating_type_id))) == "LAYER2":
if relating_type_id and tool.Model.get_usage_type(tool.Ifc.get().by_id(int(relating_type_id))) == "LAYER2":
bpy.ops.bim.draw_polyline_wall("INVOKE_DEFAULT")
elif (
relating_type_id := tool.Blender.get_enum_safe(props, "relating_type_id")
) and tool.Model.get_usage_type(tool.Ifc.get().by_id(int(relating_type_id))) == "LAYER3":
relating_type_id and tool.Model.get_usage_type(tool.Ifc.get().by_id(int(relating_type_id))) == "LAYER3"
):
bpy.ops.bim.draw_polyline_slab("INVOKE_DEFAULT")
else:
bpy.ops.bim.add_occurrence("INVOKE_DEFAULT")