Scheduled dates now cascade when dependencies, lag times, and calendars are modified

This commit is contained in:
Dion Moult
2021-06-17 14:59:28 +10:00
parent 50608d9459
commit a08918fd22
7 changed files with 38 additions and 22 deletions
@@ -73,8 +73,6 @@ class Usecase:
finishes.append(self.offset_date(start, days, duration_type, self.get_calendar(predecessor)))
else:
finishes.append(start)
else:
return
if starts and finishes:
start = max(starts)
@@ -135,8 +133,6 @@ class Usecase:
),
"IfcDateTime",
)
else:
return
for rel in task.IsPredecessorTo:
self.cascade_task(rel.RelatedProcess)
@@ -1,3 +1,4 @@
import ifcopenshell.api
import ifcopenshell.util.date
@@ -16,3 +17,5 @@ class Usecase:
else:
value = self.file.createIfcDuration(ifcopenshell.util.date.datetime2ifc(value, "IfcDuration"))
setattr(self.settings["lag_time"], name, value)
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)
@@ -1,3 +1,7 @@
import ifcopenshell
import ifcopenshell.api
class Usecase:
def __init__(self, file, **settings):
self.file = file
@@ -8,3 +12,7 @@ class Usecase:
def execute(self):
for name, value in self.settings["attributes"].items():
setattr(self.settings["rel_sequence"], name, value)
if "SequenceType" in self.settings["attributes"].keys():
ifcopenshell.api.run(
"sequence.cascade_schedule", self.file, task=self.settings["rel_sequence"].RelatedProcess
)
@@ -1,3 +1,6 @@
import ifcopenshell.api
class Usecase:
def __init__(self, file, **settings):
self.file = file
@@ -9,5 +12,9 @@ class Usecase:
def execute(self):
if len(self.file.get_inverse(self.settings["rel_sequence"].TimeLag)) == 1:
return self.file.remove(self.settings["rel_sequence"].TimeLag)
self.settings["rel_sequence"].TimeLag = None
self.file.remove(self.settings["rel_sequence"].TimeLag)
else:
self.settings["rel_sequence"].TimeLag = None
ifcopenshell.api.run(
"sequence.cascade_schedule", self.file, task=self.settings["rel_sequence"].RelatedProcess
)
@@ -16,3 +16,4 @@ class Usecase:
for rel in self.settings["related_process"].IsSuccessorFrom or []:
if rel.RelatingProcess == self.settings["relating_process"]:
self.file.remove(rel)
ifcopenshell.api.run("sequence.cascade_schedule", self.file, task=self.settings["related_process"])