Compare commits

...

1 Commits

Author SHA1 Message Date
Thomas Krijnen 7324410dd5 Update unit.py 2024-10-30 08:46:50 +01:00
@@ -725,27 +725,25 @@ def format_length(
def is_attr_type(
content_type: ifcopenshell_wrapper.parameter_type, ifc_unit_type_name: str, include_select_types: bool = True
content_type: ifcopenshell_wrapper.parameter_type,
ifc_unit_type_name: str,
include_select_types: bool = True,
) -> Union[ifcopenshell_wrapper.type_declaration, None]:
cur_decl = content_type
if hasattr(cur_decl, "name") and cur_decl.name() == ifc_unit_type_name:
return cur_decl
if include_select_types:
if hasattr(cur_decl, "select_list"):
for select_item in cur_decl.select_list():
if is_attr_type(select_item, ifc_unit_type_name):
return select_item
while hasattr(cur_decl, "declared_type") is True:
cur_decl = cur_decl.declared_type()
if include_select_types:
if hasattr(cur_decl, "select_list"):
for select_item in cur_decl.select_list():
if is_attr_type(select_item, ifc_unit_type_name):
return select_item
if hasattr(cur_decl, "name") is False:
continue
if cur_decl.name() == ifc_unit_type_name:
return cur_decl
if hasattr(cur_decl, "declared_type"):
return is_attr_type(
cur_decl.declared_type(), ifc_unit_type_name, include_select_types
)
if isinstance(cur_decl, ifcopenshell_wrapper.aggregation_type):
# support aggregate of aggregates, as in IfcCartesianPointList3D.CoordList
@@ -756,14 +754,7 @@ def is_attr_type(
return get_declared_type_from_aggregate(cur_decl)
cur_decl = get_declared_type_from_aggregate(cur_decl)
if hasattr(cur_decl, "name") and cur_decl.name() == ifc_unit_type_name:
return cur_decl
while hasattr(cur_decl, "declared_type") is True:
cur_decl = cur_decl.declared_type()
if hasattr(cur_decl, "name") is False:
continue
if cur_decl.name() == ifc_unit_type_name:
return cur_decl
return is_attr_type(cur_decl, ifc_unit_type_name, include_select_types)
return None