This commit is contained in:
Andrej730
2024-05-10 11:21:53 +05:00
parent e7eb00eaa3
commit c50d1ea2fe
105 changed files with 502 additions and 251 deletions
@@ -19,17 +19,18 @@
import ifcopenshell.api
import ifcopenshell
import ifcopenshell.guid
from typing import Optional
def add_task(
file,
work_schedule=None,
parent_task=None,
name=None,
description=None,
identification=None,
predefined_type="NOTDEFINED",
) -> None:
file: ifcopenshell.file,
work_schedule: Optional[ifcopenshell.entity_instance] = None,
parent_task: Optional[ifcopenshell.entity_instance] = None,
name: Optional[str] = None,
description: Optional[str] = None,
identification: Optional[str] = None,
predefined_type: str = "NOTDEFINED",
) -> ifcopenshell.entity_instance:
"""Adds a new task
Tasks are typically used for two purposes: construction scheduling and
@@ -66,11 +67,11 @@ def add_task(
:param work_schedule: The work schedule to group the task in, if the
task is to be a top-level or root task. This is mutually exclusive
with the parent_task parameter.
:type work_schedule: ifcopenshell.entity_instance
:type work_schedule: ifcopenshell.entity_instance, optional
:param parent_task: The parent task, if the task is to be a subtask or
child task. This is mutually exclusive with the work_schedule
parameter.
:type parent_task: ifcopenshell.entity_instance
:type parent_task: ifcopenshell.entity_instance, optioanl
:param name: The name of the task.
:type name: str,optional
:param description: The description of the task.
@@ -15,9 +15,12 @@
#
# You should have received a copy of the GNU Lesser General Public License
# along with IfcOpenShell. If not, see <http://www.gnu.org/licenses/>.
import ifcopenshell
def add_task_time(file, task=None, is_recurring=False) -> None:
def add_task_time(
file: ifcopenshell.file, task: ifcopenshell.entity_instance, is_recurring: bool = False
) -> ifcopenshell.entity_instance:
"""Adds a task time to a task
Some tasks, such as activities within a work breakdown structure or
@@ -19,11 +19,17 @@
import ifcopenshell.api
import ifcopenshell.util.date
import ifcopenshell.util.sequence
from datetime import datetime
from datetime import datetime, time
from datetime import timedelta
from typing import Optional, Union
def add_time_period(file, recurrence_pattern=None, start_time=None, end_time=None) -> None:
def add_time_period(
file: ifcopenshell.file,
recurrence_pattern: ifcopenshell.entity_instance,
start_time: Optional[Union[str, time]] = None,
end_time: Optional[Union[str, time]] = None,
) -> ifcopenshell.entity_instance:
"""Adds a time period to a recurrence pattern
A recurring time may be an all-day event, or only during certain time
@@ -19,7 +19,9 @@
import ifcopenshell.api
def add_work_calendar(file, name="Unnamed", predefined_type="NOTDEFINED") -> None:
def add_work_calendar(
file: ifcopenshell.file, name: str = "Unnamed", predefined_type: str = "NOTDEFINED"
) -> ifcopenshell.entity_instance:
"""Add a work calendar
A work calendar defines when work is allowed to occur and when the
@@ -17,11 +17,18 @@
# along with IfcOpenShell. If not, see <http://www.gnu.org/licenses/>.
import ifcopenshell.api
import ifcopenshell.api.owner.settings
import ifcopenshell.util.date
from datetime import datetime
from datetime import datetime, time
from typing import Optional, Union
def add_work_plan(file, name=None, predefined_type="NOTDEFINED", start_time=None) -> None:
def add_work_plan(
file: ifcopenshell.file,
name: Optional[str] = None,
predefined_type: str = "NOTDEFINED",
start_time: Optional[Union[str, time]] = None,
) -> ifcopenshell.entity_instance:
"""Add a new work plan
A work plan is a group of work schedules. Since work schedules may have
@@ -17,18 +17,21 @@
# along with IfcOpenShell. If not, see <http://www.gnu.org/licenses/>.
import ifcopenshell.api
import ifcopenshell.api.owner.settings
import ifcopenshell.util.date
from datetime import time
from datetime import datetime
from typing import Union, Optional
def add_work_schedule(
file,
name="Unnamed",
predefined_type="NOTDEFINED",
file: ifcopenshell.file,
name: str = "Unnamed",
predefined_type: str = "NOTDEFINED",
object_type=None,
start_time=None,
work_plan=None,
) -> None:
start_time: Optional[Union[str, time]] = None,
work_plan: Optional[ifcopenshell.entity_instance] = None,
) -> ifcopenshell.entity_instance:
"""Add a new work schedule
A work schedule is a group of tasks, where the tasks are typically
@@ -15,9 +15,12 @@
#
# You should have received a copy of the GNU Lesser General Public License
# along with IfcOpenShell. If not, see <http://www.gnu.org/licenses/>.
import ifcopenshell
def add_work_time(file, work_calendar=None, time_type="WorkingTimes") -> None:
def add_work_time(
file: ifcopenshell.file, work_calendar: ifcopenshell.entity_instance, time_type: str = "WorkingTimes"
) -> ifcopenshell.entity_instance:
"""Add either working times or holiday times to a calendar
A calendar defines when work occurs by defining working times and
@@ -19,7 +19,9 @@
import ifcopenshell.util.date
def assign_lag_time(file, rel_sequence=None, lag_value=None, duration_type="WORKTIME") -> None:
def assign_lag_time(
file: ifcopenshell.file, rel_sequence: ifcopenshell.entity_instance, lag_value: str, duration_type: str = "WORKTIME"
) -> ifcopenshell.entity_instance:
"""Assign a lag time to a sequence relationship between tasks
A task sequence (e.g. finish to start) may optionally have a lag time
@@ -94,3 +96,4 @@ def assign_lag_time(file, rel_sequence=None, lag_value=None, duration_type="WORK
if settings["rel_sequence"].TimeLag and len(file.get_inverse(settings["rel_sequence"].TimeLag)) == 1:
file.remove(settings["rel_sequence"].TimeLag)
settings["rel_sequence"].TimeLag = lag_time
return lag_time
@@ -21,7 +21,11 @@ import ifcopenshell.api
import ifcopenshell.guid
def assign_process(file, relating_process=None, related_object=None) -> None:
def assign_process(
file: ifcopenshell.file,
relating_process: ifcopenshell.entity_instance,
related_object: ifcopenshell.entity_instance,
) -> ifcopenshell.entity_instance:
"""Assigns an object to be related to a process, typically a construction task
Processes work using the ICOM (Input, Controls, Outputs, Mechanisms)
@@ -21,7 +21,11 @@ import ifcopenshell.api
import ifcopenshell.guid
def assign_product(file, relating_product=None, related_object=None) -> None:
def assign_product(
file: ifcopenshell.entity_instance,
relating_product: ifcopenshell.entity_instance,
related_object: ifcopenshell.entity_instance,
) -> ifcopenshell.entity_instance:
"""Assigns a product to be produced as a result of a process
A construction task may result in products (e.g. a wall) being
@@ -71,7 +75,7 @@ def assign_product(file, relating_product=None, related_object=None) -> None:
if settings["related_object"].HasAssignments:
for assignment in settings["related_object"].HasAssignments:
if assignment.is_a("IfcRelAssignsToProduct") and assignment.RelatingProduct == settings["relating_product"]:
return
return assignment
referenced_by = None
if settings["relating_product"].ReferencedBy:
@@ -15,9 +15,12 @@
#
# You should have received a copy of the GNU Lesser General Public License
# along with IfcOpenShell. If not, see <http://www.gnu.org/licenses/>.
import ifcopenshell
def assign_recurrence_pattern(file, parent=None, recurrence_type="WEEKLY") -> None:
def assign_recurrence_pattern(
file: ifcopenshell.file, parent: ifcopenshell.entity_instance, recurrence_type: str = "WEEKLY"
) -> ifcopenshell.entity_instance:
"""Define a time to recur at a particular interval
There are two scenarios where you might want to define a recurring time
@@ -22,11 +22,11 @@ import ifcopenshell.guid
def assign_sequence(
file,
relating_process=None,
related_process=None,
sequence_type="FINISH_START",
) -> None:
file: ifcopenshell.file,
relating_process: ifcopenshell.entity_instance,
related_process: ifcopenshell.entity_instance,
sequence_type: str = "FINISH_START",
) -> ifcopenshell.entity_instance:
"""Assign a sequential relationship between tasks
Tasks in construction sequencing typically have sequence relationships
@@ -20,7 +20,9 @@ import ifcopenshell
import ifcopenshell.api
def assign_workplan(file, work_schedule=None, work_plan=None) -> None:
def assign_workplan(
file: ifcopenshell.file, work_schedule: ifcopenshell.entity_instance, work_plan: ifcopenshell.entity_instance
) -> ifcopenshell.entity_instance:
"""Assigns a work schedule to a work plan
Typically, work schedules would be assigned to a work plan at creation.
@@ -22,7 +22,7 @@ import ifcopenshell.util.date
import ifcopenshell.util.element
def calculate_task_duration(file, task=None) -> None:
def calculate_task_duration(file: ifcopenshell.file, task: ifcopenshell.entity_instance) -> None:
"""Calculates the task duration based on resource usage
If a task has labour or equipment resources assigned to it, its duration
@@ -21,7 +21,7 @@ import ifcopenshell.util.date
import ifcopenshell.util.sequence
def cascade_schedule(file, task=None) -> None:
def cascade_schedule(file: ifcopenshell.file, task: ifcopenshell.entity_instance) -> None:
"""Cascades start and end dates of tasks based on durations
Given a start task with a start date and duration, the end date, and the
@@ -17,12 +17,17 @@
# along with IfcOpenShell. If not, see <http://www.gnu.org/licenses/>.
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.guid
import ifcopenshell.util.system
import ifcopenshell.util.element
import ifcopenshell.util.sequence
import ifcopenshell.util.system
from typing import Optional
def create_baseline(file, work_schedule=None, name=None) -> None:
def create_baseline(
file: ifcopenshell.file, work_schedule: ifcopenshell.entity_instance, name: Optional[str] = None
) -> None:
"""Creates a baseline for your Work Schedule
Using a IfcWorkSchdule having PredefinedType=PLANNED,
@@ -38,6 +43,8 @@ def create_baseline(file, work_schedule=None, name=None) -> None:
:param work_schedule: The planned work_schedule to baseline
:type work_schedule: ifcopenshell.entity_instance
:param name: baseline work schedule name
:type name: str, optional
:return: The baseline work_schedule
:rtype: ifcopenshell.entity_instance
@@ -23,7 +23,7 @@ import ifcopenshell.util.element
import ifcopenshell.util.sequence
def duplicate_task(file, task=None) -> None:
def duplicate_task(file: ifcopenshell.file, task: ifcopenshell.entity_instance) -> ifcopenshell.entity_instance:
"""Duplicates a task in the project
The following relationships are also duplicated:
@@ -18,9 +18,10 @@
import ifcopenshell.api
import ifcopenshell.util.date
from typing import Any
def edit_lag_time(file, lag_time=None, attributes=None) -> None:
def edit_lag_time(file: ifcopenshell.file, lag_time: ifcopenshell.entity_instance, attributes: dict[str, Any]) -> None:
"""Edits the attributes of an IfcLagTime
For more information about the attributes and data types of an
@@ -29,7 +30,7 @@ def edit_lag_time(file, lag_time=None, attributes=None) -> None:
:param lag_time: The IfcLagTime entity you want to edit
:type lag_time: ifcopenshell.entity_instance
:param attributes: a dictionary of attribute names and values.
:type attributes: dict, optional
:type attributes: dict
:return: None
:rtype: None
@@ -74,7 +75,7 @@ def edit_lag_time(file, lag_time=None, attributes=None) -> None:
# Or, let's make it 2 days instead.
ifcopenshell.api.run("sequence.edit_lag_time", model, lag_time=lag, attributes={"LagValue": "P2D"})
"""
settings = {"lag_time": lag_time, "attributes": attributes or {}}
settings = {"lag_time": lag_time, "attributes": attributes}
for name, value in settings["attributes"].items():
if name == "LagValue" and value is not None:
@@ -18,9 +18,12 @@
import ifcopenshell
import ifcopenshell.util.sequence
from typing import Any
def edit_recurrence_pattern(file, recurrence_pattern=None, attributes=None) -> None:
def edit_recurrence_pattern(
file: ifcopenshell.file, recurrence_pattern: ifcopenshell.entity_instance, attributes: dict[str, Any]
) -> None:
"""Edits the attributes of an IfcRecurrencePattern
For more information about the attributes and data types of an
@@ -29,7 +32,7 @@ def edit_recurrence_pattern(file, recurrence_pattern=None, attributes=None) -> N
:param recurrence_pattern: The IfcRecurrencePattern entity you want to edit
:type recurrence_pattern: ifcopenshell.entity_instance
:param attributes: a dictionary of attribute names and values.
:type attributes: dict, optional
:type attributes: dict
:return: None
:rtype: None
@@ -54,7 +57,7 @@ def edit_recurrence_pattern(file, recurrence_pattern=None, attributes=None) -> N
"""
settings = {
"recurrence_pattern": recurrence_pattern,
"attributes": attributes or {},
"attributes": attributes,
}
for name, value in settings["attributes"].items():
@@ -18,9 +18,12 @@
import ifcopenshell
import ifcopenshell.api
from typing import Any
def edit_sequence(file, rel_sequence=None, attributes=None) -> None:
def edit_sequence(
file: ifcopenshell.file, rel_sequence: ifcopenshell.entity_instance, attributes: dict[str, Any]
) -> None:
"""Edits the attributes of an IfcRelSequence
For more information about the attributes and data types of an
@@ -29,7 +32,7 @@ def edit_sequence(file, rel_sequence=None, attributes=None) -> None:
:param rel_sequence: The IfcRelSequence entity you want to edit
:type rel_sequence: ifcopenshell.entity_instance
:param attributes: a dictionary of attribute names and values.
:type attributes: dict, optional
:type attributes: dict
:return: None
:rtype: None
@@ -59,7 +62,7 @@ def edit_sequence(file, rel_sequence=None, attributes=None) -> None:
ifcopenshell.api.run("sequence.edit_sequence", model,
rel_sequence=sequence, attributes={"SequenceType": "START_START"})
"""
settings = {"rel_sequence": rel_sequence, "attributes": attributes or {}}
settings = {"rel_sequence": rel_sequence, "attributes": attributes}
for name, value in settings["attributes"].items():
setattr(settings["rel_sequence"], name, value)
@@ -15,9 +15,11 @@
#
# You should have received a copy of the GNU Lesser General Public License
# along with IfcOpenShell. If not, see <http://www.gnu.org/licenses/>.
import ifcopenshell
from typing import Any
def edit_task(file, task=None, attributes=None) -> None:
def edit_task(file: ifcopenshell.file, task: ifcopenshell.entity_instance, attributes: dict[str, Any]) -> None:
"""Edits the attributes of an IfcTask
For more information about the attributes and data types of an
@@ -26,7 +28,7 @@ def edit_task(file, task=None, attributes=None) -> None:
:param task: The IfcTask entity you want to edit
:type task: ifcopenshell.entity_instance
:param attributes: a dictionary of attribute names and values.
:type attributes: dict, optional
:type attributes: dict
:return: None
:rtype: None
@@ -20,13 +20,13 @@ import datetime
import ifcopenshell.util.constraint
import ifcopenshell.util.date
import ifcopenshell.util.sequence
from typing import Any, Optional
from typing import Any
def edit_task_time(
file: ifcopenshell.file,
task_time: ifcopenshell.entity_instance,
attributes: Optional[dict[str, Any]] = None,
attributes: dict[str, Any],
) -> None:
"""Edits the attributes of an IfcTaskTime
@@ -36,7 +36,7 @@ def edit_task_time(
:param task_time: The IfcTaskTime entity you want to edit
:type task_time: ifcopenshell.entity_instance
:param attributes: a dictionary of attribute names and values.
:type attributes: dict, optional
:type attributes: dict
:return: None
:rtype: None
@@ -59,7 +59,7 @@ def edit_task_time(
"""
usecase = Usecase()
usecase.file = file
usecase.settings = {"task_time": task_time, "attributes": attributes or {}}
usecase.settings = {"task_time": task_time, "attributes": attributes}
return usecase.execute()
@@ -15,9 +15,13 @@
#
# You should have received a copy of the GNU Lesser General Public License
# along with IfcOpenShell. If not, see <http://www.gnu.org/licenses/>.
import ifcopenshell
from typing import Any
def edit_work_calendar(file, work_calendar=None, attributes=None) -> None:
def edit_work_calendar(
file: ifcopenshell.file, work_calendar: ifcopenshell.entity_instance, attributes: dict[str, Any]
) -> None:
"""Edits the attributes of an IfcWorkCalendar
For more information about the attributes and data types of an
@@ -26,7 +30,7 @@ def edit_work_calendar(file, work_calendar=None, attributes=None) -> None:
:param work_calendar: The IfcWorkCalendar entity you want to edit
:type work_calendar: ifcopenshell.entity_instance
:param attributes: a dictionary of attribute names and values.
:type attributes: dict, optional
:type attributes: dict
:return: None
:rtype: None
@@ -41,7 +45,7 @@ def edit_work_calendar(file, work_calendar=None, attributes=None) -> None:
ifcopenshell.api.run("sequence.edit_work_calendar", model,
work_calendar=calendar, attributes={"Description": "Monday to Friday 8 hour days"})
"""
settings = {"work_calendar": work_calendar, "attributes": attributes or {}}
settings = {"work_calendar": work_calendar, "attributes": attributes}
for name, value in settings["attributes"].items():
setattr(settings["work_calendar"], name, value)
@@ -17,9 +17,12 @@
# along with IfcOpenShell. If not, see <http://www.gnu.org/licenses/>.
import ifcopenshell.util.date
from typing import Any
def edit_work_plan(file, work_plan=None, attributes=None) -> None:
def edit_work_plan(
file: ifcopenshell.file, work_plan: ifcopenshell.entity_instance, attributes: dict[str, Any]
) -> None:
"""Edits the attributes of an IfcWorkPlan
For more information about the attributes and data types of an
@@ -28,7 +31,7 @@ def edit_work_plan(file, work_plan=None, attributes=None) -> None:
:param work_plan: The IfcWorkPlan entity you want to edit
:type work_plan: ifcopenshell.entity_instance
:param attributes: a dictionary of attribute names and values.
:type attributes: dict, optional
:type attributes: dict
:return: None
:rtype: None
@@ -43,7 +46,7 @@ def edit_work_plan(file, work_plan=None, attributes=None) -> None:
ifcopenshell.api.run("sequence.edit_work_plan", model,
work_plan=work_plan, attributes={"Description": "Construction of phase 1"})
"""
settings = {"work_plan": work_plan, "attributes": attributes or {}}
settings = {"work_plan": work_plan, "attributes": attributes}
for name, value in settings["attributes"].items():
if value:
@@ -17,9 +17,12 @@
# along with IfcOpenShell. If not, see <http://www.gnu.org/licenses/>.
import ifcopenshell.util.date
from typing import Any
def edit_work_schedule(file, work_schedule=None, attributes=None) -> None:
def edit_work_schedule(
file: ifcopenshell.entity_instance, work_schedule: ifcopenshell.entity_instance, attributes: dict[str, Any]
) -> None:
"""Edits the attributes of an IfcWorkSchedule
For more information about the attributes and data types of an
@@ -28,7 +31,7 @@ def edit_work_schedule(file, work_schedule=None, attributes=None) -> None:
:param work_schedule: The IfcWorkSchedule entity you want to edit
:type work_schedule: ifcopenshell.entity_instance
:param attributes: a dictionary of attribute names and values.
:type attributes: dict, optional
:type attributes: dict
:return: None
:rtype: None
@@ -47,7 +50,7 @@ def edit_work_schedule(file, work_schedule=None, attributes=None) -> None:
ifcopenshell.api.run("sequence.edit_work_schedule", model,
work_schedule=work_schedule, attributes={"Description": "3 crane design option"})
"""
settings = {"work_schedule": work_schedule, "attributes": attributes or {}}
settings = {"work_schedule": work_schedule, "attributes": attributes}
for name, value in settings["attributes"].items():
if value:
@@ -17,13 +17,13 @@
# along with IfcOpenShell. If not, see <http://www.gnu.org/licenses/>.
import ifcopenshell.util.date
from typing import Any, Optional
from typing import Any
def edit_work_time(
file: ifcopenshell.file,
work_time: ifcopenshell.entity_instance,
attributes: Optional[dict[str, Any]] = None,
attributes: dict[str, Any],
) -> None:
"""Edits the attributes of an IfcWorkTime
@@ -33,7 +33,7 @@ def edit_work_time(
:param work_time: The IfcWorkTime entity you want to edit
:type work_time: ifcopenshell.entity_instance
:param attributes: a dictionary of attribute names and values.
:type attributes: dict, optional
:type attributes: dict
:return: None
:rtype: None
@@ -54,7 +54,7 @@ def edit_work_time(
ifcopenshell.api.run("sequence.edit_work_time", model,
work_time=work_time, attributes={"StartDate": "2000-01-01", "FinishDate": "2000-01-02"})
"""
settings = {"work_time": work_time, "attributes": attributes or {}}
settings = {"work_time": work_time, "attributes": attributes}
for name, value in settings["attributes"].items():
if name in ("Start", "StartDate"):
@@ -23,7 +23,7 @@ import ifcopenshell.util.date
import ifcopenshell.util.sequence
def recalculate_schedule(file, work_schedule=None) -> None:
def recalculate_schedule(file: ifcopenshell.file, work_schedule: ifcopenshell.entity_instance) -> None:
"""Calculate the critical path and floats for a work schedule
This implements critical path analysis, using the forward pass and
@@ -21,7 +21,7 @@ import ifcopenshell.api
import ifcopenshell.util.element
def remove_task(file, task=None) -> None:
def remove_task(file: ifcopenshell.file, task: ifcopenshell.entity_instance) -> None:
"""Removes a task
All subtasks are also removed recursively. Any relationships such as
@@ -19,7 +19,7 @@
import ifcopenshell.api
def remove_time_period(file, time_period=None) -> None:
def remove_time_period(file: ifcopenshell.file, time_period: ifcopenshell.entity_instance) -> None:
"""Removes a time period
:param time_period: The IfcTimePeriod to remove.
@@ -17,10 +17,11 @@
# along with IfcOpenShell. If not, see <http://www.gnu.org/licenses/>.
import ifcopenshell
import ifcopenshell.api
import ifcopenshell.util.element
def remove_work_calendar(file, work_calendar=None) -> None:
def remove_work_calendar(file: ifcopenshell.file, work_calendar: ifcopenshell.entity_instance) -> None:
"""Removes a work calendar
All relationships are also removed, such as if a task is set to use that
@@ -20,7 +20,7 @@ import ifcopenshell
import ifcopenshell.util.element
def remove_work_plan(file, work_plan=None) -> None:
def remove_work_plan(file: ifcopenshell.entity_instance, work_plan: ifcopenshell.entity_instance) -> None:
"""Removes a work plan
Note that schedules that are grouped under the work plan are not
@@ -21,7 +21,7 @@ import ifcopenshell.api
import ifcopenshell.util.element
def remove_work_schedule(file, work_schedule=None) -> None:
def remove_work_schedule(file: ifcopenshell.file, work_schedule: ifcopenshell.entity_instance) -> None:
"""Removes a work schedule
All tasks in the work schedule are also removed recursively.
@@ -15,9 +15,10 @@
#
# You should have received a copy of the GNU Lesser General Public License
# along with IfcOpenShell. If not, see <http://www.gnu.org/licenses/>.
import ifcopenshell
def remove_work_time(file, work_time=None) -> None:
def remove_work_time(file: ifcopenshell.file, work_time: ifcopenshell.entity_instance) -> None:
"""Removes a work time
:param work_time: The IfcWorkTime to remove.
@@ -19,7 +19,7 @@
import ifcopenshell.api
def unassign_lag_time(file, rel_sequence=None) -> None:
def unassign_lag_time(file: ifcopenshell.file, rel_sequence: ifcopenshell.entity_instance) -> None:
"""Removes any lag time in a sequence
The schedule is cascaded afterwards.
@@ -21,7 +21,11 @@ import ifcopenshell.api
import ifcopenshell.util.element
def unassign_process(file, relating_process=None, related_object=None) -> None:
def unassign_process(
file: ifcopenshell.file,
relating_process: ifcopenshell.entity_instance,
related_object: ifcopenshell.entity_instance,
) -> None:
"""Unassigns a process and object relationship
See ifcopenshell.api.sequence.assign_process for details.
@@ -21,7 +21,11 @@ import ifcopenshell.api
import ifcopenshell.util.element
def unassign_product(file, relating_product=None, related_object=None) -> None:
def unassign_product(
file: ifcopenshell.file,
relating_product: ifcopenshell.entity_instance,
related_object: ifcopenshell.entity_instance,
) -> None:
"""Unassigns a product and object relationship
See ifcopenshell.api.sequence.assign_product for details.
@@ -15,9 +15,10 @@
#
# You should have received a copy of the GNU Lesser General Public License
# along with IfcOpenShell. If not, see <http://www.gnu.org/licenses/>.
import ifcopenshell
def unassign_recurrence_pattern(file, recurrence_pattern=None) -> None:
def unassign_recurrence_pattern(file: ifcopenshell.file, recurrence_pattern: ifcopenshell.entity_instance) -> None:
"""Unassigns a recurrence pattern
Note that a recurring task time must have a recurrence pattern, so if
@@ -21,7 +21,11 @@ import ifcopenshell.api
import ifcopenshell.util.element
def unassign_sequence(file, relating_process=None, related_process=None) -> None:
def unassign_sequence(
file: ifcopenshell.file,
relating_process: ifcopenshell.entity_instance,
related_process: ifcopenshell.entity_instance,
) -> None:
"""Removes a sequence relationship between tasks
:param relating_process: The previous / predecessor task.