mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-19 06:39:13 +00:00
2 Fixes for 1 commit:
- Consider all tasks descendants when deriving task earliest or latest dates
This commit is contained in:
committed by
Dion Moult
parent
72fbfa382f
commit
65c6876a23
@@ -30,7 +30,7 @@ def derive_date(task, attribute_name, date=None, is_earliest=False, is_latest=Fa
|
|||||||
)
|
)
|
||||||
if current_date:
|
if current_date:
|
||||||
return current_date
|
return current_date
|
||||||
for subtask in get_nested_tasks(task):
|
for subtask in get_all_nested_tasks(task):
|
||||||
current_date = derive_date(subtask, attribute_name, date=date, is_earliest=is_earliest, is_latest=is_latest)
|
current_date = derive_date(subtask, attribute_name, date=date, is_earliest=is_earliest, is_latest=is_latest)
|
||||||
if is_earliest:
|
if is_earliest:
|
||||||
if current_date and (date is None or current_date < date):
|
if current_date and (date is None or current_date < date):
|
||||||
@@ -65,12 +65,7 @@ def canonicalise_time(time):
|
|||||||
|
|
||||||
|
|
||||||
def get_nested_tasks(task):
|
def get_nested_tasks(task):
|
||||||
tasks = []
|
return [related_object for rel in task.IsNestedBy for related_object in rel.RelatedObjects if related_object.is_a("IfcTask")]
|
||||||
for rel in task.IsNestedBy:
|
|
||||||
for object in rel.RelatedObjects:
|
|
||||||
if object.is_a("IfcTask"):
|
|
||||||
tasks.append(object)
|
|
||||||
return tasks
|
|
||||||
|
|
||||||
|
|
||||||
def get_parent_task(task):
|
def get_parent_task(task):
|
||||||
@@ -89,3 +84,22 @@ def get_task_work_schedule(task):
|
|||||||
]
|
]
|
||||||
print(f"Returning {schedules}")
|
print(f"Returning {schedules}")
|
||||||
return schedules
|
return schedules
|
||||||
|
|
||||||
|
def get_all_nested_tasks(task):
|
||||||
|
for nested_task in get_nested_tasks(task):
|
||||||
|
yield nested_task
|
||||||
|
yield from get_all_nested_tasks(nested_task)
|
||||||
|
|
||||||
|
def get_work_schedule_tasks(work_schedule):
|
||||||
|
tasks = []
|
||||||
|
for root_task in get_root_tasks(work_schedule):
|
||||||
|
nested_tasks = get_all_nested_tasks(root_task)
|
||||||
|
tasks.extend(nested_tasks)
|
||||||
|
|
||||||
|
return tasks
|
||||||
|
|
||||||
|
def get_root_tasks(work_schedule):
|
||||||
|
return [obj for rel in work_schedule.Controls for obj in rel.RelatedObjects if obj.is_a("IfcTask")]
|
||||||
|
|
||||||
|
def get_root_tasks_ids(work_schedule):
|
||||||
|
return [obj.id() for rel in work_schedule.Controls for obj in rel.RelatedObjects if obj.is_a("IfcTask")]
|
||||||
Reference in New Issue
Block a user