Create blank ifc4 qto base quantities ruleset

This commit is contained in:
Dion Moult
2024-05-29 08:41:43 +10:00
parent ce26d931c1
commit 6806eb0a05
2 changed files with 651 additions and 4 deletions
+27
View File
@@ -0,0 +1,27 @@
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)