BBIM4D: Enable filtering by active work schedule when retrieve tasks related to objects

This commit is contained in:
Sigma Dimensions
2023-05-05 18:26:32 +01:00
parent be08406cc1
commit 0a7ef80ca7
6 changed files with 103 additions and 29 deletions
@@ -420,6 +420,7 @@ class BIMWorkScheduleProperties(PropertyGroup):
enable_reorder: BoolProperty(name="Enable Reorder", default=False)
show_task_operators: BoolProperty(name="Show Task Options", default=True)
should_show_schedule_baseline_ui: BoolProperty(name="Baselines", default=False)
filter_by_active_schedule: BoolProperty(name="Filter By Active Schedule", default=False)
class BIMTaskTreeProperties(PropertyGroup):
@@ -977,7 +977,7 @@ class BIM_PT_4D_Tools(Panel):
self.props = context.scene.BIMWorkScheduleProperties
row = self.layout.row()
row.operator("bim.load_product_related_tasks", text="Load Tasks", icon="FILE_REFRESH")
row.prop(self.props, "filter_by_active_schedule", text="Filter by Active Schedule")
grid = self.layout.grid_flow(columns=2, even_columns=True)
col1 = grid.column()
col1.label(text="Product Input Tasks")
+7 -1
View File
@@ -553,7 +553,13 @@ def generate_gantt_chart(sequence, work_schedule):
def load_product_related_tasks(sequence, product=None):
sequence.load_product_related_tasks(product)
filter_by_schedule = sequence.is_filter_by_active_schedule()
if filter_by_schedule:
work_schedule = sequence.get_active_work_schedule()
task_inputs, task_ouputs = sequence.get_tasks_for_product(product, work_schedule)
else:
task_inputs, task_ouputs = sequence.get_tasks_for_product(product)
sequence.load_product_related_tasks(task_inputs, task_ouputs)
def reorder_task_nesting(ifc, sequence, task, new_index):
+4 -2
View File
@@ -641,7 +641,6 @@ class Sequence:
def contract_task(cls, task): pass
def create_bars(cls, tasks): pass
def create_new_task_json(cls, task, json, type_map=None): pass
def load_task_tree(cls, work_schedule): pass
def create_tasks_json(cls, work_schedule=None): pass
def disable_editing_rel_sequence(cls): pass
def disable_editing_task_animation_colors(cls): pass
@@ -656,10 +655,10 @@ class Sequence:
def enable_editing_rel_sequence_attributes(cls, rel_sequence): pass
def enable_editing_sequence_lag_time(cls, rel_sequence): pass
def enable_editing_task_animation_colors(cls): pass
def enable_editing_task_attributes(cls, task): pass
def enable_editing_task_calendar(cls, task): pass
def enable_editing_task_sequence(cls, task): pass
def enable_editing_task_time(cls, task): pass
def enable_editing_task_attributes(cls, task): pass
def enable_editing_work_calendar_times(cls, work_calendar): pass
def enable_editing_work_calendar(cls, work_calendar): pass
def enable_editing_work_plan_schedules(cls, work_plan): pass
@@ -695,6 +694,7 @@ class Sequence:
def get_task_resources(cls, task):pass
def get_task_time_attributes(cls): pass
def get_task_time(cls, task): pass
def get_tasks_for_product(cls, product, work_schedule): pass
def get_work_calendar_attributes(cls): pass
def get_work_plan_attributes(cls): pass
def get_work_schedule_attributes(cls): pass
@@ -704,6 +704,7 @@ class Sequence:
def guess_date_range(cls, work_schedule): pass
def has_task_assignments(cls, product, cost_schedule=None): pass
def highlight_task(cls, task): pass
def is_filter_by_active_schedule(cls): pass
def is_work_schedule_active(cls, work_schedule): pass
def load_lag_time_attributes(cls, lag_time): pass
def load_product_related_tasks(cls, product): pass
@@ -716,6 +717,7 @@ class Sequence:
def load_task_properties(cls, task): pass
def load_task_resources(cls,resources): pass
def load_task_time_attributes(cls, task_time): pass
def load_task_tree(cls, work_schedule): pass
def load_work_calendar_attributes(cls, work_calendar): pass
def load_work_plan_attributes(cls, work_plan): pass
def load_work_schedule_attributes(cls, work_schedule): pass
+9 -2
View File
@@ -1555,11 +1555,18 @@ class Sequence(blenderbim.core.tool.Sequence):
webbrowser.open("file://" + os.path.join(bpy.context.scene.BIMProperties.data_dir, "gantt", "index.html"))
@classmethod
def load_product_related_tasks(cls, product):
def is_filter_by_active_schedule(cls):
return bpy.context.scene.BIMWorkScheduleProperties.filter_by_active_schedule
@classmethod
def get_tasks_for_product(cls, product, work_schedule=None):
return ifcopenshell.util.sequence.get_tasks_for_product(product, work_schedule)
@classmethod
def load_product_related_tasks(cls, task_inputs, task_ouputs):
props = bpy.context.scene.BIMWorkScheduleProperties
props.product_input_tasks.clear()
props.product_output_tasks.clear()
task_inputs, task_ouputs = ifcopenshell.util.sequence.get_tasks_for_product(product)
for task in task_inputs or []:
new = props.product_input_tasks.add()
new.name = task.Name or "Unnamed"