mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-11 18:16:40 +00:00
25 lines
1020 B
Python
25 lines
1020 B
Python
import ifcopenshell.api
|
|
|
|
|
|
class Usecase:
|
|
def __init__(self, file, **settings):
|
|
self.file = file
|
|
self.settings = {"cost_item": None, "ifc_class": "IfcQuantityCount"}
|
|
for key, value in settings.items():
|
|
self.settings[key] = value
|
|
|
|
def execute(self):
|
|
quantity = self.file.create_entity(self.settings["ifc_class"], Name="Unnamed")
|
|
quantity[3] = 0.0
|
|
# This is a bold assumption
|
|
# https://forums.buildingsmart.org/t/how-does-a-cost-item-know-that-it-is-counting-a-controlled-product/3564
|
|
if self.settings["ifc_class"] == "IfcQuantityCount" and self.settings["cost_item"].Controls:
|
|
count = 0
|
|
for rel in self.settings["cost_item"].Controls:
|
|
count += len(rel.RelatedObjects)
|
|
quantity[3] = count
|
|
quantities = list(self.settings["cost_item"].CostQuantities or [])
|
|
quantities.append(quantity)
|
|
self.settings["cost_item"].CostQuantities = quantities
|
|
return quantity
|