Simplify attribute description

This commit is contained in:
Gorgious56
2022-10-28 15:44:31 +02:00
parent 37a0854d40
commit 819db11db4
2 changed files with 15 additions and 15 deletions
+10 -10
View File
@@ -84,6 +84,7 @@ def import_attribute(attribute, props, data, callback=None):
new.is_null = data[attribute.name()] is None
new.is_optional = attribute.optional()
new.data_type = data_type if isinstance(data_type, str) else ""
new.ifc_class = data["type"]
is_handled_by_callback = callback(attribute.name(), new, data) if callback else None
if is_handled_by_callback:
@@ -103,27 +104,26 @@ def import_attribute(attribute, props, data, callback=None):
elif data_type == "enum":
enum_items = ifcopenshell.util.attribute.get_enum_items(attribute)
new.enum_items = json.dumps(enum_items)
add_attribute_enum_items_descriptions(data["type"], new, enum_items)
add_attribute_enum_items_descriptions(new, enum_items)
if data[new.name]:
new.enum_value = data[new.name]
add_attribute_description(data["type"], new)
new.ifc_class = data["type"]
add_attribute_description(new)
def add_attribute_enum_items_descriptions(ifc_class, new_attribute, enum_items):
new_attribute.enum_descriptions.clear()
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()
for enum_item in enum_items:
new_enum_description = new_attribute.enum_descriptions.add()
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(ifc_class, enum_item) or ""
new_enum_description.name = get_predefined_type_description(attribute_blender.ifc_class, enum_item) or ""
def add_attribute_description(ifc_class, new_attribute):
description = get_attribute_description(ifc_class, new_attribute.name)
def add_attribute_description(attribute_blender):
description = get_attribute_description(attribute_blender.ifc_class, attribute_blender.name)
if description:
new_attribute.description = description
attribute_blender.description = description
def export_attributes(props, callback=None):
@@ -613,6 +613,7 @@ class EnableEditingMaterialSetItem(bpy.types.Operator):
continue
if attribute.name() in material_set_item_data:
new = self.props.material_set_item_attributes.add()
new.ifc_class = material_set_item.is_a()
new.name = attribute.name()
new.is_null = material_set_item_data[attribute.name()] is None
new.data_type = data_type
@@ -624,9 +625,8 @@ class EnableEditingMaterialSetItem(bpy.types.Operator):
new.int_value = 0 if new.is_null else material_set_item_data[attribute.name()]
elif data_type == "boolean":
new.bool_value = False if new.is_null else material_set_item_data[attribute.name()]
blenderbim.bim.helper.add_attribute_description(material_set_item.is_a(), new)
new.ifc_class = material_set_item.is_a()
blenderbim.bim.helper.add_attribute_description(new)
def load_profile_attributes(self, material_set_item, material_set_item_data):
self.props.material_set_item_profile_attributes.clear()
@@ -643,6 +643,7 @@ class EnableEditingMaterialSetItem(bpy.types.Operator):
if attribute.name() in profile_data:
new = self.props.material_set_item_profile_attributes.add()
new.name = attribute.name()
new.ifc_class = profile.is_a()
new.is_null = profile_data[attribute.name()] is None
new.is_optional = attribute.optional()
new.data_type = data_type
@@ -659,8 +660,7 @@ class EnableEditingMaterialSetItem(bpy.types.Operator):
if profile_data[attribute.name()]:
new.enum_value = profile_data[attribute.name()]
blenderbim.bim.helper.add_attribute_description(profile.is_a(), new)
new.ifc_class = profile.is_a()
blenderbim.bim.helper.add_attribute_description(new)
# Force null to be false if the attribute is mandatory because when we first assign a profile, all of
# its fields are null (which is illegal).