mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-15 18:14:08 +00:00
28 lines
940 B
Python
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)
|