You can now edit resource base quantity

This commit is contained in:
Dion Moult
2021-08-28 14:38:10 +10:00
parent 126bac462d
commit faaeef92de
8 changed files with 214 additions and 2 deletions
@@ -0,0 +1,18 @@
import ifcopenshell.util.element
class Usecase:
def __init__(self, file, **settings):
self.file = file
self.settings = {"resource": 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
old_quantity = self.settings["resource"].BaseQuantity
self.settings["resource"].BaseQuantity = quantity
if old_quantity:
ifcopenshell.util.element.remove_deep(self.file, old_quantity)
return quantity
@@ -46,7 +46,8 @@ class Data(CostValueTrait):
data["Usage"] = data["Usage"].id()
data["TotalCostQuantity"] = cls.get_total_quantity(resource)
if resource.BaseQuantity:
data["BaseQuantity"] = resource.BaseQuantity.id()
data["BaseQuantity"] = resource.BaseQuantity.get_info()
del data["BaseQuantity"]["Unit"]
if resource.BaseCosts:
data["BaseCosts"] = [e.id() for e in resource.BaseCosts]
cls.load_cost_values(resource, data)
@@ -0,0 +1,10 @@
class Usecase:
def __init__(self, file, **settings):
self.file = file
self.settings = {"physical_quantity": None, "attributes": {}}
for key, value in settings.items():
self.settings[key] = value
def execute(self):
for name, value in self.settings["attributes"].items():
setattr(self.settings["physical_quantity"], name, value)
@@ -0,0 +1,15 @@
import ifcopenshell.util.element
class Usecase:
def __init__(self, file, **settings):
self.file = file
self.settings = {"resource": None}
for key, value in settings.items():
self.settings[key] = value
def execute(self):
old_quantity = self.settings["resource"].BaseQuantity
self.settings["resource"].BaseQuantity = None
if old_quantity:
ifcopenshell.util.element.remove_deep(self.file, old_quantity)