diff --git a/src/ifcopenshell-python/ifcopenshell/api/sequence/add_task.py b/src/ifcopenshell-python/ifcopenshell/api/sequence/add_task.py new file mode 100644 index 0000000000..c4b7a8061c --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/sequence/add_task.py @@ -0,0 +1,20 @@ +import ifcopenshell.api + + +class Usecase: + def __init__(self, file, **settings): + self.file = file + self.settings = {"name": None, "predefined_type": "NOTDEFINED", "is_milestone":False, "identification": "none", "predecessor_to":None, "successor_from":None} + for key, value in settings.items(): + self.settings[key] = value + + def execute(self): + task = ifcopenshell.api.run( + "root.create_entity", + self.file, + ifc_class="IfcTask", + predefined_type=self.settings["predefined_type"], + name=self.settings["name"], + ) + task.IsMilestone = self.settings["is_milestone"] + return task \ No newline at end of file diff --git a/src/ifcopenshell-python/ifcopenshell/api/sequence/assign_task_predecessor.py b/src/ifcopenshell-python/ifcopenshell/api/sequence/assign_task_predecessor.py new file mode 100644 index 0000000000..36c0140728 --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/sequence/assign_task_predecessor.py @@ -0,0 +1,25 @@ +import ifcopenshell +import ifcopenshell.api + + +class Usecase: + def __init__(self, file, **settings): + self.file = file + self.settings = { + "predecessor_task": None, + "sequence_type":"FINISH_START", + "task": None, + } + for key, value in settings.items(): + self.settings[key] = value + + def execute(self): + #TODO: tasks can only have one relationship between oneanother: if a relationship is already assigned, it should overide the previous one's settings. + rel_sequence = self.file.create_entity("IfcRelSequence",**{ + "GlobalId": ifcopenshell.guid.new(), + "OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", self.file), + "RelatingProcess": self.settings["predecessor_task"], + "SequenceType": self.settings["sequence_type"], + "RelatedProcess": self.settings["task"], + }) + return rel_sequence \ No newline at end of file diff --git a/src/ifcopenshell-python/ifcopenshell/api/sequence/assign_task_successor.py b/src/ifcopenshell-python/ifcopenshell/api/sequence/assign_task_successor.py new file mode 100644 index 0000000000..21f818949f --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/sequence/assign_task_successor.py @@ -0,0 +1,25 @@ +import ifcopenshell +import ifcopenshell.api + + +class Usecase: + def __init__(self, file, **settings): + self.file = file + self.settings = { + "task": None, + "sequence_type":"FINISH_START", + "successor_task": None, + } + for key, value in settings.items(): + self.settings[key] = value + + def execute(self): + #TODO: tasks can only have one relationship between oneanother: if a relationship is already assigned, it should overide the previous one's settings. + rel_sequence = self.file.create_entity("IfcRelSequence",**{ + "GlobalId": ifcopenshell.guid.new(), + "OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", self.file), + "RelatingProcess": self.settings["task"], + "SequenceType": self.settings["sequence_type"], + "RelatedProcess": self.settings["successor_task"], + }) + return rel_sequence \ No newline at end of file