massive refactor of the sequence module

This commit is contained in:
Sigma Dimensions
2022-08-29 21:55:37 +01:00
parent ac3eb6fbda
commit 37dec500fd
19 changed files with 2208 additions and 1184 deletions
@@ -62,7 +62,7 @@ class Usecase:
predecessor = rel.RelatingProcess
predecessor_duration = (
ifcopenshell.util.date.ifc2datetime(predecessor.TaskTime.ScheduleDuration)
if predecessor.TaskTime.ScheduleDuration
if predecessor.TaskTime and predecessor.TaskTime.ScheduleDuration
else datetime.timedelta()
)
if rel.SequenceType == "FINISH_START":
@@ -21,7 +21,6 @@ import ifcopenshell.util.date
class Data:
is_loaded = False
work_plans = {}
work_schedules = {}
work_calendars = {}
work_times = {}
@@ -35,7 +34,6 @@ class Data:
@classmethod
def purge(cls):
cls.is_loaded = False
cls.work_plans = {}
cls.work_schedules = {}
cls.work_calendars = {}
cls.work_times = {}
@@ -51,7 +49,6 @@ class Data:
cls._file = file
if not cls._file:
return
cls.load_work_plans()
cls.load_work_schedules()
cls.load_work_calendars()
cls.load_work_times()
@@ -63,23 +60,6 @@ class Data:
cls.load_sequences()
cls.is_loaded = True
@classmethod
def load_work_plans(cls):
cls.work_plans = {}
for work_plan in cls._file.by_type("IfcWorkPlan"):
data = work_plan.get_info()
del data["OwnerHistory"]
if data["Creators"]:
data["Creators"] = [p.id() for p in data["Creators"]]
data["CreationDate"] = ifcopenshell.util.date.ifc2datetime(data["CreationDate"])
data["StartTime"] = ifcopenshell.util.date.ifc2datetime(data["StartTime"])
if data["FinishTime"]:
data["FinishTime"] = ifcopenshell.util.date.ifc2datetime(data["FinishTime"])
data["IsDecomposedBy"] = []
for rel in work_plan.IsDecomposedBy:
data["IsDecomposedBy"].extend([o.id() for o in rel.RelatedObjects])
cls.work_plans[work_plan.id()] = data
@classmethod
def load_work_schedules(cls):
cls.work_schedules = {}
@@ -34,4 +34,11 @@ class Usecase:
definition=self.settings["work_calendar"],
relating_context=self.file.by_type("IfcContext")[0],
)
if self.settings["work_calendar"].Controls:
for rel in self.settings["work_calendar"].Controls:
for object in rel.RelatedObjects:
ifcopenshell.api.run(
"control.unassign_control",
self.file,
**{"relating_control": self.settings["work_calendar"], "related_object": object})
self.file.remove(self.settings["work_calendar"])