get_psets utility now defaults to merging duplicate psets instead of overriding

This behaviour is more comprehensive for broken data and now consistent for types and materials.
This commit is contained in:
Dion Moult
2024-05-22 08:12:25 +10:00
parent 4027f28c85
commit 69c197c1a4
@@ -157,13 +157,13 @@ def get_psets(
continue
if qtos_only and not definition.is_a("IfcElementQuantity"):
continue
psets[definition.Name] = get_property_definition(definition, verbose=verbose)
psets.setdefault(definition.Name, {}).update(get_property_definition(definition, verbose=verbose))
# NOTE: doesn't account for IFC2X3 missing HasProperties
elif element.is_a("IfcMaterialDefinition") or element.is_a("IfcProfileDef"):
for definition in getattr(element, "HasProperties", None) or []:
if qtos_only:
continue
psets[definition.Name] = get_property_definition(definition, verbose=verbose)
psets.setdefault(definition.Name, {}).update(get_property_definition(definition, verbose=verbose))
elif (is_defined_by := getattr(element, "IsDefinedBy", None)) is not None:
# other IfcObjectDefinition
if should_inherit: