mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-23 12:12:50 +00:00
Calendars are now assigned when importing Microsoft Project XML to IFC
This commit is contained in:
@@ -45,6 +45,7 @@ class MSP2Ifc:
|
|||||||
project = tree.getroot()
|
project = tree.getroot()
|
||||||
self.ns = {"pr": project.tag[1:].partition("}")[0]}
|
self.ns = {"pr": project.tag[1:].partition("}")[0]}
|
||||||
self.project["Name"] = project.findtext("pr:Name", namespaces=self.ns) or "Unnamed"
|
self.project["Name"] = project.findtext("pr:Name", namespaces=self.ns) or "Unnamed"
|
||||||
|
self.project["CalendarUID"] = project.findtext("pr:CalendarUID", namespaces=self.ns) or None
|
||||||
self.outline_level = 0
|
self.outline_level = 0
|
||||||
self.outline_parents = {}
|
self.outline_parents = {}
|
||||||
self.parse_task_xml(project)
|
self.parse_task_xml(project)
|
||||||
@@ -127,8 +128,8 @@ class MSP2Ifc:
|
|||||||
if not self.work_plan:
|
if not self.work_plan:
|
||||||
self.work_plan = ifcopenshell.api.run("sequence.add_work_plan", self.file)
|
self.work_plan = ifcopenshell.api.run("sequence.add_work_plan", self.file)
|
||||||
work_schedule = self.create_work_schedule()
|
work_schedule = self.create_work_schedule()
|
||||||
self.create_tasks(work_schedule)
|
|
||||||
self.create_calendars()
|
self.create_calendars()
|
||||||
|
self.create_tasks(work_schedule)
|
||||||
self.create_rel_sequences()
|
self.create_rel_sequences()
|
||||||
|
|
||||||
def create_boilerplate_ifc(self):
|
def create_boilerplate_ifc(self):
|
||||||
@@ -158,6 +159,23 @@ class MSP2Ifc:
|
|||||||
work_schedule=work_schedule if work_schedule else None,
|
work_schedule=work_schedule if work_schedule else None,
|
||||||
parent_task=parent_task["ifc"] if parent_task else None,
|
parent_task=parent_task["ifc"] if parent_task else None,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
calendar = None
|
||||||
|
if task["CalendarUID"] != "-1":
|
||||||
|
calendar = self.calendars[task["CalendarUID"]]["ifc"]
|
||||||
|
elif not parent_task and self.project["CalendarUID"]:
|
||||||
|
calendar = self.calendars[self.project["CalendarUID"]]["ifc"]
|
||||||
|
|
||||||
|
if calendar:
|
||||||
|
ifcopenshell.api.run(
|
||||||
|
"control.assign_control",
|
||||||
|
self.file,
|
||||||
|
**{
|
||||||
|
"relating_control": calendar,
|
||||||
|
"related_object": task["ifc"],
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
ifcopenshell.api.run(
|
ifcopenshell.api.run(
|
||||||
"sequence.edit_task",
|
"sequence.edit_task",
|
||||||
self.file,
|
self.file,
|
||||||
|
|||||||
Reference in New Issue
Block a user