mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-09 13:52:23 +00:00
218 lines
13 KiB
Gherkin
218 lines
13 KiB
Gherkin
|
|
@sequence
|
||
|
|
Feature: Sequence
|
||
|
|
Covers Visualising Work Schedule Date Range.
|
||
|
|
|
||
|
|
Scenario: See the current frame date as text
|
||
|
|
Given an empty IFC project
|
||
|
|
And I press "bim.add_work_schedule"
|
||
|
|
And the variable "work_schedule" is "IfcStore.get_file().by_type('IfcWorkSchedule')[0].id()"
|
||
|
|
And I press "bim.enable_editing_tasks(work_schedule={work_schedule})"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.visualisation_start" to "01/01/21"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.visualisation_finish" to "01/02/21"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.speed_types" to "FRAME_SPEED"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.speed_animation_frames" to "7"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.speed_real_duration" to "P1W"
|
||
|
|
And I press "bim.visualise_work_schedule_date_range(work_schedule={work_schedule})"
|
||
|
|
When I am on frame "1"
|
||
|
|
Then the object "Timeline" has a body of "2021-01-01"
|
||
|
|
When I am on frame "2"
|
||
|
|
Then the object "Timeline" has a body of "2021-01-02"
|
||
|
|
|
||
|
|
Scenario: Animate the construction of a wall
|
||
|
|
Given an empty IFC project
|
||
|
|
And I press "bim.add_work_schedule"
|
||
|
|
And the variable "work_schedule" is "IfcStore.get_file().by_type('IfcWorkSchedule')[0].id()"
|
||
|
|
And I press "bim.enable_editing_tasks(work_schedule={work_schedule})"
|
||
|
|
And I press "bim.add_summary_task(work_schedule={work_schedule})"
|
||
|
|
And the variable "task" is "IfcStore.get_file().by_type('IfcTask')[0].id()"
|
||
|
|
And I press "bim.enable_editing_task(task={task})"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.task_attributes.get('PredefinedType').enum_value" to "CONSTRUCTION"
|
||
|
|
And I press "bim.edit_task"
|
||
|
|
And I press "bim.enable_editing_task_time(task={task})"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.task_time_attributes.get('ScheduleStart').string_value" to "2021-01-02"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.task_time_attributes.get('ScheduleFinish').string_value" to "2021-01-06"
|
||
|
|
And I press "bim.edit_task_time"
|
||
|
|
And I add a cube
|
||
|
|
And the object "Cube" is selected
|
||
|
|
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||
|
|
And I press "bim.assign_class"
|
||
|
|
And the object "IfcWall/Cube" is selected
|
||
|
|
And I press "bim.assign_product(task={task}, relating_product='')"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.visualisation_start" to "01/01/21"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.visualisation_finish" to "01/02/21"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.speed_types" to "FRAME_SPEED"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.speed_animation_frames" to "7"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.speed_real_duration" to "P1W"
|
||
|
|
And I press "bim.visualise_work_schedule_date_range(work_schedule={work_schedule})"
|
||
|
|
When I am on frame "1"
|
||
|
|
Then "scene.objects.get('IfcWall/Cube').hide_viewport" is "True"
|
||
|
|
And "scene.objects.get('IfcWall/Cube').hide_render" is "True"
|
||
|
|
When I am on frame "2"
|
||
|
|
Then "scene.objects.get('IfcWall/Cube').hide_viewport" is "False"
|
||
|
|
And "scene.objects.get('IfcWall/Cube').hide_render" is "False"
|
||
|
|
And "scene.objects.get('IfcWall/Cube').color" is "[0.0, 1.0, 0.0, 1]"
|
||
|
|
When I am on frame "6"
|
||
|
|
Then "scene.objects.get('IfcWall/Cube').color" is "[1.0, 1.0, 1.0, 1]"
|
||
|
|
|
||
|
|
Scenario: Animate the demolition of a wall
|
||
|
|
Given an empty IFC project
|
||
|
|
And I press "bim.add_work_schedule"
|
||
|
|
And the variable "work_schedule" is "IfcStore.get_file().by_type('IfcWorkSchedule')[0].id()"
|
||
|
|
And I press "bim.enable_editing_tasks(work_schedule={work_schedule})"
|
||
|
|
And I press "bim.add_summary_task(work_schedule={work_schedule})"
|
||
|
|
And the variable "task" is "IfcStore.get_file().by_type('IfcTask')[0].id()"
|
||
|
|
And I press "bim.enable_editing_task(task={task})"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.task_attributes.get('PredefinedType').enum_value" to "DEMOLITION"
|
||
|
|
And I press "bim.edit_task"
|
||
|
|
And I press "bim.enable_editing_task_time(task={task})"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.task_time_attributes.get('ScheduleStart').string_value" to "2021-01-02"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.task_time_attributes.get('ScheduleFinish').string_value" to "2021-01-06"
|
||
|
|
And I press "bim.edit_task_time"
|
||
|
|
And I add a cube
|
||
|
|
And the object "Cube" is selected
|
||
|
|
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||
|
|
And I press "bim.assign_class"
|
||
|
|
And the object "IfcWall/Cube" is selected
|
||
|
|
And I press "bim.assign_product(task={task}, relating_product='')"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.visualisation_start" to "01/01/21"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.visualisation_finish" to "01/02/21"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.speed_types" to "FRAME_SPEED"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.speed_animation_frames" to "7"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.speed_real_duration" to "P1W"
|
||
|
|
And I press "bim.visualise_work_schedule_date_range(work_schedule={work_schedule})"
|
||
|
|
When I am on frame "1"
|
||
|
|
Then "scene.objects.get('IfcWall/Cube').hide_viewport" is "False"
|
||
|
|
And "scene.objects.get('IfcWall/Cube').hide_render" is "False"
|
||
|
|
And "scene.objects.get('IfcWall/Cube').color" is "[1.0, 1.0, 1.0, 1]"
|
||
|
|
When I am on frame "2"
|
||
|
|
Then "scene.objects.get('IfcWall/Cube').hide_viewport" is "False"
|
||
|
|
And "scene.objects.get('IfcWall/Cube').hide_render" is "False"
|
||
|
|
And "scene.objects.get('IfcWall/Cube').color" is "[1.0, 0.0, 0.0, 1]"
|
||
|
|
When I am on frame "6"
|
||
|
|
Then "scene.objects.get('IfcWall/Cube').hide_viewport" is "True"
|
||
|
|
And "scene.objects.get('IfcWall/Cube').hide_render" is "True"
|
||
|
|
And "scene.objects.get('IfcWall/Cube').color" is "[0.0, 0.0, 0.0, 1]"
|
||
|
|
|
||
|
|
Scenario: Animate the operation of a wall
|
||
|
|
Given an empty IFC project
|
||
|
|
And I press "bim.add_work_schedule"
|
||
|
|
And the variable "work_schedule" is "IfcStore.get_file().by_type('IfcWorkSchedule')[0].id()"
|
||
|
|
And I press "bim.enable_editing_tasks(work_schedule={work_schedule})"
|
||
|
|
And I press "bim.add_summary_task(work_schedule={work_schedule})"
|
||
|
|
And the variable "task" is "IfcStore.get_file().by_type('IfcTask')[0].id()"
|
||
|
|
And I press "bim.enable_editing_task(task={task})"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.task_attributes.get('PredefinedType').enum_value" to "OPERATION"
|
||
|
|
And I press "bim.edit_task"
|
||
|
|
And I press "bim.enable_editing_task_time(task={task})"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.task_time_attributes.get('ScheduleStart').string_value" to "2021-01-02"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.task_time_attributes.get('ScheduleFinish').string_value" to "2021-01-06"
|
||
|
|
And I press "bim.edit_task_time"
|
||
|
|
And I add a cube
|
||
|
|
And the object "Cube" is selected
|
||
|
|
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||
|
|
And I press "bim.assign_class"
|
||
|
|
And the object "IfcWall/Cube" is selected
|
||
|
|
And I press "bim.assign_product(task={task}, relating_product='')"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.visualisation_start" to "01/01/21"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.visualisation_finish" to "01/02/21"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.speed_types" to "FRAME_SPEED"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.speed_animation_frames" to "7"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.speed_real_duration" to "P1W"
|
||
|
|
And I press "bim.visualise_work_schedule_date_range(work_schedule={work_schedule})"
|
||
|
|
When I am on frame "1"
|
||
|
|
Then "scene.objects.get('IfcWall/Cube').color" is "[1.0, 1.0, 1.0, 1]"
|
||
|
|
When I am on frame "2"
|
||
|
|
Then "scene.objects.get('IfcWall/Cube').color" is "[0.0, 0.0, 1.0, 1]"
|
||
|
|
When I am on frame "6"
|
||
|
|
Then "scene.objects.get('IfcWall/Cube').color" is "[1.0, 1.0, 1.0, 1]"
|
||
|
|
|
||
|
|
Scenario: Animate the movement of a wall
|
||
|
|
Given an empty IFC project
|
||
|
|
And I press "bim.add_work_schedule"
|
||
|
|
And the variable "work_schedule" is "IfcStore.get_file().by_type('IfcWorkSchedule')[0].id()"
|
||
|
|
And I press "bim.enable_editing_tasks(work_schedule={work_schedule})"
|
||
|
|
And I press "bim.add_summary_task(work_schedule={work_schedule})"
|
||
|
|
And the variable "task" is "IfcStore.get_file().by_type('IfcTask')[0].id()"
|
||
|
|
And I press "bim.enable_editing_task(task={task})"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.task_attributes.get('PredefinedType').enum_value" to "MOVE"
|
||
|
|
And I press "bim.edit_task"
|
||
|
|
And I press "bim.enable_editing_task_time(task={task})"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.task_time_attributes.get('ScheduleStart').string_value" to "2021-01-02"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.task_time_attributes.get('ScheduleFinish').string_value" to "2021-01-06"
|
||
|
|
And I press "bim.edit_task_time"
|
||
|
|
And I add a cube
|
||
|
|
And I rename the object "Cube" to "ToObject"
|
||
|
|
And the object "ToObject" is selected
|
||
|
|
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||
|
|
And I press "bim.assign_class"
|
||
|
|
And the object "IfcWall/ToObject" is selected
|
||
|
|
And I press "bim.assign_product(task={task}, relating_product='')"
|
||
|
|
When I add a cube
|
||
|
|
And I rename the object "Cube" to "FromObject"
|
||
|
|
And the object "FromObject" is selected
|
||
|
|
And I press "bim.assign_class"
|
||
|
|
And the object "IfcWall/FromObject" is selected
|
||
|
|
And I press "bim.assign_process(task={task}, related_object_type='PRODUCT', related_object='')"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.visualisation_start" to "01/01/21"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.visualisation_finish" to "01/02/21"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.speed_types" to "FRAME_SPEED"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.speed_animation_frames" to "7"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.speed_real_duration" to "P1W"
|
||
|
|
And I press "bim.visualise_work_schedule_date_range(work_schedule={work_schedule})"
|
||
|
|
When I am on frame "1"
|
||
|
|
Then "scene.objects.get('IfcWall/FromObject').color" is "[1.0, 1.0, 1.0, 1]"
|
||
|
|
And "scene.objects.get('IfcWall/FromObject').hide_viewport" is "False"
|
||
|
|
And "scene.objects.get('IfcWall/FromObject').hide_render" is "False"
|
||
|
|
And "scene.objects.get('IfcWall/ToObject').hide_viewport" is "True"
|
||
|
|
And "scene.objects.get('IfcWall/ToObject').hide_render" is "True"
|
||
|
|
When I am on frame "2"
|
||
|
|
Then "scene.objects.get('IfcWall/FromObject').color" is "[1.0, 0.5, 0.0, 1]"
|
||
|
|
And "scene.objects.get('IfcWall/FromObject').hide_viewport" is "False"
|
||
|
|
And "scene.objects.get('IfcWall/FromObject').hide_render" is "False"
|
||
|
|
And "scene.objects.get('IfcWall/ToObject').color" is "[1.0, 1.0, 0.0, 1]"
|
||
|
|
And "scene.objects.get('IfcWall/ToObject').hide_viewport" is "False"
|
||
|
|
And "scene.objects.get('IfcWall/ToObject').hide_render" is "False"
|
||
|
|
When I am on frame "6"
|
||
|
|
Then "scene.objects.get('IfcWall/FromObject').color" is "[0.0, 0.0, 0.0, 1]"
|
||
|
|
Then "scene.objects.get('IfcWall/FromObject').hide_viewport" is "True"
|
||
|
|
Then "scene.objects.get('IfcWall/FromObject').hide_render" is "True"
|
||
|
|
And "scene.objects.get('IfcWall/ToObject').color" is "[1.0, 1.0, 1.0, 1]"
|
||
|
|
And "scene.objects.get('IfcWall/ToObject').hide_viewport" is "False"
|
||
|
|
And "scene.objects.get('IfcWall/ToObject').hide_render" is "False"
|
||
|
|
|
||
|
|
Scenario: Animate the consumption of a wall
|
||
|
|
Given an empty IFC project
|
||
|
|
And I press "bim.add_work_schedule"
|
||
|
|
And the variable "work_schedule" is "IfcStore.get_file().by_type('IfcWorkSchedule')[0].id()"
|
||
|
|
And I press "bim.enable_editing_tasks(work_schedule={work_schedule})"
|
||
|
|
And I press "bim.add_summary_task(work_schedule={work_schedule})"
|
||
|
|
And the variable "task" is "IfcStore.get_file().by_type('IfcTask')[0].id()"
|
||
|
|
And I press "bim.enable_editing_task_time(task={task})"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.task_time_attributes.get('ScheduleStart').string_value" to "2021-01-02"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.task_time_attributes.get('ScheduleFinish').string_value" to "2021-01-06"
|
||
|
|
And I press "bim.edit_task_time"
|
||
|
|
And I add a cube
|
||
|
|
And the object "Cube" is selected
|
||
|
|
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||
|
|
And I press "bim.assign_class"
|
||
|
|
And the object "IfcWall/Cube" is selected
|
||
|
|
And I press "bim.assign_process(task={task}, related_object_type='PRODUCT', related_object='')"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.visualisation_start" to "01/01/21"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.visualisation_finish" to "01/02/21"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.speed_types" to "FRAME_SPEED"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.speed_animation_frames" to "7"
|
||
|
|
And I set "scene.BIMWorkScheduleProperties.speed_real_duration" to "P1W"
|
||
|
|
And I press "bim.visualise_work_schedule_date_range(work_schedule={work_schedule})"
|
||
|
|
When I am on frame "1"
|
||
|
|
Then "scene.objects.get('IfcWall/Cube').color" is "[1.0, 1.0, 1.0, 1]"
|
||
|
|
And "scene.objects.get('IfcWall/Cube').hide_viewport" is "False"
|
||
|
|
And "scene.objects.get('IfcWall/Cube').hide_render" is "False"
|
||
|
|
When I am on frame "2"
|
||
|
|
Then "scene.objects.get('IfcWall/Cube').color" is "[0.0, 1.0, 1.0, 1]"
|
||
|
|
And "scene.objects.get('IfcWall/Cube').hide_viewport" is "False"
|
||
|
|
And "scene.objects.get('IfcWall/Cube').hide_render" is "False"
|
||
|
|
When I am on frame "6"
|
||
|
|
Then "scene.objects.get('IfcWall/Cube').color" is "[0.0, 0.0, 0.0, 1]"
|
||
|
|
Then "scene.objects.get('IfcWall/Cube').hide_viewport" is "True"
|
||
|
|
Then "scene.objects.get('IfcWall/Cube').hide_render" is "True"
|