mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-10 09:48:32 +00:00
Inherited and overridden classification references per system is now supported
This commit is contained in:
@@ -24,15 +24,25 @@ def get_references(element, should_inherit=True):
|
||||
if should_inherit:
|
||||
element_type = ifcopenshell.util.element.get_type(element)
|
||||
if element_type and element_type != element:
|
||||
results.update(get_references(element_type))
|
||||
results.update(
|
||||
{
|
||||
r.RelatingClassification
|
||||
for r in getattr(element, "HasAssociations", [])
|
||||
if r.is_a("IfcRelAssociatesClassification")
|
||||
}
|
||||
)
|
||||
return results
|
||||
results = get_references(element_type)
|
||||
occurrence_results = {
|
||||
r.RelatingClassification
|
||||
for r in getattr(element, "HasAssociations", [])
|
||||
if r.is_a("IfcRelAssociatesClassification")
|
||||
}
|
||||
if results:
|
||||
type_references_per_system = {}
|
||||
occurrence_references_per_system = {}
|
||||
for result in results:
|
||||
type_references_per_system.setdefault(get_classification(result), []).append(result)
|
||||
for result in occurrence_results:
|
||||
occurrence_references_per_system.setdefault(get_classification(result), []).append(result)
|
||||
type_references_per_system.update(occurrence_references_per_system)
|
||||
results = set()
|
||||
for values in type_references_per_system.values():
|
||||
[results.add(v) for v in values]
|
||||
return results
|
||||
return occurrence_results
|
||||
|
||||
|
||||
def get_classification(reference):
|
||||
|
||||
Reference in New Issue
Block a user