2021-06-17 14:59:28 +10:00
|
|
|
import ifcopenshell.api
|
2021-05-04 20:56:19 +10:00
|
|
|
import ifcopenshell.util.date
|
|
|
|
|
|
|
|
|
|
|
2021-04-30 02:21:54 +00:00
|
|
|
class Usecase:
|
|
|
|
|
def __init__(self, file, **settings):
|
|
|
|
|
self.file = file
|
2021-05-04 20:56:19 +10:00
|
|
|
self.settings = {"lag_time": None, "attributes": {}}
|
2021-04-30 02:21:54 +00:00
|
|
|
for key, value in settings.items():
|
|
|
|
|
self.settings[key] = value
|
|
|
|
|
|
|
|
|
|
def execute(self):
|
|
|
|
|
for name, value in self.settings["attributes"].items():
|
|
|
|
|
if name == "LagValue" and value is not None:
|
2021-05-04 20:56:19 +10:00
|
|
|
if isinstance(value, float):
|
|
|
|
|
value = self.file.createIfcRatioMeasure(value)
|
|
|
|
|
else:
|
|
|
|
|
value = self.file.createIfcDuration(ifcopenshell.util.date.datetime2ifc(value, "IfcDuration"))
|
|
|
|
|
setattr(self.settings["lag_time"], name, value)
|
2021-06-17 14:59:28 +10:00
|
|
|
for rel in [r for r in self.file.get_inverse(self.settings["lag_time"]) if r.is_a("IfcRelSequence")]:
|
|
|
|
|
ifcopenshell.api.run("sequence.cascade_schedule", self.file, task=rel.RelatedProcess)
|