mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-10 01:41:57 +00:00
76 lines
2.7 KiB
Python
76 lines
2.7 KiB
Python
import ifcopenshell.util.date
|
|
|
|
|
|
class Data:
|
|
is_loaded = False
|
|
work_plans = {}
|
|
work_schedules = {}
|
|
tasks = {}
|
|
|
|
@classmethod
|
|
def purge(cls):
|
|
cls.is_loaded = False
|
|
cls.work_plans = {}
|
|
cls.work_schedules = {}
|
|
cls.work_calendars = {}
|
|
cls.tasks = {}
|
|
|
|
@classmethod
|
|
def load(cls, file):
|
|
cls._file = file
|
|
if not cls._file:
|
|
return
|
|
cls.load_work_plans()
|
|
cls.load_work_schedules()
|
|
cls.load_work_calendars()
|
|
cls.load_tasks()
|
|
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"])
|
|
cls.work_plans[work_plan.id()] = data
|
|
|
|
@classmethod
|
|
def load_work_schedules(cls):
|
|
cls.work_schedules = {}
|
|
for work_schedule in cls._file.by_type("IfcWorkSchedule"):
|
|
data = work_schedule.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["RelatedObjects"] = []
|
|
for rel in work_schedule.Controls:
|
|
for obj in rel.RelatedObjects:
|
|
if obj.is_a("IfcTask"):
|
|
data["RelatedObjects"].append(obj.id())
|
|
cls.work_schedules[work_schedule.id()] = data
|
|
|
|
@classmethod
|
|
def load_work_calendars(cls):
|
|
for work_calendar in cls._file.by_type("IfcWorkCalendar"):
|
|
data = work_calendar.get_info()
|
|
del data["OwnerHistory"]
|
|
del data["WorkingTimes"]
|
|
del data["ExceptionTimes"]
|
|
cls.work_calendars[work_calendar.id()] = data
|
|
|
|
@classmethod
|
|
def load_tasks(cls):
|
|
cls.tasks = {}
|
|
for task in cls._file.by_type("IfcTask"):
|
|
cls.tasks[task.id()] = {"Name": task.Name, "Identification": task.Identification or ""}
|