MCPcopy Create free account
hub / github.com/IfcOpenShell/IfcOpenShell / run_quantify

Function run_quantify

src/ifcedit/ifcedit/quantify.py:16–37  ·  view source on GitHub ↗

Run quantity take-off on the model using the named rule. Modifies the model in-place by adding/updating IfcElementQuantity psets. Returns a summary dict with ok, rule, and elements_quantified.

(model: ifcopenshell.file, rule: str, selector: str | None = None)

Source from the content-addressed store, hash-verified

14
15
16def run_quantify(model: ifcopenshell.file, rule: str, selector: str | None = None) -> dict[str, Any]:
17 """Run quantity take-off on the model using the named rule.
18
19 Modifies the model in-place by adding/updating IfcElementQuantity psets.
20 Returns a summary dict with ok, rule, and elements_quantified.
21 """
22 from ifc5d.qto import edit_qtos, quantify
23 from ifc5d.qto import rules as rule_sets
24
25 if rule not in rule_sets:
26 return {"ok": False, "error": f"Unknown rule: {rule}. Available: {list(rule_sets.keys())}"}
27
28 import ifcopenshell.util.selector
29
30 if selector:
31 elements = set(ifcopenshell.util.selector.filter_elements(model, selector))
32 else:
33 elements = set(model.by_type("IfcElement"))
34
35 results = quantify(model, elements, rule_sets[rule])
36 edit_qtos(model, results)
37 return {"ok": True, "rule": rule, "elements_quantified": len(results)}

Calls 6

quantifyFunction · 0.90
edit_qtosFunction · 0.90
setFunction · 0.50
keysMethod · 0.45
filter_elementsMethod · 0.45
by_typeMethod · 0.45