mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-10 01:41:57 +00:00
Scheduled dates now cascade when dependencies, lag times, and calendars are modified
This commit is contained in:
@@ -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"])
|
||||
|
||||
Reference in New Issue
Block a user