mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-09 17:31:45 +00:00
ifcopenshell.util.element.get_type to be less strict again after d443c5e
I guess by accident in d443c5e I've made this method too strict and it broke get_references using it for IfcPropertySets. Maybe it's a good idea to make it more strict in the future, for now just restoring the previous behaviour.
This commit is contained in:
@@ -27,7 +27,7 @@ def get_references(element: ifcopenshell.entity_instance, should_inherit=True) -
|
||||
references := getattr(element, "HasExternalReference", None)
|
||||
) is not None:
|
||||
return {r.RelatingReference for r in references}
|
||||
if should_inherit:
|
||||
if should_inherit and element.is_a("IfcObject"):
|
||||
element_type = ifcopenshell.util.element.get_type(element)
|
||||
if element_type and element_type != element:
|
||||
results = get_references(element_type)
|
||||
|
||||
@@ -500,7 +500,7 @@ def get_type(element: ifcopenshell.entity_instance) -> Union[ifcopenshell.entity
|
||||
|
||||
Note: `get_type(type_element) == type_element`.
|
||||
|
||||
:param element: The element occurrence
|
||||
:param element: The element occurrence (IfcObject)
|
||||
:type: ifcopenshell.entity_instance
|
||||
:return: The related type element
|
||||
:rtype: Union[ifcopenshell.entity_instance, None]
|
||||
@@ -517,11 +517,11 @@ def get_type(element: ifcopenshell.entity_instance) -> Union[ifcopenshell.entity
|
||||
|
||||
schema = element.file.schema
|
||||
if schema != "IFC2X3":
|
||||
if is_typed_by := getattr(element, "IsTypedBy", []):
|
||||
if is_typed_by := getattr(element, "IsTypedBy", ()):
|
||||
return is_typed_by[0].RelatingType
|
||||
return
|
||||
|
||||
if is_defined_by := element.IsDefinedBy: # IFC2X3
|
||||
if is_defined_by := getattr(element, "IsDefinedBy", ()): # IFC2X3
|
||||
for relationship in is_defined_by:
|
||||
if relationship.is_a("IfcRelDefinesByType"):
|
||||
return relationship.RelatingType
|
||||
|
||||
Reference in New Issue
Block a user