mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-18 19:30:25 +00:00
BBIM4D: Enable filtering by active work schedule when retrieve tasks related to objects
This commit is contained in:
@@ -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")
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user