Files
IfcOpenShell/src/blenderbim/scripts/get_all_qtos.py
T
2024-05-29 08:41:43 +10:00

28 lines
940 B
Python

import json
import ifcopenshell.util.pset
import ifcopenshell.util.type
def order_dict(dictionary):
# https://stackoverflow.com/questions/22721579/sorting-a-nested-ordereddict-by-key-recursively
return {k: order_dict(v) if isinstance(v, dict) else v for k, v in sorted(dictionary.items())}
results = {}
psetqto = ifcopenshell.util.pset.get_template("IFC4")
for template in psetqto.templates:
for pset_template in template.by_type("IfcPropertySetTemplate"):
if not pset_template.Name.startswith("Qto_"):
continue
query = pset_template.ApplicableEntity
results.setdefault(query, {})
results[query].setdefault(pset_template.Name, {})
for quantity in pset_template.HasPropertyTemplates:
results[query][pset_template.Name][quantity.Name] = None
results = order_dict(results)
print(results)
with open("results.json", "w") as f:
json.dump(results, f, indent=4)