Directly use predefined type doc function instead of wrapper

This commit is contained in:
Gorgious
2022-10-31 18:10:03 +01:00
parent eff3318399
commit 90369bf7f7
4 changed files with 13 additions and 20 deletions
+7 -4
View File
@@ -23,12 +23,11 @@ import math
import zipfile
import ifcopenshell
import ifcopenshell.util.attribute
from ifcopenshell.util.doc import get_attribute_doc
from ifcopenshell.util.doc import get_attribute_doc, get_predefined_type_doc
from mathutils import geometry
from mathutils import Vector
import blenderbim.tool as tool
from blenderbim.bim.ifc import IfcStore
from blenderbim.bim.prop import get_predefined_type_description
def draw_attributes(props, layout, copy_operator=None):
@@ -116,10 +115,14 @@ def add_attribute_enum_items_descriptions(attribute_blender, enum_items):
attribute_blender.enum_descriptions.clear()
if isinstance(enum_items, dict):
enum_items = enum_items.keys()
version = tool.Ifc.get_schema()
for enum_item in enum_items:
new_enum_description = attribute_blender.enum_descriptions.add()
# TODO this only supports predefined type enums. Add support for other types of enums ?
new_enum_description.name = get_predefined_type_description(attribute_blender.ifc_class, enum_item) or ""
try:
description = get_predefined_type_doc(version, attribute_blender.ifc_class, enum_item)
except KeyError: # TODO this only supports predefined type enums. Add support for other types of enums ?
description = ""
new_enum_description.name = description
def add_attribute_description(attribute_blender):
@@ -22,12 +22,10 @@ import json
import functools
import ifcopenshell
import ifcopenshell.util.element
from ifcopenshell.util.doc import get_entity_doc
from ifcopenshell.util.doc import get_entity_doc, get_predefined_type_doc
import blenderbim.tool as tool
from blenderbim.bim.ifc import IfcStore
from blenderbim.bim.module.model.root import ConstrTypeEntityNotFound
from blenderbim.bim.prop import get_predefined_type_description
def refresh():
AuthoringData.is_loaded = False
@@ -72,11 +70,12 @@ class AuthoringData:
def type_predefined_type(cls):
results = []
declaration = tool.Ifc().schema().declaration_by_name(cls.props.type_class)
version = tool.Ifc.get_schema()
for attribute in declaration.attributes():
if attribute.name() == "PredefinedType":
results.extend(
[
(e, e, get_predefined_type_description(cls.props.type_class, e))
(e, e, get_predefined_type_doc(version, cls.props.type_class, e))
for e in attribute.type_of_attribute().declared_type().enumeration_items()
]
)
@@ -19,10 +19,9 @@
from collections import defaultdict
import bpy
import ifcopenshell.util.element
from ifcopenshell.util.doc import get_entity_doc
from ifcopenshell.util.doc import get_entity_doc, get_predefined_type_doc
import blenderbim.tool as tool
from blenderbim.bim.ifc import IfcStore
from blenderbim.bim.prop import get_predefined_type_description
def refresh():
@@ -87,11 +86,12 @@ class IfcClassData:
types_enum = []
ifc_class = bpy.context.scene.BIMRootProperties.ifc_class
declaration = tool.Ifc.schema().declaration_by_name(ifc_class)
version = tool.Ifc.get_schema()
for attribute in declaration.attributes():
if attribute.name() == "PredefinedType":
types_enum.extend(
[
(e, e, get_predefined_type_description(ifc_class, e))
(e, e, get_predefined_type_doc(version, ifc_class, e))
for e in attribute.type_of_attribute().declared_type().enumeration_items()
]
)
-9
View File
@@ -106,15 +106,6 @@ def cache_string(s):
cache_string.data = {}
def get_predefined_type_description(entity, predefined_type):
schema = tool.Ifc.get_schema()
if schema is not None:
try:
return get_predefined_type_doc(schema, entity, predefined_type)
except KeyError: # This entity doesn't have any predefined types
return ""
def get_attribute_enum_values(prop, context):
# Support weird buildingSMART dictionary mappings which behave like enums
items = []