mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-17 22:11:36 +00:00
Rename source dir
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
@aggregate
|
||||
Feature: Aggregate
|
||||
Covers element and spatial aggregation
|
||||
|
||||
Scenario: Enable editing aggregate
|
||||
Given an empty IFC project
|
||||
And the object "IfcSite/My Site" is selected
|
||||
When I press "bim.enable_editing_aggregate"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable editing aggregate
|
||||
Given an empty IFC project
|
||||
And the object "IfcSite/My Site" is selected
|
||||
And I press "bim.enable_editing_aggregate"
|
||||
When I press "bim.disable_editing_aggregate"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Assign object
|
||||
Given an empty IFC project
|
||||
And the object "IfcSite/My Site" is selected
|
||||
And the object "IfcBuildingStorey/My Storey" is selected
|
||||
And I press "bim.enable_editing_aggregate"
|
||||
And the variable "relating_object" is "tool.Ifc.get().by_type('IfcSite')[0].id()"
|
||||
When I press "bim.aggregate_assign_object(relating_object={relating_object})"
|
||||
Then the object "IfcBuildingStorey/My Storey" is aggregated by object "IfcSite/My Site"
|
||||
|
||||
Scenario: Unassign object
|
||||
Given an empty IFC project
|
||||
And the object "IfcBuildingStorey/My Storey" is selected
|
||||
And I press "bim.enable_editing_aggregate"
|
||||
And the variable "relating_object" is "tool.Ifc.get().by_type('IfcSite')[0].id()"
|
||||
And I press "bim.aggregate_assign_object(relating_object={relating_object})"
|
||||
And the object "IfcBuildingStorey/My Storey" is selected
|
||||
When I press "bim.aggregate_unassign_object"
|
||||
Then the object "IfcBuildingStorey/My Storey" has no aggregate
|
||||
|
||||
Scenario: Add aggregate
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
When I press "bim.add_aggregate"
|
||||
Then the object "IfcElementAssembly/Default_Name" exists
|
||||
And the object "IfcWall/Cube" is aggregated by object "IfcElementAssembly/Default_Name"
|
||||
And the object "IfcElementAssembly/Default_Name" is contained in object "IfcBuildingStorey/My Storey"
|
||||
|
||||
Scenario: Add aggregate - add a nested aggregate
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
When I press "bim.add_aggregate"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
And I press "bim.add_aggregate(aggregate_name='Default_Name2')"
|
||||
Then the object "IfcElementAssembly/Default_Name" exists
|
||||
And the object "IfcElementAssembly/Default_Name" is contained in object "IfcBuildingStorey/My Storey"
|
||||
And the object "IfcElementAssembly/Default_Name2" exists
|
||||
And the object "IfcWall/Cube" is aggregated by object "IfcElementAssembly/Default_Name2"
|
||||
And the object "IfcElementAssembly/Default_Name2" is aggregated by object "IfcElementAssembly/Default_Name"
|
||||
|
||||
Scenario: Add aggregate - add multiple elements to a custom aggregate class
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcMember"
|
||||
And I press "bim.assign_class"
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcCovering"
|
||||
And I press "bim.assign_class"
|
||||
And the object "IfcMember/Cube" is selected
|
||||
And additionally the object "IfcCovering/Cube" is selected
|
||||
When I press "bim.add_aggregate(ifc_class='IfcWall', aggregate_name='Assembly')"
|
||||
Then the object "IfcMember/Cube" is aggregated by object "IfcWall/Assembly"
|
||||
And the object "IfcCovering/Cube" is aggregated by object "IfcWall/Assembly"
|
||||
And the object "IfcWall/Assembly" is contained in object "IfcBuildingStorey/My Storey"
|
||||
@@ -0,0 +1,54 @@
|
||||
@attribute
|
||||
Feature: Attribute
|
||||
|
||||
Scenario: Enable editing attributes
|
||||
Given an empty IFC project
|
||||
And the object "IfcSite/My Site" is selected
|
||||
When I press "bim.enable_editing_attributes(obj='IfcSite/My Site')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable editing attributes
|
||||
Given an empty IFC project
|
||||
And the object "IfcSite/My Site" is selected
|
||||
And I press "bim.enable_editing_attributes(obj='IfcSite/My Site')"
|
||||
When I press "bim.disable_editing_attributes(obj='IfcSite/My Site')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit attributes
|
||||
Given an empty IFC project
|
||||
And the object "IfcSite/My Site" is selected
|
||||
And I press "bim.enable_editing_attributes(obj='IfcSite/My Site')"
|
||||
And I set "active_object.BIMAttributeProperties.attributes[1].string_value" to "Name"
|
||||
When I press "bim.edit_attributes(obj='IfcSite/My Site')"
|
||||
Then the object "IfcSite/Name" is an "IfcSite"
|
||||
And the object "IfcSite/My Site" does not exist
|
||||
|
||||
Scenario: Edit attributes - longitude / latitude
|
||||
Given an empty IFC project
|
||||
And the object "IfcSite/My Site" is selected
|
||||
And I press "bim.enable_editing_attributes(obj='IfcSite/My Site')"
|
||||
Then "active_object.BIMAttributeProperties.attributes[6].name" is "RefLatitude"
|
||||
When I set "active_object.BIMAttributeProperties.attributes[6].string_value" to "[1,2]"
|
||||
And I press "bim.edit_attributes(obj='IfcSite/My Site')"
|
||||
And I press "bim.enable_editing_attributes(obj='IfcSite/My Site')"
|
||||
And I press "bim.edit_attributes(obj='IfcSite/My Site')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Copy attribute to selected
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
And additionally the object "IfcWall/Cube.001" is selected
|
||||
And I press "bim.enable_editing_attributes(obj='IfcWall/Cube.001')"
|
||||
And I set "active_object.BIMAttributeProperties.attributes[2].string_value" to "Foo"
|
||||
When I press "bim.copy_attribute_to_selection(name='Description')"
|
||||
Then nothing happens
|
||||
@@ -0,0 +1,233 @@
|
||||
@brick
|
||||
Feature: Brick
|
||||
|
||||
Scenario: Create Brick project
|
||||
Given an empty Blender session
|
||||
And the Brickschema is stubbed
|
||||
When I press "bim.new_brick_file"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Load Brick project
|
||||
Given an empty Blender session
|
||||
And the Brickschema is stubbed
|
||||
When I press "bim.load_brick_project(filepath='{cwd}/test/files/spaces.ttl')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: View Brick class
|
||||
Given an empty Blender session
|
||||
And the Brickschema is stubbed
|
||||
And I press "bim.load_brick_project(filepath='{cwd}/test/files/spaces.ttl')"
|
||||
When I press "bim.view_brick_class(brick_class='Building')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: View Brick item
|
||||
Given an empty Blender session
|
||||
And the Brickschema is stubbed
|
||||
And I press "bim.load_brick_project(filepath='{cwd}/test/files/spaces.ttl')"
|
||||
When I press "bim.view_brick_item(item='https://example.org/digitaltwin#lighting_zone_1')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Rewind Brick class
|
||||
Given an empty Blender session
|
||||
And the Brickschema is stubbed
|
||||
And I press "bim.load_brick_project(filepath='{cwd}/test/files/spaces.ttl')"
|
||||
And I press "bim.view_brick_class(brick_class='Building')"
|
||||
When I press "bim.rewind_brick_class"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Close Brick project
|
||||
Given an empty Blender session
|
||||
And the Brickschema is stubbed
|
||||
And I press "bim.load_brick_project(filepath='{cwd}/test/files/spaces.ttl')"
|
||||
When I press "bim.close_brick_project"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Close Brick project then create Brick project
|
||||
Given an empty Blender session
|
||||
And the Brickschema is stubbed
|
||||
And I press "bim.load_brick_project(filepath='{cwd}/test/files/spaces.ttl')"
|
||||
And I press "bim.close_brick_project"
|
||||
And the Brickschema is stubbed
|
||||
When I press "bim.new_brick_file"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add Brick - vanilla Brick with no IFC
|
||||
Given an empty Blender session
|
||||
And the Brickschema is stubbed
|
||||
And I press "bim.new_brick_file"
|
||||
And I set "scene.BIMBrickProperties.namespace" to "https://example.org/digitaltwin#"
|
||||
And I set "scene.BIMBrickProperties.new_brick_label" to "abc123"
|
||||
When I press "bim.add_brick"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add Brick - from geometry without a Brick IFC library
|
||||
Given an empty IFC project
|
||||
And the Brickschema is stubbed
|
||||
And I press "bim.new_brick_file"
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcChiller"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.load_brick_project(filepath='{cwd}/test/files/spaces.ttl')"
|
||||
And the object "IfcChiller/Cube" is selected
|
||||
And I set "scene.BIMBrickProperties.namespace" to "https://example.org/digitaltwin#"
|
||||
When I press "bim.add_brick"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add Brick - from geometry with a Brick IFC library
|
||||
Given an empty IFC project
|
||||
And the Brickschema is stubbed
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcChiller"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.load_brick_project(filepath='{cwd}/test/files/spaces.ttl')"
|
||||
And I press "bim.convert_brick_project"
|
||||
And the object "IfcChiller/Cube" is selected
|
||||
And I set "scene.BIMBrickProperties.namespace" to "https://example.org/digitaltwin#"
|
||||
When I press "bim.add_brick"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Refresh Brick viewer
|
||||
Given an empty Blender session
|
||||
And the Brickschema is stubbed
|
||||
And I press "bim.new_brick_file"
|
||||
When I press "bim.refresh_brick_viewer"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add Brick relation - vanilla Brick with no IFC
|
||||
Given an empty Blender session
|
||||
And the Brickschema is stubbed
|
||||
And I press "bim.load_brick_project(filepath='{cwd}/test/files/spaces.ttl')"
|
||||
And I set "scene.BIMBrickProperties.namespace" to "https://example.org/digitaltwin#"
|
||||
And I press "bim.view_brick_class(brick_class='Lighting_Zone')"
|
||||
And I set "scene.BIMBrickProperties.active_brick_index" to "0"
|
||||
And I set "scene.BIMBrickProperties.brick_create_relations_toggled" to "True"
|
||||
And I set "scene.BIMBrickProperties.new_brick_relation_object" to "xyz789"
|
||||
When I press "bim.add_brick_relation"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add Brick relation - vanilla Brick with no IFC and with split screen
|
||||
Given an empty Blender session
|
||||
And the Brickschema is stubbed
|
||||
And I press "bim.load_brick_project(filepath='{cwd}/test/files/spaces.ttl')"
|
||||
And I set "scene.BIMBrickProperties.namespace" to "https://example.org/digitaltwin#"
|
||||
And I set "scene.BIMBrickProperties.brick_entity_create_type" to "Location"
|
||||
And I set "scene.BIMBrickProperties.new_brick_label" to "abc123"
|
||||
And I set "scene.BIMBrickProperties.brick_entity_class" to "https://brickschema.org/schema/Brick#Building"
|
||||
And I press "bim.add_brick"
|
||||
And I press "bim.view_brick_class(brick_class='Lighting_Zone')"
|
||||
And I set "scene.BIMBrickProperties.active_brick_index" to "0"
|
||||
And I set "scene.BIMBrickProperties.split_screen_toggled" to "True"
|
||||
And I press "bim.view_brick_class(brick_class='Building', split_screen=True)"
|
||||
And I set "scene.BIMBrickProperties.split_screen_active_brick_index" to "0"
|
||||
And I set "scene.BIMBrickProperties.brick_create_relations_toggled" to "True"
|
||||
When I press "bim.add_brick_relation"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Remove Brick - vanilla Brick
|
||||
Given an empty Blender session
|
||||
And the Brickschema is stubbed
|
||||
And I press "bim.load_brick_project(filepath='{cwd}/test/files/spaces.ttl')"
|
||||
And I press "bim.view_brick_class(brick_class='Lighting_Zone')"
|
||||
And I set "scene.BIMBrickProperties.active_brick_index" to "0"
|
||||
When I press "bim.remove_brick"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Remove Brick - with a Brick IFC library reference
|
||||
Given an empty IFC project
|
||||
And the Brickschema is stubbed
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcChiller"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.load_brick_project(filepath='{cwd}/test/files/spaces.ttl')"
|
||||
And the object "IfcChiller/Cube" is selected
|
||||
And I set "scene.BIMBrickProperties.namespace" to "https://example.org/digitaltwin#"
|
||||
And I press "bim.add_brick"
|
||||
And I press "bim.view_brick_class(brick_class='Equipment')"
|
||||
And I set "scene.BIMBrickProperties.active_brick_index" to "0"
|
||||
When I press "bim.remove_brick"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Change viewer list root
|
||||
Given an empty Blender session
|
||||
And the Brickschema is stubbed
|
||||
And I press "bim.load_brick_project(filepath='{cwd}/test/files/spaces.ttl')"
|
||||
And I set "scene.BIMBrickProperties.set_list_root_toggled" to "True"
|
||||
When I set "scene.BIMBrickProperties.brick_list_root" to "Location"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Change viewer list root - split screen
|
||||
Given an empty Blender session
|
||||
And the Brickschema is stubbed
|
||||
And I press "bim.load_brick_project(filepath='{cwd}/test/files/spaces.ttl')"
|
||||
And I set "scene.BIMBrickProperties.set_list_root_toggled" to "True"
|
||||
And I set "scene.BIMBrickProperties.split_screen_toggled" to "True"
|
||||
When I set "scene.BIMBrickProperties.split_screen_brick_list_root" to "Location"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Toggle split screen
|
||||
Given an empty Blender session
|
||||
And the Brickschema is stubbed
|
||||
And I press "bim.load_brick_project(filepath='{cwd}/test/files/spaces.ttl')"
|
||||
When I set "scene.BIMBrickProperties.split_screen_toggled" to "True"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Set active namespace
|
||||
Given an empty Blender session
|
||||
And the Brickschema is stubbed
|
||||
When I set "scene.BIMBrickProperties.namespace" to "https://example.org/digitaltwin#"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Bind new namespace
|
||||
Given an empty Blender session
|
||||
And the Brickschema is stubbed
|
||||
And I set "scene.BIMBrickProperties.new_brick_namespace_alias" to "digitaltwin2"
|
||||
And I set "scene.BIMBrickProperties.new_brick_namespace_uri" to "https://example.org/digitaltwin2#"
|
||||
When I press "bim.add_brick_namespace"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Convert brick project
|
||||
Given an empty IFC project
|
||||
And the Brickschema is stubbed
|
||||
And I press "bim.load_brick_project(filepath='{cwd}/test/files/spaces.ttl')"
|
||||
When I press "bim.convert_brick_project"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Convert IFC to brick
|
||||
Given an empty IFC project
|
||||
And the Brickschema is stubbed
|
||||
And I press "bim.load_brick_project(filepath='{cwd}/test/files/spaces.ttl')"
|
||||
And I press "bim.convert_brick_project"
|
||||
And I set "scene.BIMBrickProperties.namespace" to "https://example.org/digitaltwin#"
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcUnitaryEquipment"
|
||||
And I set "scene.BIMRootProperties.ifc_predefined_type" to "AIRHANDLER"
|
||||
And I press "bim.assign_class"
|
||||
When I press "bim.convert_ifc_to_brick"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Assign brick reference
|
||||
Given an empty IFC project
|
||||
And the Brickschema is stubbed
|
||||
And I press "bim.load_brick_project(filepath='{cwd}/test/files/spaces.ttl')"
|
||||
And I set "scene.BIMBrickProperties.namespace" to "https://example.org/digitaltwin#"
|
||||
And I set "scene.BIMBrickProperties.brick_entity_class" to "https://brickschema.org/schema/Brick#Chiller"
|
||||
And I press "bim.add_brick"
|
||||
And I press "bim.view_brick_class(brick_class='Chiller')"
|
||||
And I set "scene.BIMBrickProperties.active_brick_index" to "0"
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcChiller"
|
||||
And I press "bim.assign_class"
|
||||
And the object "IfcChiller/Cube" is selected
|
||||
And I press "bim.convert_brick_project"
|
||||
When I press "bim.assign_brick_reference"
|
||||
Then nothing happens
|
||||
@@ -0,0 +1,250 @@
|
||||
@classification
|
||||
Feature: Classification
|
||||
|
||||
Scenario: Load classification library
|
||||
Given an empty IFC project
|
||||
When I press "bim.load_classification_library(filepath='{cwd}/test/files/classification.ifc')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add classification
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_classification_library(filepath='{cwd}/test/files/classification.ifc')"
|
||||
And the variable "classification" is "{classification_ifc}.by_type('IfcClassification')[0].id()"
|
||||
And I set "scene.BIMClassificationProperties.available_classifications" to "{classification}"
|
||||
When I press "bim.add_classification"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add classification - IFC2X3
|
||||
Given an empty IFC2X3 project
|
||||
And I press "bim.load_classification_library(filepath='{cwd}/test/files/classification.ifc')"
|
||||
And the variable "classification" is "{classification_ifc}.by_type('IfcClassification')[0].id()"
|
||||
And I set "scene.BIMClassificationProperties.available_classifications" to "{classification}"
|
||||
When I press "bim.add_classification"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable editing classification
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_classification_library(filepath='{cwd}/test/files/classification.ifc')"
|
||||
And the variable "classification" is "{classification_ifc}.by_type('IfcClassification')[0].id()"
|
||||
And I set "scene.BIMClassificationProperties.available_classifications" to "{classification}"
|
||||
And I press "bim.add_classification"
|
||||
And the variable "classification" is "{ifc}.by_type('IfcClassification')[0].id()"
|
||||
When I press "bim.enable_editing_classification(classification={classification})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable editing classification
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_classification_library(filepath='{cwd}/test/files/classification.ifc')"
|
||||
And the variable "classification" is "{classification_ifc}.by_type('IfcClassification')[0].id()"
|
||||
And I set "scene.BIMClassificationProperties.available_classifications" to "{classification}"
|
||||
And I press "bim.add_classification"
|
||||
And the variable "classification" is "{ifc}.by_type('IfcClassification')[0].id()"
|
||||
And I press "bim.enable_editing_classification(classification={classification})"
|
||||
When I press "bim.disable_editing_classification"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Remove classification
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_classification_library(filepath='{cwd}/test/files/classification.ifc')"
|
||||
And the variable "classification" is "{classification_ifc}.by_type('IfcClassification')[0].id()"
|
||||
And I set "scene.BIMClassificationProperties.available_classifications" to "{classification}"
|
||||
And I press "bim.add_classification"
|
||||
And the variable "classification" is "{ifc}.by_type('IfcClassification')[0].id()"
|
||||
When I press "bim.remove_classification(classification={classification})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit classification
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_classification_library(filepath='{cwd}/test/files/classification.ifc')"
|
||||
And the variable "classification" is "{classification_ifc}.by_type('IfcClassification')[0].id()"
|
||||
And I set "scene.BIMClassificationProperties.available_classifications" to "{classification}"
|
||||
And I press "bim.add_classification"
|
||||
And the variable "classification" is "{ifc}.by_type('IfcClassification')[0].id()"
|
||||
And I press "bim.enable_editing_classification(classification={classification})"
|
||||
When I press "bim.edit_classification"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add classification reference - object
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_classification_library(filepath='{cwd}/test/files/classification.ifc')"
|
||||
And the variable "classification" is "{classification_ifc}.by_type('IfcClassification')[0].id()"
|
||||
And I set "scene.BIMClassificationProperties.available_classifications" to "{classification}"
|
||||
And I press "bim.add_classification"
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.change_classification_level(parent_id={classification})"
|
||||
And the variable "reference" is "{classification_ifc}.by_type('IfcClassificationReference')[0].id()"
|
||||
When I press "bim.add_classification_reference(reference={reference}, obj='IfcWallType/Cube', obj_type='Object')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Change classification level
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_classification_library(filepath='{cwd}/test/files/classification.ifc')"
|
||||
And the variable "classification" is "{classification_ifc}.by_type('IfcClassification')[0].id()"
|
||||
And I set "scene.BIMClassificationProperties.available_classifications" to "{classification}"
|
||||
And I press "bim.add_classification"
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.change_classification_level(parent_id={classification})"
|
||||
And the variable "reference" is "{classification_ifc}.by_type('IfcClassificationReference')[0].id()"
|
||||
When I press "bim.change_classification_level(parent_id={reference})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable editing classification references
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_classification_library(filepath='{cwd}/test/files/classification.ifc')"
|
||||
And the variable "classification" is "{classification_ifc}.by_type('IfcClassification')[0].id()"
|
||||
And I set "scene.BIMClassificationProperties.available_classifications" to "{classification}"
|
||||
And I press "bim.add_classification"
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.change_classification_level(parent_id={classification})"
|
||||
When I press "bim.disable_editing_classification_references"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable editing classification reference
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_classification_library(filepath='{cwd}/test/files/classification.ifc')"
|
||||
And the variable "classification" is "{classification_ifc}.by_type('IfcClassification')[0].id()"
|
||||
And I set "scene.BIMClassificationProperties.available_classifications" to "{classification}"
|
||||
And I press "bim.add_classification"
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.change_classification_level(parent_id={classification})"
|
||||
And the variable "reference" is "{classification_ifc}.by_type('IfcClassificationReference')[0].id()"
|
||||
And I press "bim.add_classification_reference(reference={reference}, obj='IfcWallType/Cube', obj_type='Object')"
|
||||
And the variable "reference" is "{ifc}.by_type('IfcClassificationReference')[0].id()"
|
||||
When I press "bim.enable_editing_classification_reference(reference={reference})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable editing classification reference
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_classification_library(filepath='{cwd}/test/files/classification.ifc')"
|
||||
And the variable "classification" is "{classification_ifc}.by_type('IfcClassification')[0].id()"
|
||||
And I set "scene.BIMClassificationProperties.available_classifications" to "{classification}"
|
||||
And I press "bim.add_classification"
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.change_classification_level(parent_id={classification})"
|
||||
And the variable "reference" is "{classification_ifc}.by_type('IfcClassificationReference')[0].id()"
|
||||
And I press "bim.add_classification_reference(reference={reference}, obj='IfcWallType/Cube', obj_type='Object')"
|
||||
And the variable "reference" is "{ifc}.by_type('IfcClassificationReference')[0].id()"
|
||||
And I press "bim.enable_editing_classification_reference(reference={reference})"
|
||||
When I press "bim.disable_editing_classification_reference"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Remove classification reference - object
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_classification_library(filepath='{cwd}/test/files/classification.ifc')"
|
||||
And the variable "classification" is "{classification_ifc}.by_type('IfcClassification')[0].id()"
|
||||
And I set "scene.BIMClassificationProperties.available_classifications" to "{classification}"
|
||||
And I press "bim.add_classification"
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.change_classification_level(parent_id={classification})"
|
||||
And the variable "reference" is "{classification_ifc}.by_type('IfcClassificationReference')[0].id()"
|
||||
And I press "bim.add_classification_reference(reference={reference}, obj='IfcWallType/Cube', obj_type='Object')"
|
||||
And the variable "reference" is "{ifc}.by_type('IfcClassificationReference')[0].id()"
|
||||
And I press "bim.enable_editing_classification_reference(reference={reference})"
|
||||
When I press "bim.remove_classification_reference(reference={reference}, obj='IfcWallType/Cube', obj_type='Object')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit classification reference
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_classification_library(filepath='{cwd}/test/files/classification.ifc')"
|
||||
And the variable "classification" is "{classification_ifc}.by_type('IfcClassification')[0].id()"
|
||||
And I set "scene.BIMClassificationProperties.available_classifications" to "{classification}"
|
||||
And I press "bim.add_classification"
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.change_classification_level(parent_id={classification})"
|
||||
And the variable "reference" is "{classification_ifc}.by_type('IfcClassificationReference')[0].id()"
|
||||
And I press "bim.add_classification_reference(reference={reference}, obj='IfcWallType/Cube', obj_type='Object')"
|
||||
And the variable "reference" is "{ifc}.by_type('IfcClassificationReference')[0].id()"
|
||||
And I press "bim.enable_editing_classification_reference(reference={reference})"
|
||||
When I press "bim.edit_classification_reference"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add classification reference - material
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_classification_library(filepath='{cwd}/test/files/classification.ifc')"
|
||||
And the variable "classification" is "{classification_ifc}.by_type('IfcClassification')[0].id()"
|
||||
And I set "scene.BIMClassificationProperties.available_classifications" to "{classification}"
|
||||
And I press "bim.add_classification"
|
||||
And I press "bim.add_material(name='Material')"
|
||||
And I press "bim.load_materials"
|
||||
And I press "bim.expand_material_category(category='Uncategorised')"
|
||||
And I set "scene.BIMMaterialProperties.active_material_index" to "1"
|
||||
And the variable "material" is "{ifc}.by_type('IfcMaterial')[0].id()"
|
||||
And I press "bim.change_classification_level(parent_id={classification})"
|
||||
And the variable "reference" is "{classification_ifc}.by_type('IfcClassificationReference')[0].id()"
|
||||
When I press "bim.add_classification_reference(reference={reference}, obj_type='Material')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Remove classification reference - material
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_classification_library(filepath='{cwd}/test/files/classification.ifc')"
|
||||
And the variable "classification" is "{classification_ifc}.by_type('IfcClassification')[0].id()"
|
||||
And I set "scene.BIMClassificationProperties.available_classifications" to "{classification}"
|
||||
And I press "bim.add_classification"
|
||||
And I press "bim.add_material(name='Material')"
|
||||
And I press "bim.load_materials"
|
||||
And I press "bim.expand_material_category(category='Uncategorised')"
|
||||
And I set "scene.BIMMaterialProperties.active_material_index" to "1"
|
||||
And I press "bim.change_classification_level(parent_id={classification})"
|
||||
And the variable "reference" is "{classification_ifc}.by_type('IfcClassificationReference')[0].id()"
|
||||
And I press "bim.add_classification_reference(reference={reference}, obj_type='Material')"
|
||||
When I press "bim.remove_classification_reference(reference={reference}, obj_type='Material')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add classification reference - cost
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_classification_library(filepath='{cwd}/test/files/classification.ifc')"
|
||||
And the variable "classification" is "{classification_ifc}.by_type('IfcClassification')[0].id()"
|
||||
And I set "scene.BIMClassificationProperties.available_classifications" to "{classification}"
|
||||
And I press "bim.add_classification"
|
||||
And I press "bim.add_cost_schedule"
|
||||
And the variable "cost_schedule" is "{ifc}.by_type('IfcCostSchedule')[0].id()"
|
||||
And I press "bim.enable_editing_cost_items(cost_schedule={cost_schedule})"
|
||||
And I press "bim.add_summary_cost_item()"
|
||||
And I press "bim.change_classification_level(parent_id={classification})"
|
||||
And the variable "reference" is "{classification_ifc}.by_type('IfcClassificationReference')[0].id()"
|
||||
When I press "bim.add_classification_reference(reference={reference}, obj='', obj_type='Cost')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Remove classification reference - cost
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_classification_library(filepath='{cwd}/test/files/classification.ifc')"
|
||||
And the variable "classification" is "{classification_ifc}.by_type('IfcClassification')[0].id()"
|
||||
And I set "scene.BIMClassificationProperties.available_classifications" to "{classification}"
|
||||
And I press "bim.add_classification"
|
||||
And I press "bim.add_cost_schedule"
|
||||
And the variable "cost_schedule" is "{ifc}.by_type('IfcCostSchedule')[0].id()"
|
||||
And I press "bim.enable_editing_cost_items(cost_schedule={cost_schedule})"
|
||||
And I press "bim.add_summary_cost_item()"
|
||||
And I press "bim.change_classification_level(parent_id={classification})"
|
||||
And the variable "reference" is "{classification_ifc}.by_type('IfcClassificationReference')[0].id()"
|
||||
And I press "bim.add_classification_reference(reference={reference}, obj='', obj_type='Cost')"
|
||||
When I press "bim.remove_classification_reference(reference={reference}, obj='', obj_type='Cost')"
|
||||
Then nothing happens
|
||||
@@ -0,0 +1,43 @@
|
||||
@context
|
||||
Feature: Context
|
||||
Manages geometric representation contexts and subcontexts
|
||||
|
||||
Scenario: Add context
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_context(context_type='Model', context_identifier='', target_view='', parent=0)"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add a subcontext
|
||||
Given an empty IFC project
|
||||
When the variable "parent" is "IfcStore.get_file().by_type('IfcGeometricRepresentationContext', include_subtypes=False)[0].id()"
|
||||
When I press "bim.add_context(context_type='Model', context_identifier='Body', target_view='MODEL_VIEW', parent={parent})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Remove context
|
||||
Given an empty IFC project
|
||||
When the variable "context" is "IfcStore.get_file().by_type('IfcGeometricRepresentationContext')[0].id()"
|
||||
And I press "bim.remove_context(context={context})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable editing context
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_context(context_type='Model', context_identifier='', target_view='', parent=0)"
|
||||
And the variable "context" is "IfcStore.get_file().by_type('IfcGeometricRepresentationContext')[0].id()"
|
||||
And I press "bim.enable_editing_context(context={context})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable editing context
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_context(context_type='Model', context_identifier='', target_view='', parent=0)"
|
||||
And the variable "context" is "IfcStore.get_file().by_type('IfcGeometricRepresentationContext')[0].id()"
|
||||
And I press "bim.enable_editing_context(context={context})"
|
||||
And I press "bim.disable_editing_context()"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit context
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_context(context_type='Model', context_identifier='', target_view='', parent=0)"
|
||||
And the variable "context" is "IfcStore.get_file().by_type('IfcGeometricRepresentationContext')[0].id()"
|
||||
And I press "bim.enable_editing_context(context={context})"
|
||||
And I press "bim.edit_context"
|
||||
Then nothing happens
|
||||
@@ -0,0 +1,461 @@
|
||||
@cost
|
||||
Feature: Cost
|
||||
|
||||
Scenario: Add cost schedule
|
||||
Given an empty IFC project
|
||||
And I set "scene.BIMCostProperties.cost_schedule_predefined_types" to "COSTPLAN"
|
||||
When I press "bim.add_cost_schedule"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable editing cost schedule
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_cost_schedule"
|
||||
And the variable "cost_schedule" is "{ifc}.by_type('IfcCostSchedule')[0].id()"
|
||||
When I press "bim.enable_editing_cost_schedule_attributes(cost_schedule={cost_schedule})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable editing cost schedule
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_cost_schedule"
|
||||
And the variable "cost_schedule" is "{ifc}.by_type('IfcCostSchedule')[0].id()"
|
||||
And I press "bim.enable_editing_cost_schedule_attributes(cost_schedule={cost_schedule})"
|
||||
When I press "bim.disable_editing_cost_schedule"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit cost schedule
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_cost_schedule"
|
||||
And the variable "cost_schedule" is "{ifc}.by_type('IfcCostSchedule')[0].id()"
|
||||
And I press "bim.enable_editing_cost_schedule_attributes(cost_schedule={cost_schedule})"
|
||||
When I press "bim.edit_cost_schedule"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Remove cost schedule
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_cost_schedule"
|
||||
And the variable "cost_schedule" is "{ifc}.by_type('IfcCostSchedule')[0].id()"
|
||||
When I press "bim.remove_cost_schedule(cost_schedule={cost_schedule})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable editing cost items
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_cost_schedule"
|
||||
And the variable "cost_schedule" is "{ifc}.by_type('IfcCostSchedule')[0].id()"
|
||||
When I press "bim.enable_editing_cost_items(cost_schedule={cost_schedule})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable editing cost schedule - after editing items
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_cost_schedule"
|
||||
And the variable "cost_schedule" is "{ifc}.by_type('IfcCostSchedule')[0].id()"
|
||||
And I press "bim.enable_editing_cost_items(cost_schedule={cost_schedule})"
|
||||
When I press "bim.disable_editing_cost_schedule"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add summary cost item
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_cost_schedule"
|
||||
And the variable "cost_schedule" is "{ifc}.by_type('IfcCostSchedule')[0].id()"
|
||||
And I press "bim.enable_editing_cost_items(cost_schedule={cost_schedule})"
|
||||
When I press "bim.add_summary_cost_item()"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Remove cost item
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_cost_schedule"
|
||||
And the variable "cost_schedule" is "{ifc}.by_type('IfcCostSchedule')[0].id()"
|
||||
And I press "bim.enable_editing_cost_items(cost_schedule={cost_schedule})"
|
||||
And I press "bim.add_summary_cost_item()"
|
||||
And the variable "cost_item" is "{ifc}.by_type('IfcCostItem')[0].id()"
|
||||
When I press "bim.remove_cost_item(cost_item={cost_item})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable editing cost item
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_cost_schedule"
|
||||
And the variable "cost_schedule" is "{ifc}.by_type('IfcCostSchedule')[0].id()"
|
||||
And I press "bim.enable_editing_cost_items(cost_schedule={cost_schedule})"
|
||||
And I press "bim.add_summary_cost_item()"
|
||||
And the variable "cost_item" is "{ifc}.by_type('IfcCostItem')[0].id()"
|
||||
When I press "bim.enable_editing_cost_item_attributes(cost_item={cost_item})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable editing cost item
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_cost_schedule"
|
||||
And the variable "cost_schedule" is "{ifc}.by_type('IfcCostSchedule')[0].id()"
|
||||
And I press "bim.enable_editing_cost_items(cost_schedule={cost_schedule})"
|
||||
And I press "bim.add_summary_cost_item()"
|
||||
And the variable "cost_item" is "{ifc}.by_type('IfcCostItem')[0].id()"
|
||||
And I press "bim.enable_editing_cost_item_attributes(cost_item={cost_item})"
|
||||
When I press "bim.disable_editing_cost_item"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit cost item
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_cost_schedule"
|
||||
And the variable "cost_schedule" is "{ifc}.by_type('IfcCostSchedule')[0].id()"
|
||||
And I press "bim.enable_editing_cost_items(cost_schedule={cost_schedule})"
|
||||
And I press "bim.add_summary_cost_item()"
|
||||
And the variable "cost_item" is "{ifc}.by_type('IfcCostItem')[0].id()"
|
||||
And I press "bim.enable_editing_cost_item_attributes(cost_item={cost_item})"
|
||||
When I press "bim.edit_cost_item"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add cost item
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_cost_schedule"
|
||||
And the variable "cost_schedule" is "{ifc}.by_type('IfcCostSchedule')[0].id()"
|
||||
And I press "bim.enable_editing_cost_items(cost_schedule={cost_schedule})"
|
||||
And I press "bim.add_summary_cost_item()"
|
||||
And the variable "cost_item" is "{ifc}.by_type('IfcCostItem')[0].id()"
|
||||
When I press "bim.add_cost_item(cost_item={cost_item})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Contract Cost Item
|
||||
Given an empty IFC project
|
||||
And I set "scene.BIMCostProperties.cost_schedule_predefined_types" to "COSTPLAN"
|
||||
And I press "bim.add_cost_schedule"
|
||||
And the variable "cost_schedule" is "{ifc}.by_type('IfcCostSchedule')[0].id()"
|
||||
And I press "bim.enable_editing_cost_items(cost_schedule={cost_schedule})"
|
||||
And I press "bim.add_summary_cost_item()"
|
||||
And I press "bim.add_cost_item(cost_item={cost_item})"
|
||||
When I press "bim.contract_cost_item(cost_item={cost_item})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Contract All Cost Items
|
||||
Given an empty IFC project
|
||||
And I set "scene.BIMCostProperties.cost_schedule_predefined_types" to "COSTPLAN"
|
||||
And I press "bim.add_cost_schedule"
|
||||
And the variable "cost_schedule" is "{ifc}.by_type('IfcCostSchedule')[0].id()"
|
||||
And I press "bim.enable_editing_cost_items(cost_schedule={cost_schedule})"
|
||||
And I press "bim.add_summary_cost_item()"
|
||||
And I press "bim.add_cost_item(cost_item={cost_item})"
|
||||
When I press "bim.contract_cost_items"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Expand Cost Item
|
||||
Given an empty IFC project
|
||||
And I set "scene.BIMCostProperties.cost_schedule_predefined_types" to "COSTPLAN"
|
||||
And I press "bim.add_cost_schedule"
|
||||
And the variable "cost_schedule" is "{ifc}.by_type('IfcCostSchedule')[0].id()"
|
||||
And I press "bim.enable_editing_cost_items(cost_schedule={cost_schedule})"
|
||||
And I press "bim.add_summary_cost_item()"
|
||||
And I press "bim.add_cost_item(cost_item={cost_item})"
|
||||
And I press "bim.contract_cost_item(cost_item={cost_item})"
|
||||
When I press "bim.expand_cost_item(cost_item={cost_item})"
|
||||
Then nothing happens
|
||||
|
||||
|
||||
Scenario: Expand All Cost Items
|
||||
Given an empty IFC project
|
||||
And I set "scene.BIMCostProperties.cost_schedule_predefined_types" to "COSTPLAN"
|
||||
And I press "bim.add_cost_schedule"
|
||||
And the variable "cost_schedule" is "{ifc}.by_type('IfcCostSchedule')[0].id()"
|
||||
And I press "bim.enable_editing_cost_items(cost_schedule={cost_schedule})"
|
||||
And I press "bim.add_summary_cost_item()"
|
||||
And I press "bim.add_cost_item(cost_item={cost_item})"
|
||||
When I press "bim.expand_cost_items"
|
||||
Then nothing happens
|
||||
|
||||
|
||||
Scenario: Enable editing cost item quantities
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_cost_schedule"
|
||||
And the variable "cost_schedule" is "{ifc}.by_type('IfcCostSchedule')[0].id()"
|
||||
And I press "bim.enable_editing_cost_items(cost_schedule={cost_schedule})"
|
||||
And I press "bim.add_summary_cost_item()"
|
||||
And the variable "cost_item" is "{ifc}.by_type('IfcCostItem')[0].id()"
|
||||
When I press "bim.enable_editing_cost_item_quantities(cost_item={cost_item})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add cost item quantity
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_cost_schedule"
|
||||
And the variable "cost_schedule" is "{ifc}.by_type('IfcCostSchedule')[0].id()"
|
||||
And I press "bim.enable_editing_cost_items(cost_schedule={cost_schedule})"
|
||||
And I press "bim.add_summary_cost_item()"
|
||||
And the variable "cost_item" is "{ifc}.by_type('IfcCostItem')[0].id()"
|
||||
And I press "bim.enable_editing_cost_item_quantities(cost_item={cost_item})"
|
||||
When I press "bim.add_cost_item_quantity(cost_item={cost_item}, ifc_class='IfcQuantityArea')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Remove cost item quantity
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_cost_schedule"
|
||||
And the variable "cost_schedule" is "{ifc}.by_type('IfcCostSchedule')[0].id()"
|
||||
And I press "bim.enable_editing_cost_items(cost_schedule={cost_schedule})"
|
||||
And I press "bim.add_summary_cost_item()"
|
||||
And the variable "cost_item" is "{ifc}.by_type('IfcCostItem')[0].id()"
|
||||
And I press "bim.enable_editing_cost_item_quantities(cost_item={cost_item})"
|
||||
And I press "bim.add_cost_item_quantity(cost_item={cost_item}, ifc_class='IfcQuantityArea')"
|
||||
And the variable "quantity" is "{ifc}.by_type('IfcQuantityArea')[0].id()"
|
||||
When I press "bim.remove_cost_item_quantity(cost_item={cost_item}, physical_quantity={quantity})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable editing cost item quantity
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_cost_schedule"
|
||||
And the variable "cost_schedule" is "{ifc}.by_type('IfcCostSchedule')[0].id()"
|
||||
And I press "bim.enable_editing_cost_items(cost_schedule={cost_schedule})"
|
||||
And I press "bim.add_summary_cost_item()"
|
||||
And the variable "cost_item" is "{ifc}.by_type('IfcCostItem')[0].id()"
|
||||
And I press "bim.enable_editing_cost_item_quantities(cost_item={cost_item})"
|
||||
And I press "bim.add_cost_item_quantity(cost_item={cost_item}, ifc_class='IfcQuantityArea')"
|
||||
And the variable "quantity" is "{ifc}.by_type('IfcQuantityArea')[0].id()"
|
||||
When I press "bim.enable_editing_cost_item_quantity(physical_quantity={quantity})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable editing cost item quantity
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_cost_schedule"
|
||||
And the variable "cost_schedule" is "{ifc}.by_type('IfcCostSchedule')[0].id()"
|
||||
And I press "bim.enable_editing_cost_items(cost_schedule={cost_schedule})"
|
||||
And I press "bim.add_summary_cost_item()"
|
||||
And the variable "cost_item" is "{ifc}.by_type('IfcCostItem')[0].id()"
|
||||
And I press "bim.enable_editing_cost_item_quantities(cost_item={cost_item})"
|
||||
And I press "bim.add_cost_item_quantity(cost_item={cost_item}, ifc_class='IfcQuantityArea')"
|
||||
And the variable "quantity" is "{ifc}.by_type('IfcQuantityArea')[0].id()"
|
||||
And I press "bim.enable_editing_cost_item_quantity(physical_quantity={quantity})"
|
||||
When I press "bim.disable_editing_cost_item_quantity"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit cost item quantity
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_cost_schedule"
|
||||
And the variable "cost_schedule" is "{ifc}.by_type('IfcCostSchedule')[0].id()"
|
||||
And I press "bim.enable_editing_cost_items(cost_schedule={cost_schedule})"
|
||||
And I press "bim.add_summary_cost_item()"
|
||||
And the variable "cost_item" is "{ifc}.by_type('IfcCostItem')[0].id()"
|
||||
And I press "bim.enable_editing_cost_item_quantities(cost_item={cost_item})"
|
||||
And I press "bim.add_cost_item_quantity(cost_item={cost_item}, ifc_class='IfcQuantityArea')"
|
||||
And the variable "quantity" is "{ifc}.by_type('IfcQuantityArea')[0].id()"
|
||||
And I press "bim.enable_editing_cost_item_quantity(physical_quantity={quantity})"
|
||||
And I set "scene.BIMCostProperties.quantity_attributes[2].float_value" to "3"
|
||||
When I press "bim.edit_cost_item_quantity(physical_quantity={quantity})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable editing cost item quantity
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_cost_schedule"
|
||||
And the variable "cost_schedule" is "{ifc}.by_type('IfcCostSchedule')[0].id()"
|
||||
And I press "bim.enable_editing_cost_items(cost_schedule={cost_schedule})"
|
||||
And I press "bim.add_summary_cost_item()"
|
||||
And the variable "cost_item" is "{ifc}.by_type('IfcCostItem')[0].id()"
|
||||
When I press "bim.enable_editing_cost_item_values(cost_item={cost_item})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add cost value - fixed
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_cost_schedule"
|
||||
And the variable "cost_schedule" is "{ifc}.by_type('IfcCostSchedule')[0].id()"
|
||||
And I press "bim.enable_editing_cost_items(cost_schedule={cost_schedule})"
|
||||
And I press "bim.add_summary_cost_item()"
|
||||
And the variable "cost_item" is "{ifc}.by_type('IfcCostItem')[0].id()"
|
||||
And I press "bim.enable_editing_cost_item_values(cost_item={cost_item})"
|
||||
And I set "scene.BIMCostProperties.cost_types" to "FIXED"
|
||||
When I press "bim.add_cost_value(parent={cost_item}, cost_type='FIXED')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable editing cost item value
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_cost_schedule"
|
||||
And the variable "cost_schedule" is "{ifc}.by_type('IfcCostSchedule')[0].id()"
|
||||
And I press "bim.enable_editing_cost_items(cost_schedule={cost_schedule})"
|
||||
And I press "bim.add_summary_cost_item()"
|
||||
And the variable "cost_item" is "{ifc}.by_type('IfcCostItem')[0].id()"
|
||||
And I press "bim.enable_editing_cost_item_values(cost_item={cost_item})"
|
||||
And I set "scene.BIMCostProperties.cost_types" to "FIXED"
|
||||
And I press "bim.add_cost_value(parent={cost_item}, cost_type='FIXED')"
|
||||
And the variable "cost_value" is "{ifc}.by_type('IfcCostValue')[0].id()"
|
||||
When I press "bim.enable_editing_cost_item_value(cost_value={cost_value})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable editing cost item value
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_cost_schedule"
|
||||
And the variable "cost_schedule" is "{ifc}.by_type('IfcCostSchedule')[0].id()"
|
||||
And I press "bim.enable_editing_cost_items(cost_schedule={cost_schedule})"
|
||||
And I press "bim.add_summary_cost_item()"
|
||||
And the variable "cost_item" is "{ifc}.by_type('IfcCostItem')[0].id()"
|
||||
And I press "bim.enable_editing_cost_item_values(cost_item={cost_item})"
|
||||
And I set "scene.BIMCostProperties.cost_types" to "FIXED"
|
||||
And I press "bim.add_cost_value(parent={cost_item}, cost_type='FIXED')"
|
||||
And the variable "cost_value" is "{ifc}.by_type('IfcCostValue')[0].id()"
|
||||
And I press "bim.enable_editing_cost_item_value(cost_value={cost_value})"
|
||||
When I press "bim.disable_editing_cost_item_value"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit cost item value
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_cost_schedule"
|
||||
And the variable "cost_schedule" is "{ifc}.by_type('IfcCostSchedule')[0].id()"
|
||||
And I press "bim.enable_editing_cost_items(cost_schedule={cost_schedule})"
|
||||
And I press "bim.add_summary_cost_item()"
|
||||
And the variable "cost_item" is "{ifc}.by_type('IfcCostItem')[0].id()"
|
||||
And I press "bim.enable_editing_cost_item_values(cost_item={cost_item})"
|
||||
And I set "scene.BIMCostProperties.cost_types" to "FIXED"
|
||||
And I press "bim.add_cost_value(parent={cost_item}, cost_type='FIXED')"
|
||||
And the variable "cost_value" is "{ifc}.by_type('IfcCostValue')[0].id()"
|
||||
And I press "bim.enable_editing_cost_item_value(cost_value={cost_value})"
|
||||
When I press "bim.edit_cost_value(cost_value={cost_value})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable editing cost item value formula
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_cost_schedule"
|
||||
And the variable "cost_schedule" is "{ifc}.by_type('IfcCostSchedule')[0].id()"
|
||||
And I press "bim.enable_editing_cost_items(cost_schedule={cost_schedule})"
|
||||
And I press "bim.add_summary_cost_item()"
|
||||
And the variable "cost_item" is "{ifc}.by_type('IfcCostItem')[0].id()"
|
||||
And I press "bim.enable_editing_cost_item_values(cost_item={cost_item})"
|
||||
And I set "scene.BIMCostProperties.cost_types" to "FIXED"
|
||||
And I press "bim.add_cost_value(parent={cost_item}, cost_type='FIXED')"
|
||||
And the variable "cost_value" is "{ifc}.by_type('IfcCostValue')[0].id()"
|
||||
When I press "bim.enable_editing_cost_item_value_formula(cost_value={cost_value})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit cost item value formula
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_cost_schedule"
|
||||
And the variable "cost_schedule" is "{ifc}.by_type('IfcCostSchedule')[0].id()"
|
||||
And I press "bim.enable_editing_cost_items(cost_schedule={cost_schedule})"
|
||||
And I press "bim.add_summary_cost_item()"
|
||||
And the variable "cost_item" is "{ifc}.by_type('IfcCostItem')[0].id()"
|
||||
And I press "bim.enable_editing_cost_item_values(cost_item={cost_item})"
|
||||
And I set "scene.BIMCostProperties.cost_types" to "FIXED"
|
||||
And I press "bim.add_cost_value(parent={cost_item}, cost_type='FIXED')"
|
||||
And the variable "cost_value" is "{ifc}.by_type('IfcCostValue')[0].id()"
|
||||
And I press "bim.enable_editing_cost_item_value_formula(cost_value={cost_value})"
|
||||
And I set "scene.BIMCostProperties.cost_value_formula" to "3 + 2"
|
||||
When I press "bim.edit_cost_value_formula(cost_value={cost_value})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add cost column
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_cost_schedule"
|
||||
And I set "scene.BIMCostProperties.should_show_column_ui" to "True"
|
||||
And I set "scene.BIMCostProperties.cost_column" to "Foobar"
|
||||
When I press "bim.add_cost_column(name='Foobar')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Remove cost column
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_cost_schedule"
|
||||
And I set "scene.BIMCostProperties.should_show_column_ui" to "True"
|
||||
And I set "scene.BIMCostProperties.cost_column" to "Foobar"
|
||||
And I press "bim.add_cost_column(name='Foobar')"
|
||||
When I press "bim.remove_cost_column(name='Foobar')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Assign cost item quantity - count based
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_cost_schedule"
|
||||
And the variable "cost_schedule" is "{ifc}.by_type('IfcCostSchedule')[0].id()"
|
||||
And I press "bim.enable_editing_cost_items(cost_schedule={cost_schedule})"
|
||||
And I press "bim.add_summary_cost_item()"
|
||||
And the variable "cost_item" is "{ifc}.by_type('IfcCostItem')[0].id()"
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
When I press "bim.assign_cost_item_quantity(cost_item={cost_item}, related_object_type='PRODUCT', prop_name='')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Assign cost item quantity - quantity based
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_cost_schedule"
|
||||
And the variable "cost_schedule" is "{ifc}.by_type('IfcCostSchedule')[0].id()"
|
||||
And I press "bim.enable_editing_cost_items(cost_schedule={cost_schedule})"
|
||||
And I press "bim.add_summary_cost_item()"
|
||||
And the variable "cost_item" is "{ifc}.by_type('IfcCostItem')[0].id()"
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
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.add_qto(obj='IfcWall/Cube', obj_type='Object')"
|
||||
And I press "bim.perform_quantity_take_off"
|
||||
When I press "bim.assign_cost_item_quantity(cost_item={cost_item}, related_object_type='PRODUCT', prop_name='NetVolume')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Unassign cost item quantity - selection based
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_cost_schedule"
|
||||
And the variable "cost_schedule" is "{ifc}.by_type('IfcCostSchedule')[0].id()"
|
||||
And I press "bim.enable_editing_cost_items(cost_schedule={cost_schedule})"
|
||||
And I press "bim.add_summary_cost_item()"
|
||||
And the variable "cost_item" is "{ifc}.by_type('IfcCostItem')[0].id()"
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
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_cost_item_quantity(cost_item={cost_item}, related_object_type='PRODUCT', prop_name='')"
|
||||
When I press "bim.unassign_cost_item_quantity(cost_item={cost_item}, related_object=0)"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Unassign cost item quantity - explicit object
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_cost_schedule"
|
||||
And the variable "cost_schedule" is "{ifc}.by_type('IfcCostSchedule')[0].id()"
|
||||
And I press "bim.enable_editing_cost_items(cost_schedule={cost_schedule})"
|
||||
And I press "bim.add_summary_cost_item()"
|
||||
And the variable "cost_item" is "{ifc}.by_type('IfcCostItem')[0].id()"
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
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_cost_item_quantity(cost_item={cost_item}, related_object_type='PRODUCT', prop_name='')"
|
||||
And the variable "wall" is "{ifc}.by_type('IfcWall')[0].id()"
|
||||
When I press "bim.unassign_cost_item_quantity(cost_item={cost_item}, related_object={wall})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Select cost item products
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_cost_schedule"
|
||||
And the variable "cost_schedule" is "{ifc}.by_type('IfcCostSchedule')[0].id()"
|
||||
And I press "bim.enable_editing_cost_items(cost_schedule={cost_schedule})"
|
||||
And I press "bim.add_summary_cost_item()"
|
||||
And the variable "cost_item" is "{ifc}.by_type('IfcCostItem')[0].id()"
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
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_cost_item_quantity(cost_item={cost_item}, related_object_type='PRODUCT', prop_name='')"
|
||||
When I press "bim.select_cost_item_products(cost_item={cost_item})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Select Cost Schedule Products
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_cost_schedule"
|
||||
And the variable "cost_schedule" is "{ifc}.by_type('IfcCostSchedule')[0].id()"
|
||||
And I press "bim.enable_editing_cost_items(cost_schedule={cost_schedule})"
|
||||
And I press "bim.add_summary_cost_item()"
|
||||
And the variable "cost_item" is "{ifc}.by_type('IfcCostItem')[0].id()"
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
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_cost_item_quantity(cost_item={cost_item}, related_object_type='PRODUCT', prop_name='')"
|
||||
When I press "bim.select_cost_schedule_products(cost_schedule={cost_schedule})"
|
||||
Then nothing happens
|
||||
Scenario: Load Cost Item Types
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_cost_schedule"
|
||||
And the variable "cost_schedule" is "{ifc}.by_type('IfcCostSchedule')[0].id()"
|
||||
And I press "bim.enable_editing_cost_items(cost_schedule={cost_schedule})"
|
||||
And I press "bim.add_summary_cost_item()"
|
||||
And the variable "cost_item" is "{ifc}.by_type('IfcCostItem')[0].id()"
|
||||
When I press "bim.add_cost_item(cost_item={cost_item})"
|
||||
And I press "bim.load_cost_item_types"
|
||||
Then nothing happens
|
||||
@@ -0,0 +1,43 @@
|
||||
@covering
|
||||
Feature: Covering
|
||||
Covers covering tool.
|
||||
|
||||
Scenario: Execute generate flooring coverings from walls
|
||||
Given an empty IFC project
|
||||
And I load the demo construction library
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcWallType"
|
||||
And the variable "element_type" is "[e for e in {ifc}.by_type('IfcWallType') if e.Name == 'WAL100'][0].id()"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{element_type}"
|
||||
# 1st wall
|
||||
And I press "bim.add_constr_type_instance"
|
||||
And the object "IfcWall/Wall" is selected
|
||||
And I press "bim.change_layer_length(length=3.6)"
|
||||
# 2nd wall
|
||||
And the cursor is at "3.6,0.1,3"
|
||||
And I set "scene.BIMModelProperties.length" to "2.0"
|
||||
And I press "bim.add_constr_type_instance"
|
||||
# 3rd wall
|
||||
And the cursor is at "3.5,2.1,3"
|
||||
And I set "scene.BIMModelProperties.length" to "3.5"
|
||||
And I press "bim.add_constr_type_instance"
|
||||
# 4th wall
|
||||
And the cursor is at "0,2.0,0"
|
||||
And I set "scene.BIMModelProperties.length" to "1.9"
|
||||
And I press "bim.add_constr_type_instance"
|
||||
# add_instance_flooring_coverings_from_walls is expecting FLOORING predefined type.
|
||||
And the object "IfcCoveringType/COV30" is selected
|
||||
And I press "bim.enable_editing_attributes(obj='IfcCoveringType/COV30')"
|
||||
And I set "active_object.BIMAttributeProperties.attributes[6].enum_value" to "FLOORING"
|
||||
And I press "bim.edit_attributes(obj='IfcCoveringType/COV30')"
|
||||
# Run the operator.
|
||||
When the object "IfcWall/Wall" is selected
|
||||
And additionally the object "IfcWall/Wall.001" is selected
|
||||
And additionally the object "IfcWall/Wall.002" is selected
|
||||
And additionally the object "IfcWall/Wall.003" is selected
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcCoveringType"
|
||||
And the variable "element_type" is "[e for e in {ifc}.by_type('IfcCoveringType') if e.Name == 'COV30'][0].id()"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{element_type}"
|
||||
And I press "bim.add_instance_flooring_coverings_from_walls"
|
||||
Then the object "IfcCovering/Covering0" exists
|
||||
And the object "IfcCovering/Covering0" is at "1.8,1.05,0.0"
|
||||
And the object "IfcCovering/Covering0" dimensions are "3.4,1.9,0.03"
|
||||
@@ -0,0 +1,28 @@
|
||||
@debug
|
||||
Feature: Debug
|
||||
|
||||
Scenario: Select express file
|
||||
Given an empty Blender session
|
||||
When I press "bim.select_express_file(filepath='{cwd}/test/files/test.exp')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Parse express
|
||||
Given an empty Blender session
|
||||
And I press "bim.select_express_file(filepath='{cwd}/test/files/test.exp')"
|
||||
When I press "bim.parse_express"
|
||||
And I evaluate expression "os.remove('{cwd}/test/files/test.exp.cache.dat')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Use the inspector - inspect from STEP ID
|
||||
Given an empty Blender session
|
||||
And I press "bim.create_project"
|
||||
When I set "scene.BIMDebugProperties.active_step_id" to "1"
|
||||
And I press "bim.inspect_from_step_id(step_id=1)"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Use the inspector - inspect from object
|
||||
Given an empty Blender session
|
||||
And I press "bim.create_project"
|
||||
When the object "IfcProject/My Project" is selected
|
||||
And I press "bim.inspect_from_object"
|
||||
Then nothing happens
|
||||
@@ -0,0 +1,48 @@
|
||||
# ############################################################################ #
|
||||
|
||||
# Hey there! Welcome to the BlenderBIM Add-on code. Please feel free to reach
|
||||
# out if you have any questions or need further guidance. Happy hacking!
|
||||
|
||||
# ############################################################################ #
|
||||
|
||||
# Note: these tests are commented out as they are for learning purposes only. If
|
||||
# you want to run these tests, uncomment it :)
|
||||
|
||||
#|# This allows us to write full integration tests that test how all systems work
|
||||
#|# as a whole. Whilst other tests focus on portions of the software, these tests
|
||||
#|# simulate what happens when a user opens Blender, presses buttons, and does
|
||||
#|# things.
|
||||
#|
|
||||
#|# These tests read like english. You can see all the possible sentences defined
|
||||
#|# in test_feature.py. Most of the time, there is already a sentence defined for
|
||||
#|# what you want to test.
|
||||
#|
|
||||
#|@demo
|
||||
#|Feature: Demo
|
||||
#|
|
||||
#|# Every operator has at least one scenario associated with it to test it.
|
||||
#|Scenario: Demonstrate hello world
|
||||
#| Given an empty IFC project
|
||||
#| When I press "bim.demonstrate_hello_world"
|
||||
#| # Blender doesn't have a way of testing that things are visible in the
|
||||
#| # interface and layout. We can check properties, and what's in the 3D
|
||||
#| # scenegraph, but not layout. There is no "DOM" like in web applications.
|
||||
#| # Too bad, we can't check the results, but we still write the test, that way
|
||||
#| # we can still check for errors like crashes or Python errors, like a "smoke
|
||||
#| # test".
|
||||
#| Then nothing happens
|
||||
#|
|
||||
#|# This operator has two scenarios because there are two possibilities of a user
|
||||
#|# interacting with it.
|
||||
#|Scenario: Demonstrate rename project - with a name provided
|
||||
#| Given an empty IFC project
|
||||
#| When I set "scene.BIMDemoProperties.name" to "Foobar"
|
||||
#| And I press "bim.demonstrate_rename_project"
|
||||
#| Then the object "IfcProject/Foobar" is an "IfcProject"
|
||||
#|
|
||||
#|# This is the other possible scenario for the rename project operator.
|
||||
#|Scenario: Demonstrate rename project - with no name
|
||||
#| Given an empty IFC project
|
||||
#| When I set "scene.BIMDemoProperties.name" to ""
|
||||
#| And I press "bim.demonstrate_rename_project"
|
||||
#| Then the object "IfcProject/My Project" is an "IfcProject"
|
||||
@@ -0,0 +1,112 @@
|
||||
@document
|
||||
Feature: Document
|
||||
|
||||
Scenario: Load project documents
|
||||
Given an empty IFC project
|
||||
When I press "bim.load_project_documents"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Load document
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_project_documents"
|
||||
And I press "bim.add_information"
|
||||
And the variable "information" is "{ifc}.by_type('IfcDocumentInformation')[-1].id()"
|
||||
When I press "bim.load_document(document={information})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Load parent document
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_project_documents"
|
||||
And I press "bim.add_information"
|
||||
And the variable "information" is "{ifc}.by_type('IfcDocumentInformation')[-1].id()"
|
||||
And I press "bim.load_document(document={information})"
|
||||
When I press "bim.load_parent_document"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable document editing UI
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_project_documents"
|
||||
When I press "bim.disable_document_editing_ui"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable editing document
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_project_documents"
|
||||
And I press "bim.add_information"
|
||||
And the variable "information" is "{ifc}.by_type('IfcDocumentInformation')[-1].id()"
|
||||
When I press "bim.enable_editing_document(document={information})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable editing document
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_project_documents"
|
||||
And I press "bim.add_information"
|
||||
And the variable "information" is "{ifc}.by_type('IfcDocumentInformation')[-1].id()"
|
||||
And I press "bim.enable_editing_document(document={information})"
|
||||
When I press "bim.disable_editing_document"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add information
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_project_documents"
|
||||
When I press "bim.add_information"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add document reference
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_project_documents"
|
||||
And I press "bim.add_information"
|
||||
And the variable "information" is "{ifc}.by_type('IfcDocumentInformation')[-1].id()"
|
||||
And I press "bim.load_document(document={information})"
|
||||
When I press "bim.add_document_reference"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit document
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_project_documents"
|
||||
And I press "bim.add_information"
|
||||
And the variable "information" is "{ifc}.by_type('IfcDocumentInformation')[-1].id()"
|
||||
And I press "bim.enable_editing_document(document={information})"
|
||||
When I press "bim.edit_document"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Remove document
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_project_documents"
|
||||
And I press "bim.add_information"
|
||||
And the variable "information" is "{ifc}.by_type('IfcDocumentInformation')[-1].id()"
|
||||
When I press "bim.remove_document(document={information})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Assign document
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_project_documents"
|
||||
And I press "bim.add_information"
|
||||
And the variable "information" is "{ifc}.by_type('IfcDocumentInformation')[-1].id()"
|
||||
And I press "bim.load_document(document={information})"
|
||||
And I press "bim.add_document_reference"
|
||||
And the variable "reference" is "{ifc}.by_type('IfcDocumentReference')[-1].id()"
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
When I press "bim.assign_document(document={reference})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Unassign document
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_project_documents"
|
||||
And I press "bim.add_information"
|
||||
And the variable "information" is "{ifc}.by_type('IfcDocumentInformation')[-1].id()"
|
||||
And I press "bim.load_document(document={information})"
|
||||
And I press "bim.add_document_reference"
|
||||
And the variable "reference" is "{ifc}.by_type('IfcDocumentReference')[-1].id()"
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.assign_document(document={reference})"
|
||||
When I press "bim.unassign_document(document={reference})"
|
||||
Then nothing happens
|
||||
@@ -0,0 +1,98 @@
|
||||
@drawing
|
||||
Feature: Drawing
|
||||
|
||||
Scenario: Duplicate drawing
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And the variable "wall1" is "IfcStore.get_file().by_type('IfcWall')[-1].id()"
|
||||
And I press "bim.add_drawing"
|
||||
And the variable "drawing" is "IfcStore.get_file().by_type('IfcAnnotation')[0].id()"
|
||||
When I press "bim.duplicate_drawing(drawing={drawing})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Create drawing
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And the variable "wall1" is "IfcStore.get_file().by_type('IfcWall')[-1].id()"
|
||||
And I press "bim.add_drawing"
|
||||
And the variable "drawing" is "IfcStore.get_file().by_type('IfcAnnotation')[0].id()"
|
||||
And I set "scene.DocProperties.active_drawing_index" to "0"
|
||||
And I press "bim.activate_drawing(drawing={drawing})"
|
||||
When I press "bim.create_drawing"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Create drawing after deleting a duplicated object
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And the variable "wall1" is "IfcStore.get_file().by_type('IfcWall')[-1].id()"
|
||||
And I press "bim.copy_class(obj='IfcWall/Cube')"
|
||||
And the variable "wall2" is "IfcStore.get_file().by_type('IfcWall')[-1].id()"
|
||||
And I press "bim.load_drawings"
|
||||
# And I set "scene.DocProperties.location_hint" to "('My Storey', 'My Storey', '')"
|
||||
And I press "bim.add_drawing"
|
||||
And the variable "drawing" is "IfcStore.get_file().by_type('IfcAnnotation')[0].id()"
|
||||
And I set "scene.DocProperties.active_drawing_index" to "0"
|
||||
And I press "bim.activate_drawing(drawing={drawing})"
|
||||
And I press "bim.create_drawing"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
And I press "object.delete(use_global=False)"
|
||||
When I press "bim.create_drawing"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Remove drawing
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And the variable "wall1" is "IfcStore.get_file().by_type('IfcWall')[-1].id()"
|
||||
And I press "bim.add_drawing"
|
||||
And the variable "drawing" is "IfcStore.get_file().by_type('IfcAnnotation')[0].id()"
|
||||
And the collection "IfcAnnotation/PLAN_VIEW" exists
|
||||
When I press "bim.remove_drawing(drawing={drawing})"
|
||||
Then the collection "IfcAnnotation/PLAN_VIEW" does not exist
|
||||
|
||||
Scenario: Remove drawing - via object deletion
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And the variable "wall1" is "IfcStore.get_file().by_type('IfcWall')[-1].id()"
|
||||
And I press "bim.add_drawing"
|
||||
And the variable "drawing" is "IfcStore.get_file().by_type('IfcAnnotation')[0].id()"
|
||||
And the collection "IfcAnnotation/PLAN_VIEW" exists
|
||||
And the object "IfcAnnotation/PLAN_VIEW" is selected
|
||||
When I press "bim.override_object_delete"
|
||||
Then the collection "IfcAnnotation/PLAN_VIEW" does not exist
|
||||
|
||||
Scenario: Remove drawing - deleting active drawing
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And the variable "wall1" is "IfcStore.get_file().by_type('IfcWall')[-1].id()"
|
||||
And I press "bim.add_drawing"
|
||||
And the variable "drawing" is "IfcStore.get_file().by_type('IfcAnnotation')[0].id()"
|
||||
And the collection "IfcAnnotation/PLAN_VIEW" exists
|
||||
And I set "scene.DocProperties.active_drawing_index" to "0"
|
||||
And I press "bim.activate_drawing(drawing={drawing})"
|
||||
When the object "IfcAnnotation/PLAN_VIEW" is selected
|
||||
And I press "bim.override_object_delete"
|
||||
Then the collection "IfcAnnotation/PLAN_VIEW" does not exist
|
||||
@@ -0,0 +1,611 @@
|
||||
@geometry
|
||||
Feature: Geometry
|
||||
|
||||
Scenario: Edit object placement
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
When I press "bim.edit_object_placement"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add representation
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
Then the object "IfcWall/Cube" data is a "Tessellation" representation of "Model/Body/MODEL_VIEW"
|
||||
When the variable "context" is "[c for c in {ifc}.by_type('IfcGeometricRepresentationSubContext') if c.ContextType == 'Plan' and c.ContextIdentifier == 'Body' and c.TargetView == 'PLAN_VIEW'][0].id()"
|
||||
And I set "active_object.BIMGeometryProperties.contexts" to "{context}"
|
||||
And I press "bim.add_representation"
|
||||
Then the object "IfcWall/Cube" data is a "Annotation2D" representation of "Plan/Body/PLAN_VIEW"
|
||||
|
||||
Scenario: Add representation - add a new representation to a typed instance
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.add_constr_type_instance"
|
||||
And I press "bim.add_constr_type_instance"
|
||||
Then the object "IfcWall/Wall" data is a "Tessellation" representation of "Model/Body/MODEL_VIEW"
|
||||
And the object "IfcWall/Wall.001" data is a "Tessellation" representation of "Model/Body/MODEL_VIEW"
|
||||
When the object "IfcWall/Wall" is selected
|
||||
And the variable "context" is "[c for c in {ifc}.by_type('IfcGeometricRepresentationSubContext') if c.ContextType == 'Plan' and c.ContextIdentifier == 'Body' and c.TargetView == 'PLAN_VIEW'][0].id()"
|
||||
And I set "active_object.BIMGeometryProperties.contexts" to "{context}"
|
||||
And I press "bim.add_representation"
|
||||
Then the object "IfcWall/Wall" data is a "Annotation2D" representation of "Plan/Body/PLAN_VIEW"
|
||||
And the object "IfcWall/Wall.001" data is a "Annotation2D" representation of "Plan/Body/PLAN_VIEW"
|
||||
|
||||
Scenario: Add representation - add a representation with a scale factor applied
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
When the object "Cube" is scaled to "2"
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
Then the object "IfcWall/Cube" has no scale
|
||||
And the object "IfcWall/Cube" dimensions are "4,4,4"
|
||||
|
||||
Scenario: Add representation - add a representation with a scale factor removed due to multiple users
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And I press "object.duplicate_move_linked"
|
||||
And the object "Cube" is selected
|
||||
When the object "Cube" is scaled to "2"
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
Then the object "IfcWall/Cube" has no scale
|
||||
And the object "IfcWall/Cube" dimensions are "2,2,2"
|
||||
|
||||
Scenario: Switch representation
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
When the variable "representation" is "{ifc}.by_type('IfcShapeRepresentation')[0].id()"
|
||||
And I press "bim.switch_representation(obj='IfcWall/Cube', ifc_definition_id={representation})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Switch representation - current edited representation is updated prior to switch
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And the variable "context" is "[c for c in {ifc}.by_type('IfcGeometricRepresentationSubContext') if c.ContextType == 'Plan' and c.ContextIdentifier=='Annotation'][0].id()"
|
||||
And I set "active_object.BIMGeometryProperties.contexts" to "{context}"
|
||||
And I press "bim.add_representation"
|
||||
When the object "IfcWall/Cube" is scaled to "2"
|
||||
And the variable "representation" is "[r for r in {ifc}.by_type('IfcShapeRepresentation') if r.RepresentationType=='Tessellation'][0].id()"
|
||||
And I press "bim.switch_representation(ifc_definition_id={representation}, should_reload=True)"
|
||||
And the variable "representation" is "[r for r in {ifc}.by_type('IfcShapeRepresentation') if r.RepresentationType=='Annotation2D'][0].id()"
|
||||
And I press "bim.switch_representation(ifc_definition_id={representation}, should_reload=True)"
|
||||
When I press "bim.save_project(filepath='{cwd}/test/files/temp/export.ifc')"
|
||||
Then the object "IfcWall/Cube" dimensions are "4,4,0"
|
||||
|
||||
Scenario: Switch representation - current edited representation is discarded if switching to a box
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
When the object "IfcWall/Cube" is scaled to "2"
|
||||
And the variable "representation" is "{ifc}.by_type('IfcShapeRepresentation')[-1].id()"
|
||||
And I press "bim.switch_representation(obj='IfcWall/Cube', ifc_definition_id={representation}, should_reload=True)"
|
||||
And the variable "representation" is "{ifc}.by_type('IfcShapeRepresentation')[0].id()"
|
||||
And I press "bim.switch_representation(obj='IfcWall/Cube', ifc_definition_id={representation}, should_reload=True)"
|
||||
When I press "bim.save_project(filepath='{cwd}/test/files/temp/export.ifc')"
|
||||
Then the object "IfcWall/Cube" dimensions are "2,2,2"
|
||||
|
||||
Scenario: Switch representation - existing Blender modifiers must be purged
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I add an array modifier
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
When the variable "representation" is "{ifc}.by_type('IfcShapeRepresentation')[0].id()"
|
||||
And I press "bim.switch_representation(obj='IfcWall/Cube', ifc_definition_id={representation})"
|
||||
Then the object "IfcWall/Cube" has no modifiers
|
||||
|
||||
Scenario: Remove representation - remove an active representation
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I add an array modifier
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
When the variable "representation_body" is "{ifc}.by_type('IfcShapeRepresentation')[0].id()"
|
||||
And the variable "representation_bbox" is "{ifc}.by_type('IfcShapeRepresentation')[1].id()"
|
||||
And I press "bim.remove_representation(representation_id={representation_body})"
|
||||
And I press "bim.remove_representation(representation_id={representation_bbox})"
|
||||
Then the object "IfcWall/Cube" has no data
|
||||
|
||||
Scenario: Remove representation - remove an unloaded representation
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I add an array modifier
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
When the variable "representation" is "{ifc}.by_type('IfcShapeRepresentation')[1].id()"
|
||||
And I press "bim.remove_representation(representation_id={representation})"
|
||||
Then the object "IfcWall/Cube" has data which is an IFC representation
|
||||
|
||||
Scenario: Remove representation - remove an instanced representation from an active type object
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcWallType"
|
||||
And the variable "cube" is "{ifc}.by_type('IfcWallType')[0].id()"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{cube}"
|
||||
And I press "bim.add_constr_type_instance"
|
||||
And I press "bim.add_constr_type_instance"
|
||||
And the object "IfcWallType/Cube" is selected
|
||||
When the variable "representation_body" is "{ifc}.by_type('IfcWallType')[0].RepresentationMaps[1].MappedRepresentation.id()"
|
||||
And the variable "representation_bbox" is "{ifc}.by_type('IfcWallType')[0].RepresentationMaps[0].MappedRepresentation.id()"
|
||||
And I press "bim.remove_representation(representation_id={representation_body})"
|
||||
And I press "bim.remove_representation(representation_id={representation_bbox})"
|
||||
Then the object "IfcWallType/Cube" has no data
|
||||
Then the object "IfcWall/Wall" has no data
|
||||
Then the object "IfcWall/Wall.001" has no data
|
||||
|
||||
Scenario: Remove representation - remove an instanced representation from an active instance object
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcWallType"
|
||||
And the variable "cube" is "{ifc}.by_type('IfcWallType')[0].id()"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{cube}"
|
||||
And I press "bim.add_constr_type_instance"
|
||||
And I press "bim.add_constr_type_instance"
|
||||
And the object "IfcWall/Wall" is selected
|
||||
When the variable "representation_body" is "{ifc}.by_type('IfcWall')[0].Representation.Representations[1].id()"
|
||||
And the variable "representation_bbox" is "{ifc}.by_type('IfcWall')[0].Representation.Representations[0].id()"
|
||||
And I press "bim.remove_representation(representation_id={representation_body})"
|
||||
And I press "bim.remove_representation(representation_id={representation_bbox})"
|
||||
Then the object "IfcWallType/Cube" has no data
|
||||
Then the object "IfcWall/Wall" has no data
|
||||
Then the object "IfcWall/Wall.001" has no data
|
||||
|
||||
Scenario: Update representation - updating a tessellation
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.update_representation(obj='IfcWall/Cube')"
|
||||
Then the object "IfcWall/Cube" has a "Tessellation" representation of "Model/Body/MODEL_VIEW"
|
||||
|
||||
Scenario: Update representation - updating a layered extrusion
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I add an empty
|
||||
And the object "Empty" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.add_material()"
|
||||
And I set "active_object.BIMObjectMaterialProperties.material_type" to "IfcMaterialLayerSet"
|
||||
And I press "bim.assign_material"
|
||||
And I press "bim.enable_editing_assigned_material"
|
||||
And the variable "layer_set" is "{ifc}.by_type("IfcMaterialLayerSet")[0].id()"
|
||||
And I press "bim.add_layer(layer_set={layer_set})"
|
||||
And the variable "layer" is "{ifc}.by_type("IfcMaterialLayer")[0].id()"
|
||||
And I press "bim.enable_editing_material_set_item(material_set_item={layer})"
|
||||
And I set "active_object.BIMObjectMaterialProperties.material_set_item_attributes[0].float_value" to "0.1"
|
||||
And I press "bim.edit_material_set_item(material_set_item={layer})"
|
||||
And I press "bim.edit_assigned_material(material_set={layer_set})"
|
||||
And the variable "type" is "{ifc}.by_type('IfcWallType')[0].id()"
|
||||
And I press "bim.assign_type(relating_type={type}, related_object='IfcWall/Cube')"
|
||||
When I press "bim.update_representation(obj='IfcWall/Cube')"
|
||||
Then the object "IfcWall/Cube" has a "SweptSolid" representation of "Model/Body/MODEL_VIEW"
|
||||
|
||||
Scenario: Update representation - updating a profiled extrusion
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I add an empty
|
||||
And the object "Empty" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.add_material()"
|
||||
And I set "active_object.BIMObjectMaterialProperties.material_type" to "IfcMaterialProfileSet"
|
||||
And I press "bim.assign_material"
|
||||
And I press "bim.enable_editing_assigned_material"
|
||||
And I press "bim.add_profile_def"
|
||||
And the variable "profile_set" is "{ifc}.by_type("IfcMaterialProfileSet")[0].id()"
|
||||
And I press "bim.add_profile(profile_set={profile_set})"
|
||||
And I press "bim.edit_assigned_material(material_set={profile_set})"
|
||||
And the variable "type" is "{ifc}.by_type('IfcWallType')[0].id()"
|
||||
And I press "bim.assign_type(relating_type={type}, related_object='IfcWall/Cube')"
|
||||
Then the object "IfcWall/Cube" has a "SweptSolid" representation of "Model/Body/MODEL_VIEW"
|
||||
|
||||
Scenario: Get representation IFC parameters
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.update_representation(ifc_representation_class='IfcExtrudedAreaSolid/IfcRectangleProfileDef')"
|
||||
When I press "bim.get_representation_ifc_parameters"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Copy representation
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I press "bim.assign_class"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
And additionally the object "IfcWall/Cube.001" is selected
|
||||
When I press "bim.copy_representation"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Override delete - without active IFC data
|
||||
Given an empty Blender session
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
When I press "bim.override_object_delete"
|
||||
Then the object "Cube" does not exist
|
||||
|
||||
Scenario: Override delete - with active IFC data
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
When I press "bim.override_object_delete"
|
||||
Then the object "IfcWall/Cube" does not exist
|
||||
|
||||
Scenario: Override outliner delete
|
||||
Given an untestable scenario
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Override duplicate move - without active IFC data
|
||||
Given an empty Blender session
|
||||
And I add a cube
|
||||
And I add an empty
|
||||
And the object "Cube" is selected
|
||||
And additionally the object "Empty" is selected
|
||||
When I duplicate the selected objects
|
||||
Then the object "Cube" exists
|
||||
And the object "Cube.001" exists
|
||||
|
||||
Scenario: Override duplicate move - with active IFC data
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
And additionally the object "IfcBuildingStorey/My Storey" is selected
|
||||
When I duplicate the selected objects
|
||||
Then the object "IfcWall/Cube" exists
|
||||
And the object "IfcWall/Cube" is an "IfcWall"
|
||||
And the object "IfcWall/Cube.001" exists
|
||||
And the object "IfcWall/Cube.001" is an "IfcWall"
|
||||
And the object "IfcWall/Cube.001" has a "Tessellation" representation of "Model/Body/MODEL_VIEW"
|
||||
And the object "IfcBuildingStorey/My Storey.001" exists
|
||||
And the object "IfcBuildingStorey/My Storey.001" is an "IfcBuildingStorey"
|
||||
|
||||
Scenario: Override duplicate move - copying a coloured representation
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
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.load_styles(style_type='IfcSurfaceStyle')"
|
||||
And I press "bim.enable_adding_presentation_style"
|
||||
And I set "scene.BIMStylesProperties.style_name" to "Style"
|
||||
And I set "scene.BIMStylesProperties.surface_colour" to "[1.0,0.0,0.0]"
|
||||
And I press "bim.add_presentation_style"
|
||||
And the variable "style" is "{ifc}.by_type('IfcSurfaceStyle')[0].id()"
|
||||
And I press "bim.assign_style_to_selected(style_id={style})"
|
||||
When I duplicate the selected objects
|
||||
And I press "bim.save_project(filepath='{cwd}/test/files/temp/export.ifc')"
|
||||
And an empty Blender session is started
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/temp/export.ifc', should_start_fresh_session=False)"
|
||||
Then the material "Style" colour is "1,0,0,1"
|
||||
And the object "IfcWall/Cube" has the material "Style"
|
||||
And the object "IfcWall/Cube.001" has the material "Style"
|
||||
|
||||
Scenario: Override duplicate move - copying a type instance with a representation map
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcWallType"
|
||||
And the variable "cube" is "{ifc}.by_type('IfcWallType')[0].id()"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{cube}"
|
||||
And I press "bim.add_constr_type_instance"
|
||||
And the object "IfcWall/Wall" is selected
|
||||
When I duplicate the selected objects
|
||||
Then the object "IfcWall/Wall.001" exists
|
||||
And the object "IfcWall/Wall.001" has a "MappedRepresentation" representation of "Model/Body/MODEL_VIEW"
|
||||
|
||||
Scenario: Override duplicate move - copying a layered extrusion
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I add an empty
|
||||
And the object "Empty" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.add_material()"
|
||||
And I set "active_object.BIMObjectMaterialProperties.material_type" to "IfcMaterialLayerSet"
|
||||
And I press "bim.assign_material"
|
||||
And I press "bim.enable_editing_assigned_material"
|
||||
And the variable "layer_set" is "{ifc}.by_type("IfcMaterialLayerSet")[0].id()"
|
||||
And I press "bim.add_layer(layer_set={layer_set})"
|
||||
And the variable "layer" is "{ifc}.by_type("IfcMaterialLayer")[0].id()"
|
||||
And I press "bim.enable_editing_material_set_item(material_set_item={layer})"
|
||||
And I set "active_object.BIMObjectMaterialProperties.material_set_item_attributes[0].float_value" to "0.1"
|
||||
And I press "bim.edit_material_set_item(material_set_item={layer})"
|
||||
And I press "bim.edit_assigned_material(material_set={layer_set})"
|
||||
And the variable "type" is "{ifc}.by_type('IfcWallType')[0].id()"
|
||||
And I press "bim.assign_type(relating_type={type}, related_object='IfcWall/Cube')"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
When I duplicate the selected objects
|
||||
Then the object "IfcWall/Cube.001" exists
|
||||
Then the object "IfcWall/Cube.001" has a "SweptSolid" representation of "Model/Body/MODEL_VIEW"
|
||||
|
||||
Scenario: Override duplicate move - copying a profiled extrusion
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I add an empty
|
||||
And the object "Empty" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.add_material()"
|
||||
And I set "active_object.BIMObjectMaterialProperties.material_type" to "IfcMaterialProfileSet"
|
||||
And I press "bim.assign_material"
|
||||
And I press "bim.enable_editing_assigned_material"
|
||||
And I press "bim.add_profile_def"
|
||||
And the variable "profile_set" is "{ifc}.by_type("IfcMaterialProfileSet")[0].id()"
|
||||
And I press "bim.add_profile(profile_set={profile_set})"
|
||||
And I press "bim.edit_assigned_material(material_set={profile_set})"
|
||||
And the variable "type" is "{ifc}.by_type('IfcWallType')[0].id()"
|
||||
And I press "bim.assign_type(relating_type={type}, related_object='IfcWall/Cube')"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
When I duplicate the selected objects
|
||||
Then the object "IfcWall/Cube.001" exists
|
||||
Then the object "IfcWall/Cube.001" has a "SweptSolid" representation of "Model/Body/MODEL_VIEW"
|
||||
|
||||
Scenario: Override duplicate move - copying an aggregate
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
When I press "bim.add_aggregate(aggregate_name='Assembly')"
|
||||
When the object "IfcWall/Cube" is selected
|
||||
And additionally the object "IfcElementAssembly/Assembly" is selected
|
||||
When I duplicate the selected objects
|
||||
Then the object "IfcWall/Cube.001" exists
|
||||
And the object "IfcElementAssembly/Assembly.001" exists
|
||||
And the object "IfcWall/Cube.001" is aggregated by object "IfcElementAssembly/Assembly.001"
|
||||
And the object "IfcElementAssembly/Assembly.001" is contained in object "IfcBuildingStorey/My Storey"
|
||||
|
||||
Scenario: Override duplicate move - copying objects with connection
|
||||
Given an empty IFC project
|
||||
And I load the demo construction library
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcWallType"
|
||||
And the variable "element_type" is "[e for e in {ifc}.by_type('IfcWallType') if e.Name == 'WAL100'][0].id()"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{element_type}"
|
||||
When I press "bim.add_constr_type_instance"
|
||||
Then the object "IfcWall/Wall" is an "IfcWall"
|
||||
And the object "IfcWall/Wall" dimensions are "1,0.1,3"
|
||||
And the object "IfcWall/Wall" bottom left corner is at "0,0,0"
|
||||
When I set "scene.BIMModelProperties.ifc_class" to "IfcSlabType"
|
||||
And the variable "element_type" is "[e for e in {ifc}.by_type('IfcSlabType') if e.Name == 'FLR200'][0].id()"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{element_type}"
|
||||
When I press "bim.add_constr_type_instance"
|
||||
Then the object "IfcSlab/Slab" is an "IfcSlab"
|
||||
When the object "IfcSlab/Slab" is selected
|
||||
And the object "IfcSlab/Slab" is moved to "0,0,4"
|
||||
When I deselect all objects
|
||||
And the object "IfcWall/Wall" is selected
|
||||
And additionally the object "IfcSlab/Slab" is selected
|
||||
When I press "bim.hotkey(hotkey='S_E')"
|
||||
Then the object "IfcWall/Wall" dimensions are "1,0.1,4"
|
||||
When I duplicate the selected objects
|
||||
Then the object "IfcWall/Wall.001" exists
|
||||
And the variable "wall_name" is "[o.name for o in bpy.context.selected_objects if o.name == 'IfcWall/Wall.001'][0]"
|
||||
Then the object "IfcSlab/Slab.001" exists
|
||||
And the variable "slab_name" is "[o.name for o in bpy.context.selected_objects if o.name == 'IfcSlab/Slab.001'][0]"
|
||||
Then the object "{wall_name}" has a connection with "{slab_name}"
|
||||
|
||||
Scenario: Override duplicate move - copying walls with mitre joint
|
||||
Given an empty IFC project
|
||||
And I load the demo construction library
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcWallType"
|
||||
And the variable "element_type" is "[e for e in {ifc}.by_type('IfcWallType') if e.Name == 'WAL100'][0].id()"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{element_type}"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And the cursor is at "0.5,0,0"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And the object "IfcWall/Wall.001" is selected
|
||||
And additionally the object "IfcWall/Wall" is selected
|
||||
When I press "bim.hotkey(hotkey='S_Y')"
|
||||
Then the object "IfcWall/Wall" dimensions are "0.5,0.1,3"
|
||||
And the object "IfcWall/Wall" bottom left corner is at "0.5,0,0"
|
||||
And the object "IfcWall/Wall.001" dimensions are "1.1,0.1,3"
|
||||
And the object "IfcWall/Wall.001" bottom left corner is at "0.5,0.1,0"
|
||||
And the object "IfcWall/Wall.001" top right corner is at "0.6,-1,3"
|
||||
When I deselect all objects
|
||||
And the object "IfcWall/Wall.001" is selected
|
||||
And additionally the object "IfcWall/Wall" is selected
|
||||
When I duplicate the selected objects
|
||||
Then the object "IfcWall/Wall.002" exists
|
||||
And the variable "wall_name1" is "[o.name for o in bpy.context.selected_objects if o.name == 'IfcWall/Wall.002'][0]"
|
||||
Then the object "IfcWall/Wall.003" exists
|
||||
And the variable "wall_name2" is "[o.name for o in bpy.context.selected_objects if o.name == 'IfcWall/Wall.003'][0]"
|
||||
Then the object "{wall_name1}" has a connection with "{wall_name2}"
|
||||
|
||||
Scenario: Override duplicate move linked - without active IFC data
|
||||
Given an empty Blender session
|
||||
And I add a cube
|
||||
And I add an empty
|
||||
And the object "Cube" is selected
|
||||
And additionally the object "Empty" is selected
|
||||
When I press "object.duplicate_move_linked"
|
||||
Then the object "Cube" exists
|
||||
And the object "Cube.001" exists
|
||||
|
||||
Scenario: Override duplicate move linked - with active IFC data
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
And additionally the object "IfcBuildingStorey/My Storey" is selected
|
||||
When I press "object.duplicate_move_linked"
|
||||
Then the object "IfcWall/Cube" exists
|
||||
And the object "IfcWall/Cube" is an "IfcWall"
|
||||
And the object "IfcWall/Cube.001" exists
|
||||
And the object "IfcWall/Cube.001" is an "IfcWall"
|
||||
And the object "IfcWall/Cube.001" has a "Tessellation" representation of "Model/Body/MODEL_VIEW"
|
||||
And the object "IfcBuildingStorey/My Storey.001" exists
|
||||
And the object "IfcBuildingStorey/My Storey.001" is an "IfcBuildingStorey"
|
||||
|
||||
Scenario: Override paste buffer - without active IFC data
|
||||
Given an empty Blender session
|
||||
And I add a cube
|
||||
And I add an empty
|
||||
And the object "Cube" is selected
|
||||
And additionally the object "Empty" is selected
|
||||
When I press "view3d.copybuffer"
|
||||
And I press "bim.override_paste_buffer"
|
||||
Then the object "Cube" exists
|
||||
And the object "Cube.001" exists
|
||||
|
||||
Scenario: Override paste buffer - with active IFC data
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
And additionally the object "IfcBuildingStorey/My Storey" is selected
|
||||
When I press "view3d.copybuffer"
|
||||
# IFC elements unlinked on paste for safety
|
||||
And I press "bim.override_paste_buffer"
|
||||
Then the object "IfcWall/Cube" exists
|
||||
And the object "IfcWall/Cube" is an "IfcWall"
|
||||
And the object "Cube.001" exists
|
||||
And the object "Cube.001" is not an IFC element
|
||||
And the object "My Storey.001" exists
|
||||
And the object "My Storey.001" is not an IFC element
|
||||
|
||||
Scenario: Duplicate linked aggregate
|
||||
Given I load the IFC test file "/test/files/linked-aggregates.ifc"
|
||||
And the object "IfcWall/Wall_01" is selected
|
||||
When I duplicate linked aggregate the selected objects
|
||||
Then the object "IfcWall/Wall_01.001" exists
|
||||
And the object "IfcWall/Wall_02.001" exists
|
||||
And the object "IfcElementAssembly/Assembly_01" exists
|
||||
Then the object "IfcElementAssembly/Assembly" and "IfcElementAssembly/Assembly_01" belong to the same Linked Aggregate Group
|
||||
|
||||
Scenario: Refresh linked aggregate
|
||||
Given I load the IFC test file "/test/files/linked-aggregates.ifc"
|
||||
And the object "IfcWall/Wall_01" is selected
|
||||
When I duplicate linked aggregate the selected objects
|
||||
Then the object "IfcWall/Wall_01.001" exists
|
||||
When I deselect all objects
|
||||
And the object "IfcWall/Wall_01.001" is selected
|
||||
When the object layer length is set to "3"
|
||||
Then the object "IfcWall/Wall_01.001" dimensions are "3,0.1,3"
|
||||
When I refresh linked aggregate the selected object
|
||||
Then the object "IfcWall/Wall_01" exists
|
||||
And the object "IfcWall/Wall_01" dimensions are "3,0.1,3"
|
||||
|
||||
Scenario: Refresh linked aggregate - after deleting an object
|
||||
Given I load the IFC test file "/test/files/linked-aggregates.ifc"
|
||||
And the object "IfcWall/Wall_01" is selected
|
||||
When I duplicate linked aggregate the selected objects
|
||||
Then the object "IfcWall/Wall_01.001" exists
|
||||
When I deselect all objects
|
||||
And the object "IfcWall/Wall_01.001" is selected
|
||||
And I delete the selected objects
|
||||
When I deselect all objects
|
||||
And the object "IfcWall/Wall_02.001" is selected
|
||||
When I refresh linked aggregate the selected object
|
||||
Then the object "IfcWall/Wall_01" does not exist
|
||||
And the object "IfcWall/Wall_02" exists
|
||||
|
||||
Scenario: Refresh linked aggregate - after duplicating an object
|
||||
Given I load the IFC test file "/test/files/linked-aggregates.ifc"
|
||||
And the object "IfcWall/Wall_01" is selected
|
||||
When I duplicate linked aggregate the selected objects
|
||||
Then the object "IfcWall/Wall_01.001" exists
|
||||
And the object "IfcWall/Wall_02.001" exists
|
||||
When I deselect all objects
|
||||
And the object "IfcWall/Wall_01" is selected
|
||||
When I duplicate the selected objects
|
||||
Then the object "IfcWall/Wall_01.002" exists
|
||||
When I rename the object "IfcWall/Wall_01.002" to "IfcWall/Wall_03"
|
||||
And I deselect all objects
|
||||
And the object "IfcWall/Wall_03" is selected
|
||||
When I refresh linked aggregate the selected object
|
||||
Then the object "IfcWall/Wall_01.001" exists
|
||||
And the object "IfcWall/Wall_02.001" exists
|
||||
And the object "IfcWall/Wall_03.001" exists
|
||||
@@ -0,0 +1,68 @@
|
||||
@georeference
|
||||
Feature: Georeference
|
||||
|
||||
Scenario: Add georeferencing
|
||||
Given an empty IFC project
|
||||
And I look at the "Georeferencing" panel
|
||||
And I see "Not Georeferenced"
|
||||
And I don't see "Projected CRS"
|
||||
When I click "ADD"
|
||||
Then I see "Projected CRS"
|
||||
And I see "EPSG:3857"
|
||||
|
||||
Scenario: Enable editing georeferencing
|
||||
Given an empty IFC project
|
||||
And I look at the "Georeferencing" panel
|
||||
And I click "ADD"
|
||||
When I click "GREASEPENCIL"
|
||||
Then I see the "Name" property
|
||||
|
||||
Scenario: Remove georeferencing
|
||||
Given an empty IFC project
|
||||
And I look at the "Georeferencing" panel
|
||||
And I click "ADD"
|
||||
When I click "X"
|
||||
Then I see "Not Georeferenced"
|
||||
|
||||
Scenario: Edit georeferencing
|
||||
Given an empty IFC project
|
||||
And I look at the "Georeferencing" panel
|
||||
And I click "ADD"
|
||||
And I click "GREASEPENCIL"
|
||||
When I click "CHECKMARK"
|
||||
Then I don't see the "Name" property
|
||||
And I see "EPSG:3857"
|
||||
|
||||
Scenario: Disable editing georeferencing
|
||||
Given an empty IFC project
|
||||
And I look at the "Georeferencing" panel
|
||||
And I click "ADD"
|
||||
And I click "GREASEPENCIL"
|
||||
When I click "CANCEL"
|
||||
Then I don't see the "Name" property
|
||||
And I see "EPSG:3857"
|
||||
|
||||
Scenario: Get cursor location
|
||||
Given an empty IFC project
|
||||
And I look at the "Georeferencing Calculator" panel
|
||||
And I see the "Local (mm)" property is "0,0,0"
|
||||
And I see the "Map (n/a)" property is "0,0,0"
|
||||
When I click "TRACKER"
|
||||
Then I see the "Local (mm)" property is "0.0,0.0,0.0"
|
||||
And I see the "Map (n/a)" property is "0.0,0.0,0.0"
|
||||
|
||||
Scenario: Convert local to map
|
||||
Given an empty IFC project
|
||||
And I look at the "Georeferencing Calculator" panel
|
||||
And I see the "Map (n/a)" property is "0,0,0"
|
||||
When I set the "Local (mm)" property to "0,0,0"
|
||||
And I look at the "Georeferencing Calculator" panel
|
||||
Then I see the "Map (n/a)" property is "0.0,0.0,0.0"
|
||||
|
||||
Scenario: Convert map to local
|
||||
Given an empty IFC project
|
||||
And I look at the "Georeferencing Calculator" panel
|
||||
And I see the "Local (mm)" property is "0,0,0"
|
||||
When I set the "Map (n/a)" property to "0,0,0"
|
||||
And I look at the "Georeferencing Calculator" panel
|
||||
Then I see the "Local (mm)" property is "0.0,0.0,0.0"
|
||||
@@ -0,0 +1,138 @@
|
||||
@library
|
||||
Feature: Library
|
||||
|
||||
Scenario: Add library
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_library"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Remove library
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_library"
|
||||
And the variable "library" is "{ifc}.by_type('IfcLibraryInformation')[-1].id()"
|
||||
When I press "bim.remove_library(library={library})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable editing library references
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_library"
|
||||
And the variable "library" is "{ifc}.by_type('IfcLibraryInformation')[-1].id()"
|
||||
When I press "bim.enable_editing_library_references(library={library})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable editing library references
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_library"
|
||||
And the variable "library" is "{ifc}.by_type('IfcLibraryInformation')[-1].id()"
|
||||
And I press "bim.enable_editing_library_references(library={library})"
|
||||
When I press "bim.disable_editing_library_references"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable editing library
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_library"
|
||||
And the variable "library" is "{ifc}.by_type('IfcLibraryInformation')[-1].id()"
|
||||
And I press "bim.enable_editing_library_references(library={library})"
|
||||
When I press "bim.enable_editing_library"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable editing library
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_library"
|
||||
And the variable "library" is "{ifc}.by_type('IfcLibraryInformation')[-1].id()"
|
||||
And I press "bim.enable_editing_library_references(library={library})"
|
||||
And I press "bim.enable_editing_library"
|
||||
When I press "bim.disable_editing_library"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit library
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_library"
|
||||
And the variable "library" is "{ifc}.by_type('IfcLibraryInformation')[-1].id()"
|
||||
And I press "bim.enable_editing_library_references(library={library})"
|
||||
And I press "bim.enable_editing_library"
|
||||
When I press "bim.edit_library"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add library reference
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_library"
|
||||
And the variable "library" is "{ifc}.by_type('IfcLibraryInformation')[-1].id()"
|
||||
And I press "bim.enable_editing_library_references(library={library})"
|
||||
When I press "bim.add_library_reference"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Remove library reference
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_library"
|
||||
And the variable "library" is "{ifc}.by_type('IfcLibraryInformation')[-1].id()"
|
||||
And I press "bim.enable_editing_library_references(library={library})"
|
||||
And I press "bim.add_library_reference"
|
||||
And the variable "reference" is "{ifc}.by_type('IfcLibraryReference')[-1].id()"
|
||||
When I press "bim.remove_library_reference(reference={reference})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable editing library reference
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_library"
|
||||
And the variable "library" is "{ifc}.by_type('IfcLibraryInformation')[-1].id()"
|
||||
And I press "bim.enable_editing_library_references(library={library})"
|
||||
And I press "bim.add_library_reference"
|
||||
And the variable "reference" is "{ifc}.by_type('IfcLibraryReference')[-1].id()"
|
||||
When I press "bim.enable_editing_library_reference(reference={reference})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable editing library reference
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_library"
|
||||
And the variable "library" is "{ifc}.by_type('IfcLibraryInformation')[-1].id()"
|
||||
And I press "bim.enable_editing_library_references(library={library})"
|
||||
And I press "bim.add_library_reference"
|
||||
And the variable "reference" is "{ifc}.by_type('IfcLibraryReference')[-1].id()"
|
||||
And I press "bim.enable_editing_library_reference(reference={reference})"
|
||||
When I press "bim.disable_editing_library_reference()"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit library reference
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_library"
|
||||
And the variable "library" is "{ifc}.by_type('IfcLibraryInformation')[-1].id()"
|
||||
And I press "bim.enable_editing_library_references(library={library})"
|
||||
And I press "bim.add_library_reference"
|
||||
And the variable "reference" is "{ifc}.by_type('IfcLibraryReference')[-1].id()"
|
||||
And I press "bim.enable_editing_library_reference(reference={reference})"
|
||||
When I press "bim.edit_library_reference()"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Assign library reference
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_library"
|
||||
And the variable "library" is "{ifc}.by_type('IfcLibraryInformation')[-1].id()"
|
||||
And I press "bim.enable_editing_library_references(library={library})"
|
||||
And I press "bim.add_library_reference"
|
||||
And the variable "reference" is "{ifc}.by_type('IfcLibraryReference')[-1].id()"
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
When I press "bim.assign_library_reference(reference={reference})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Unassign library reference
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_library"
|
||||
And the variable "library" is "{ifc}.by_type('IfcLibraryInformation')[-1].id()"
|
||||
And I press "bim.enable_editing_library_references(library={library})"
|
||||
And I press "bim.add_library_reference"
|
||||
And the variable "reference" is "{ifc}.by_type('IfcLibraryReference')[-1].id()"
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
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_library_reference(reference={reference})"
|
||||
When I press "bim.unassign_library_reference(reference={reference})"
|
||||
Then nothing happens
|
||||
@@ -0,0 +1,451 @@
|
||||
@material
|
||||
Feature: Material
|
||||
|
||||
Scenario: Load materials
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_material()"
|
||||
When I press "bim.load_materials"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable editing materials
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_material()"
|
||||
And I press "bim.load_materials"
|
||||
When I press "bim.disable_editing_materials"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Load materials - then add material
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_materials"
|
||||
When I press "bim.add_material()"
|
||||
Then the IFC material "Default" exists
|
||||
|
||||
Scenario: Load materials - then add material set
|
||||
Given an empty IFC project
|
||||
And I set "scene.BIMMaterialProperties.material_type" to "IfcMaterialLayerSet"
|
||||
And I press "bim.load_materials"
|
||||
When I press "bim.add_material_set(set_type='IfcMaterialLayerSet')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add default material
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_material()"
|
||||
Then the IFC material "Default" exists
|
||||
|
||||
Scenario: Remove material set
|
||||
Given an empty IFC project
|
||||
And I set "scene.BIMMaterialProperties.material_type" to "IfcMaterialLayerSet"
|
||||
And I press "bim.load_materials"
|
||||
And I press "bim.add_material_set(set_type='IfcMaterialLayerSet')"
|
||||
And the variable "material" is "{ifc}.by_type('IfcMaterialLayerSet')[0].id()"
|
||||
When I press "bim.remove_material_set(material={material})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Assign material - single material
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.add_material()"
|
||||
When I set "active_object.BIMObjectMaterialProperties.material_type" to "IfcMaterial"
|
||||
And I press "bim.assign_material"
|
||||
Then the object "IfcWall/Cube" has the IFC material "Default"
|
||||
|
||||
Scenario: Unassign material - single material
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.add_material()"
|
||||
And I set "active_object.BIMObjectMaterialProperties.material_type" to "IfcMaterial"
|
||||
And I press "bim.assign_material"
|
||||
When I press "bim.unassign_material"
|
||||
Then the object "IfcWall/Cube" does not have the material "Default"
|
||||
|
||||
Scenario: Enable editing assigned material - single material
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.add_material()"
|
||||
And I set "active_object.BIMObjectMaterialProperties.material_type" to "IfcMaterial"
|
||||
And I press "bim.assign_material"
|
||||
When I press "bim.enable_editing_assigned_material"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable editing assigned material - single material
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.add_material()"
|
||||
And I set "active_object.BIMObjectMaterialProperties.material_type" to "IfcMaterial"
|
||||
And I press "bim.assign_material"
|
||||
And I press "bim.enable_editing_assigned_material"
|
||||
When I press "bim.disable_editing_assigned_material"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit assigned material - single material
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.add_material()"
|
||||
And I set "active_object.BIMObjectMaterialProperties.material_type" to "IfcMaterial"
|
||||
And I press "bim.assign_material"
|
||||
And I press "bim.enable_editing_assigned_material"
|
||||
And the variable "material_set" is "{ifc}.by_type('IfcMaterial')[0].id()"
|
||||
When I press "bim.edit_assigned_material(material_set={material_set})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Assign material - material layer set
|
||||
Given an empty IFC project
|
||||
And I add an empty
|
||||
And the object "Empty" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.add_material()"
|
||||
When I set "active_object.BIMObjectMaterialProperties.material_type" to "IfcMaterialLayerSet"
|
||||
And I press "bim.assign_material"
|
||||
Then the object "IfcWallType/Empty" does not have the material "Default"
|
||||
And the object "IfcWallType/Empty" has a "100" thick layered material containing the material "Default"
|
||||
|
||||
Scenario: Unassign material - material layer set
|
||||
Given an empty IFC project
|
||||
And I add an empty
|
||||
And the object "Empty" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.add_material()"
|
||||
And I set "active_object.BIMObjectMaterialProperties.material_type" to "IfcMaterialLayerSet"
|
||||
And I press "bim.assign_material"
|
||||
When I press "bim.unassign_material"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Unassign material - removing inherited material
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
|
||||
And I add an empty
|
||||
And the object "Empty" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
|
||||
And I press "bim.add_material()"
|
||||
And I set "active_object.BIMObjectMaterialProperties.material_type" to "IfcMaterialLayerSet"
|
||||
And I press "bim.assign_material"
|
||||
|
||||
And the object "IfcWall/Cube" is selected
|
||||
When the variable "type" is "{ifc}.by_type('IfcWallType')[0].id()"
|
||||
And I press "bim.assign_type(relating_type={type}, related_object='IfcWall/Cube')"
|
||||
|
||||
Then the object "IfcWall/Cube" has a "100" thick layered material containing the material "Default"
|
||||
|
||||
When I press "bim.unassign_material"
|
||||
Then the object "IfcWall/Cube" has no IFC materials
|
||||
|
||||
Scenario: Enable editing assigned material - material layer set
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I add an empty
|
||||
And the object "Empty" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.add_material()"
|
||||
And I set "active_object.BIMObjectMaterialProperties.material_type" to "IfcMaterialLayerSet"
|
||||
And I press "bim.assign_material"
|
||||
When I press "bim.enable_editing_assigned_material"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable editing assigned material - material layer set
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I add an empty
|
||||
And the object "Empty" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.add_material()"
|
||||
And I set "active_object.BIMObjectMaterialProperties.material_type" to "IfcMaterialLayerSet"
|
||||
And I press "bim.assign_material"
|
||||
And I press "bim.enable_editing_assigned_material"
|
||||
When I press "bim.disable_editing_assigned_material"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit assigned material - material layer set
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I add an empty
|
||||
And the object "Empty" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.add_material()"
|
||||
And I set "active_object.BIMObjectMaterialProperties.material_type" to "IfcMaterialLayerSet"
|
||||
And I press "bim.assign_material"
|
||||
And I press "bim.enable_editing_assigned_material"
|
||||
And the variable "material_set" is "{ifc}.by_type('IfcMaterialLayerSet')[0].id()"
|
||||
When I press "bim.edit_assigned_material(material_set={material_set})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Assign material - material profile set
|
||||
Given an empty IFC project
|
||||
And I add an empty
|
||||
And the object "Empty" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.add_material()"
|
||||
When I set "active_object.BIMObjectMaterialProperties.material_type" to "IfcMaterialProfileSet"
|
||||
And I press "bim.assign_material"
|
||||
Then the object "IfcWallType/Empty" does not have the material "Default"
|
||||
And the object "IfcWallType/Empty" has a profiled material containing the material "Default" and profile "New Profile"
|
||||
|
||||
Scenario: Unassign material - material profile set
|
||||
Given an empty IFC project
|
||||
And I add an empty
|
||||
And the object "Empty" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.add_material()"
|
||||
And I set "active_object.BIMObjectMaterialProperties.material_type" to "IfcMaterialProfileSet"
|
||||
And I press "bim.assign_material"
|
||||
When I press "bim.unassign_material"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable editing assigned material - material profile set
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I add an empty
|
||||
And the object "Empty" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.add_material()"
|
||||
And I set "active_object.BIMObjectMaterialProperties.material_type" to "IfcMaterialProfileSet"
|
||||
And I press "bim.assign_material"
|
||||
When I press "bim.enable_editing_assigned_material"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable editing assigned material - material profile set
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I add an empty
|
||||
And the object "Empty" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.add_material()"
|
||||
And I set "active_object.BIMObjectMaterialProperties.material_type" to "IfcMaterialProfileSet"
|
||||
And I press "bim.assign_material"
|
||||
And I press "bim.enable_editing_assigned_material"
|
||||
When I press "bim.disable_editing_assigned_material"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit assigned material - material profile set
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I add an empty
|
||||
And the object "Empty" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.add_material()"
|
||||
And I set "active_object.BIMObjectMaterialProperties.material_type" to "IfcMaterialProfileSet"
|
||||
And I press "bim.assign_material"
|
||||
And I press "bim.enable_editing_assigned_material"
|
||||
And the variable "material_set" is "{ifc}.by_type('IfcMaterialProfileSet')[0].id()"
|
||||
When I press "bim.edit_assigned_material(material_set={material_set})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Assign material - material constituent set
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.add_material()"
|
||||
When I set "active_object.BIMObjectMaterialProperties.material_type" to "IfcMaterialConstituentSet"
|
||||
And I press "bim.assign_material"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Unassign material - material constituent set
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.add_material()"
|
||||
And I set "active_object.BIMObjectMaterialProperties.material_type" to "IfcMaterialConstituentSet"
|
||||
And I press "bim.assign_material"
|
||||
When I press "bim.unassign_material"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable editing assigned material - material constituent set
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.add_material()"
|
||||
And I set "active_object.BIMObjectMaterialProperties.material_type" to "IfcMaterialConstituentSet"
|
||||
And I press "bim.assign_material"
|
||||
When I press "bim.enable_editing_assigned_material"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable editing assigned material - material constituent set
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.add_material()"
|
||||
And I set "active_object.BIMObjectMaterialProperties.material_type" to "IfcMaterialConstituentSet"
|
||||
And I press "bim.assign_material"
|
||||
And I press "bim.enable_editing_assigned_material"
|
||||
When I press "bim.disable_editing_assigned_material"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit assigned material - material constituent set
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.add_material()"
|
||||
And I set "active_object.BIMObjectMaterialProperties.material_type" to "IfcMaterialConstituentSet"
|
||||
And I press "bim.assign_material"
|
||||
And I press "bim.enable_editing_assigned_material"
|
||||
And the variable "material_set" is "{ifc}.by_type('IfcMaterialConstituentSet')[0].id()"
|
||||
When I press "bim.edit_assigned_material(material_set={material_set})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Select by material
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_materials"
|
||||
And I press "bim.add_material()"
|
||||
And the variable "material" is "{ifc}.by_type('IfcMaterial')[0].id()"
|
||||
When I press "bim.select_by_material(material={material})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Expand material category
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_materials"
|
||||
And I press "bim.add_material()"
|
||||
When I press "bim.expand_material_category(category='')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Contract material category
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_materials"
|
||||
And I press "bim.add_material()"
|
||||
And I press "bim.expand_material_category(category='')"
|
||||
When I press "bim.contract_material_category(category='')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable editing material set item
|
||||
Given an empty IFC project
|
||||
And I load the demo construction library
|
||||
When I set "scene.BIMModelProperties.ifc_class" to "IfcColumnType"
|
||||
And I add the construction type
|
||||
And the variable "column" is "{ifc}.by_type('IfcColumn')[0].id()"
|
||||
And the object "IfcColumn/Column" is selected
|
||||
And the variable "column_type" is "{ifc}.by_id({column}).IsTypedBy[0].RelatingType.id()"
|
||||
And the variable "relating_material" is "{ifc}.by_id({column_type}).HasAssociations[0].RelatingMaterial.id()"
|
||||
And the variable "material_profile" is "{ifc}.by_id({column_type}).HasAssociations[0].RelatingMaterial.MaterialProfiles[0].id()"
|
||||
And I press "bim.enable_editing_assigned_material"
|
||||
When I press "bim.enable_editing_material_set_item(material_set_item={material_profile})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add material set layer
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I add an empty
|
||||
And the object "Empty" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.add_material()"
|
||||
And I set "active_object.BIMObjectMaterialProperties.material_type" to "IfcMaterialLayerSet"
|
||||
And I press "bim.assign_material"
|
||||
And I press "bim.enable_editing_assigned_material"
|
||||
And the variable "material_set" is "{ifc}.by_type('IfcMaterialLayerSet')[0].id()"
|
||||
When I press "bim.add_layer(layer_set={material_set})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Remove material set layer
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
|
||||
And I add an empty
|
||||
And the object "Empty" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
|
||||
And I press "bim.add_material()"
|
||||
And I set "active_object.BIMObjectMaterialProperties.material_type" to "IfcMaterialLayerSet"
|
||||
And I press "bim.assign_material"
|
||||
|
||||
And I press "bim.enable_editing_assigned_material"
|
||||
And the variable "material_set" is "{ifc}.by_type('IfcMaterialLayerSet')[0].id()"
|
||||
|
||||
And I press "bim.add_layer(layer_set={material_set})"
|
||||
And I press "bim.remove_layer(layer={ifc}.by_id({material_set}).MaterialLayers[0].id())"
|
||||
Then I press "bim.remove_layer(layer={ifc}.by_id({material_set}).MaterialLayers[0].id())" and expect error "Error: At least one layer must exist"
|
||||
@@ -0,0 +1,60 @@
|
||||
@misc
|
||||
Feature: Misc
|
||||
|
||||
Scenario: Set override colour
|
||||
Given an empty Blender session
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
When I press "bim.set_override_colour"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Set viewport shadow from sun
|
||||
Given an empty Blender session
|
||||
And I add a sun
|
||||
And the object "Sun" is selected
|
||||
When I press "bim.set_viewport_shadow_from_sun"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Snap spaces together
|
||||
Given an empty Blender session
|
||||
And I add a cube
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And additionally the object "Cube.001" is selected
|
||||
When I press "bim.snap_spaces_together"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Resize to storey
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
And the variable "storey" is "tool.Ifc.get().by_type('IfcBuildingStorey')[0].id()"
|
||||
And I press "bim.set_default_container(container={storey})"
|
||||
And I press "bim.assign_container()"
|
||||
When I press "bim.resize_to_storey(total_storeys=1)"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Split along edge
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I add a plane of size "4" at "0,0,0"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
And additionally the object "Plane" is selected
|
||||
When I press "bim.split_along_edge"
|
||||
Then the object "IfcWall/Cube" is an "IfcWall"
|
||||
And the object "IfcWall/Cube.001" is an "IfcWall"
|
||||
|
||||
Scenario: Enabling and disabling IFC Sverchok
|
||||
Given an empty IFC project
|
||||
And I press "preferences.addon_enable(module="sverchok")"
|
||||
And I press "preferences.addon_enable(module="ifcsverchok")"
|
||||
And I press "preferences.addon_disable(module="sverchok")"
|
||||
And I press "preferences.addon_disable(module="ifcsverchok")"
|
||||
@@ -0,0 +1,607 @@
|
||||
@model
|
||||
Feature: Model
|
||||
|
||||
Scenario: Add type instance - add from a mesh
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcWallType"
|
||||
And the variable "cube" is "{ifc}.by_type('IfcWallType')[0].id()"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{cube}"
|
||||
When I press "bim.add_constr_type_instance"
|
||||
Then the object "IfcWall/Wall" exists
|
||||
|
||||
Scenario: Add type instance - add from an empty
|
||||
Given an empty IFC project
|
||||
And I add an empty
|
||||
And the object "Empty" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcWallType"
|
||||
And the variable "empty" is "{ifc}.by_type('IfcWallType')[0].id()"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{empty}"
|
||||
When I press "bim.add_constr_type_instance"
|
||||
Then the object "IfcWall/Wall" exists
|
||||
|
||||
Scenario: Add type instance - add a mesh where existing instances have changed context
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcWallType"
|
||||
And the variable "cube" is "{ifc}.by_type('IfcWallType')[0].id()"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{cube}"
|
||||
And I press "bim.add_constr_type_instance"
|
||||
And the object "IfcWall/Wall" data is a "Tessellation" representation of "Model/Body/MODEL_VIEW"
|
||||
And the object "IfcWall/Wall" is selected
|
||||
And the variable "context" is "[c for c in {ifc}.by_type('IfcGeometricRepresentationSubContext') if c.ContextType == 'Plan' and c.ContextIdentifier == 'Body' and c.TargetView == 'PLAN_VIEW'][0].id()"
|
||||
And I set "active_object.BIMGeometryProperties.contexts" to "{context}"
|
||||
And I press "bim.add_representation"
|
||||
And the object "IfcWall/Wall" data is a "Annotation2D" representation of "Plan/Body/PLAN_VIEW"
|
||||
When I press "bim.add_constr_type_instance"
|
||||
Then the object "IfcWall/Wall" data is a "Annotation2D" representation of "Plan/Body/PLAN_VIEW"
|
||||
And the object "IfcWall/Wall.001" data is a "Annotation2D" representation of "Plan/Body/PLAN_VIEW"
|
||||
|
||||
Scenario: Add one type from the Construction Type Browser
|
||||
Given an empty IFC project
|
||||
And I load the demo construction library
|
||||
When I set "scene.BIMModelProperties.ifc_class" to "IfcColumnType"
|
||||
And I add the construction type
|
||||
Then the object "IfcColumn/Column" exists
|
||||
|
||||
Scenario: Add grid
|
||||
Given an empty IFC project
|
||||
When I press "mesh.add_grid"
|
||||
Then the object "IfcGrid/Grid" is an "IfcGrid"
|
||||
And the object "IfcGridAxis/A" is an "IfcGridAxis"
|
||||
And the object "IfcGridAxis/B" is an "IfcGridAxis"
|
||||
And the object "IfcGridAxis/C" is an "IfcGridAxis"
|
||||
And the object "IfcGridAxis/01" is an "IfcGridAxis"
|
||||
And the object "IfcGridAxis/02" is an "IfcGridAxis"
|
||||
And the object "IfcGridAxis/03" is an "IfcGridAxis"
|
||||
|
||||
Scenario: Add a wall
|
||||
Given an empty IFC project
|
||||
And I load the demo construction library
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcWallType"
|
||||
And the variable "element_type" is "[e for e in {ifc}.by_type('IfcWallType') if e.Name == 'WAL100'][0].id()"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{element_type}"
|
||||
When I press "bim.add_constr_type_instance"
|
||||
Then the object "IfcWall/Wall" is an "IfcWall"
|
||||
And the object "IfcWall/Wall" dimensions are "1,0.1,3"
|
||||
And the object "IfcWall/Wall" bottom left corner is at "0,0,0"
|
||||
|
||||
Scenario: Extend a wall to the cursor
|
||||
Given an empty IFC project
|
||||
And I load the demo construction library
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcWallType"
|
||||
And the variable "element_type" is "[e for e in {ifc}.by_type('IfcWallType') if e.Name == 'WAL100'][0].id()"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{element_type}"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And the object "IfcWall/Wall" is selected
|
||||
And the cursor is at "2,0,0"
|
||||
When I press "bim.hotkey(hotkey='S_E')"
|
||||
Then the object "IfcWall/Wall" dimensions are "2,0.1,3"
|
||||
And the object "IfcWall/Wall" bottom left corner is at "0,0,0"
|
||||
|
||||
Scenario: Add a wall perpendicular to an existing wall
|
||||
Given an empty IFC project
|
||||
And I load the demo construction library
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcWallType"
|
||||
And the variable "element_type" is "[e for e in {ifc}.by_type('IfcWallType') if e.Name == 'WAL100'][0].id()"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{element_type}"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And the cursor is at "0.5,0,0"
|
||||
When I press "bim.hotkey(hotkey='S_A')"
|
||||
Then the object "IfcWall/Wall" dimensions are "1,0.1,3"
|
||||
And the object "IfcWall/Wall" bottom left corner is at "0,0,0"
|
||||
And the object "IfcWall/Wall.001" dimensions are "1,0.1,3"
|
||||
And the object "IfcWall/Wall.001" bottom left corner is at "0.5,0,0"
|
||||
And the object "IfcWall/Wall.001" top right corner is at "0.6,-1,3"
|
||||
|
||||
Scenario: Extend one wall to another
|
||||
Given an empty IFC project
|
||||
And I load the demo construction library
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcWallType"
|
||||
And the variable "element_type" is "[e for e in {ifc}.by_type('IfcWallType') if e.Name == 'WAL100'][0].id()"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{element_type}"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And the cursor is at "0.5,0,0"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And the object "IfcWall/Wall.001" is moved to "0.5,-1,0"
|
||||
And the object "IfcWall/Wall.001" is selected
|
||||
And additionally the object "IfcWall/Wall" is selected
|
||||
When I press "bim.hotkey(hotkey='S_E')"
|
||||
Then the object "IfcWall/Wall" dimensions are "1,0.1,3"
|
||||
And the object "IfcWall/Wall" bottom left corner is at "0,0,0"
|
||||
And the object "IfcWall/Wall.001" dimensions are "2,0.1,3"
|
||||
And the object "IfcWall/Wall.001" bottom left corner is at "0.5,0,0"
|
||||
And the object "IfcWall/Wall.001" top right corner is at "0.6,-2,3"
|
||||
|
||||
Scenario: Join two walls with a butt joint - first wall has priority
|
||||
Given an empty IFC project
|
||||
And I load the demo construction library
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcWallType"
|
||||
And the variable "element_type" is "[e for e in {ifc}.by_type('IfcWallType') if e.Name == 'WAL100'][0].id()"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{element_type}"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And the cursor is at "0.5,0,0"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And the object "IfcWall/Wall.001" is selected
|
||||
And additionally the object "IfcWall/Wall" is selected
|
||||
When I press "bim.hotkey(hotkey='S_T')"
|
||||
Then the object "IfcWall/Wall" dimensions are "0.4,0.1,3"
|
||||
And the object "IfcWall/Wall" bottom left corner is at "0.6,0,0"
|
||||
And the object "IfcWall/Wall.001" dimensions are "1.1,0.1,3"
|
||||
And the object "IfcWall/Wall.001" bottom left corner is at "0.5,0.1,0"
|
||||
And the object "IfcWall/Wall.001" top right corner is at "0.6,-1,3"
|
||||
|
||||
Scenario: Join two walls with a butt joint - second wall has priority
|
||||
Given an empty IFC project
|
||||
And I load the demo construction library
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcWallType"
|
||||
And the variable "element_type" is "[e for e in {ifc}.by_type('IfcWallType') if e.Name == 'WAL100'][0].id()"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{element_type}"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And the cursor is at "0.5,0,0"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And the object "IfcWall/Wall" is selected
|
||||
And additionally the object "IfcWall/Wall.001" is selected
|
||||
When I press "bim.hotkey(hotkey='S_T')"
|
||||
Then the object "IfcWall/Wall" dimensions are "0.5,0.1,3"
|
||||
And the object "IfcWall/Wall" bottom left corner is at "0.5,0,0"
|
||||
And the object "IfcWall/Wall.001" dimensions are "1,0.1,3"
|
||||
And the object "IfcWall/Wall.001" bottom left corner is at "0.5,0,0"
|
||||
And the object "IfcWall/Wall.001" top right corner is at "0.6,-1,3"
|
||||
|
||||
Scenario: Join two walls with a mitre joint
|
||||
Given an empty IFC project
|
||||
And I load the demo construction library
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcWallType"
|
||||
And the variable "element_type" is "[e for e in {ifc}.by_type('IfcWallType') if e.Name == 'WAL100'][0].id()"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{element_type}"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And the cursor is at "0.5,0,0"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And the object "IfcWall/Wall.001" is selected
|
||||
And additionally the object "IfcWall/Wall" is selected
|
||||
When I press "bim.hotkey(hotkey='S_Y')"
|
||||
Then the object "IfcWall/Wall" dimensions are "0.5,0.1,3"
|
||||
And the object "IfcWall/Wall" bottom left corner is at "0.5,0,0"
|
||||
And the object "IfcWall/Wall.001" dimensions are "1.1,0.1,3"
|
||||
And the object "IfcWall/Wall.001" bottom left corner is at "0.5,0.1,0"
|
||||
And the object "IfcWall/Wall.001" top right corner is at "0.6,-1,3"
|
||||
|
||||
Scenario: Change the height of a wall
|
||||
Given an empty IFC project
|
||||
And I load the demo construction library
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcWallType"
|
||||
And the variable "element_type" is "[e for e in {ifc}.by_type('IfcWallType') if e.Name == 'WAL100'][0].id()"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{element_type}"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And the object "IfcWall/Wall" is selected
|
||||
And I set "scene.BIMModelProperties.extrusion_depth" to "2.0"
|
||||
When I press "bim.change_extrusion_depth(depth=2.0)"
|
||||
Then the object "IfcWall/Wall" dimensions are "1,0.1,2"
|
||||
|
||||
Scenario: Change the length of a wall
|
||||
Given an empty IFC project
|
||||
And I load the demo construction library
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcWallType"
|
||||
And the variable "element_type" is "[e for e in {ifc}.by_type('IfcWallType') if e.Name == 'WAL100'][0].id()"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{element_type}"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And the object "IfcWall/Wall" is selected
|
||||
And I set "scene.BIMModelProperties.length" to "2.0"
|
||||
When I press "bim.change_layer_length(length=2.0)"
|
||||
Then the object "IfcWall/Wall" dimensions are "2,0.1,3"
|
||||
|
||||
Scenario: Flip a wall
|
||||
Given an empty IFC project
|
||||
And I load the demo construction library
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcWallType"
|
||||
And the variable "element_type" is "[e for e in {ifc}.by_type('IfcWallType') if e.Name == 'WAL100'][0].id()"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{element_type}"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And the object "IfcWall/Wall" is selected
|
||||
When I press "bim.hotkey(hotkey='S_F')"
|
||||
Then the object "IfcWall/Wall" dimensions are "1,0.1,3"
|
||||
And the object "IfcWall/Wall" bottom left corner is at "1,0,0"
|
||||
And the object "IfcWall/Wall" top right corner is at "0,-0.1,3"
|
||||
|
||||
Scenario: Split a wall
|
||||
Given an empty IFC project
|
||||
And I load the demo construction library
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcWallType"
|
||||
And the variable "element_type" is "[e for e in {ifc}.by_type('IfcWallType') if e.Name == 'WAL100'][0].id()"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{element_type}"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And the object "IfcWall/Wall" is selected
|
||||
And the cursor is at "0.5,0,0"
|
||||
When I press "bim.hotkey(hotkey='S_K')"
|
||||
Then the object "IfcWall/Wall" is an "IfcWall"
|
||||
And the object "IfcWall/Wall.001" is an "IfcWall"
|
||||
And the object "IfcWall/Wall" dimensions are "0.5,0.1,3"
|
||||
And the object "IfcWall/Wall" bottom left corner is at "0,0,0"
|
||||
And the object "IfcWall/Wall" top right corner is at "0.5,0.1,3"
|
||||
And the object "IfcWall/Wall.001" dimensions are "0.5,0.1,3"
|
||||
And the object "IfcWall/Wall.001" bottom left corner is at "0.5,0,0"
|
||||
And the object "IfcWall/Wall.001" top right corner is at "1,0.1,3"
|
||||
|
||||
Scenario: Rotate a wall by 90 degrees
|
||||
Given an empty IFC project
|
||||
And I load the demo construction library
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcWallType"
|
||||
And the variable "element_type" is "[e for e in {ifc}.by_type('IfcWallType') if e.Name == 'WAL100'][0].id()"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{element_type}"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And the object "IfcWall/Wall" is selected
|
||||
When I press "bim.hotkey(hotkey='S_R')"
|
||||
Then the object "IfcWall/Wall" dimensions are "1,0.1,3"
|
||||
And the object "IfcWall/Wall" bottom left corner is at "0,0,0"
|
||||
And the object "IfcWall/Wall" top right corner is at "-0.1,1,3"
|
||||
|
||||
Scenario: Regenerate a wall - after doing nothing interesting
|
||||
Given an empty IFC project
|
||||
And I load the demo construction library
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcWallType"
|
||||
And the variable "element_type" is "[e for e in {ifc}.by_type('IfcWallType') if e.Name == 'WAL100'][0].id()"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{element_type}"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And the object "IfcWall/Wall" is selected
|
||||
When I press "bim.hotkey(hotkey='S_G')"
|
||||
Then the object "IfcWall/Wall" is an "IfcWall"
|
||||
And the object "IfcWall/Wall" dimensions are "1,0.1,3"
|
||||
And the object "IfcWall/Wall" bottom left corner is at "0,0,0"
|
||||
|
||||
Scenario: Add a slab
|
||||
Given an empty IFC project
|
||||
And I load the demo construction library
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcSlabType"
|
||||
And the variable "element_type" is "[e for e in {ifc}.by_type('IfcSlabType') if e.Name == 'FLR200'][0].id()"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{element_type}"
|
||||
When I press "bim.hotkey(hotkey='S_A')"
|
||||
Then the object "IfcSlab/Slab" is an "IfcSlab"
|
||||
And the object "IfcSlab/Slab" dimensions are "1,1,0.2"
|
||||
And the object "IfcSlab/Slab" bottom left corner is at "0,0,-0.2"
|
||||
And the object "IfcSlab/Slab" top right corner is at "1,1,0"
|
||||
|
||||
Scenario: Enable editing a slab profile
|
||||
Given an empty IFC project
|
||||
And I load the demo construction library
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcSlabType"
|
||||
And the variable "element_type" is "[e for e in {ifc}.by_type('IfcSlabType') if e.Name == 'FLR200'][0].id()"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{element_type}"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And the object "IfcSlab/Slab" is selected
|
||||
When I press "bim.hotkey(hotkey='S_E')"
|
||||
Then the object "IfcSlab/Slab" dimensions are "1,1,0"
|
||||
And the object "IfcSlab/Slab" bottom left corner is at "0,0,-0.2"
|
||||
And the object "IfcSlab/Slab" top right corner is at "1,1,-0.2"
|
||||
|
||||
Scenario: Disable editing a slab profile
|
||||
Given an empty IFC project
|
||||
And I load the demo construction library
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcSlabType"
|
||||
And the variable "element_type" is "[e for e in {ifc}.by_type('IfcSlabType') if e.Name == 'FLR200'][0].id()"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{element_type}"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And the object "IfcSlab/Slab" is selected
|
||||
And I press "bim.hotkey(hotkey='S_E')"
|
||||
When I press "bim.disable_editing_extrusion_profile"
|
||||
Then the object "IfcSlab/Slab" dimensions are "1,1,0.2"
|
||||
And the object "IfcSlab/Slab" bottom left corner is at "0,0,-0.2"
|
||||
And the object "IfcSlab/Slab" top right corner is at "1,1,0"
|
||||
|
||||
Scenario: Edit a slab profile
|
||||
Given an empty IFC project
|
||||
And I load the demo construction library
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcSlabType"
|
||||
And the variable "element_type" is "[e for e in {ifc}.by_type('IfcSlabType') if e.Name == 'FLR200'][0].id()"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{element_type}"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And the object "IfcSlab/Slab" is selected
|
||||
And I press "bim.hotkey(hotkey='S_E')"
|
||||
When I press "bim.edit_extrusion_profile"
|
||||
Then the object "IfcSlab/Slab" dimensions are "1,1,0.2"
|
||||
And the object "IfcSlab/Slab" bottom left corner is at "0,0,-0.2"
|
||||
And the object "IfcSlab/Slab" top right corner is at "1,1,0"
|
||||
|
||||
Scenario: Add a beam
|
||||
Given an empty IFC project
|
||||
And I load the demo construction library
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcBeamType"
|
||||
And the variable "element_type" is "[e for e in {ifc}.by_type('IfcBeamType') if e.Name == 'B1'][0].id()"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{element_type}"
|
||||
When I press "bim.hotkey(hotkey='S_A')"
|
||||
Then the object "IfcBeam/Beam" is an "IfcBeam"
|
||||
And the object "IfcBeam/Beam" dimensions are "0.1,0.2,3"
|
||||
And the object "IfcBeam/Beam" bottom left corner is at "0,-0.05,-0.1"
|
||||
And the object "IfcBeam/Beam" top right corner is at "3,0.05,0.1"
|
||||
|
||||
Scenario: Extend a beam to the cursor
|
||||
Given an empty IFC project
|
||||
And I load the demo construction library
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcBeamType"
|
||||
And the variable "element_type" is "[e for e in {ifc}.by_type('IfcBeamType') if e.Name == 'B1'][0].id()"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{element_type}"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And the object "IfcBeam/Beam" is selected
|
||||
And the cursor is at "2,0,0"
|
||||
When I press "bim.hotkey(hotkey='S_E')"
|
||||
Then the object "IfcBeam/Beam" dimensions are "0.1,0.2,2"
|
||||
And the object "IfcBeam/Beam" bottom left corner is at "0,-0.05,-0.1"
|
||||
|
||||
Scenario: Extend one beam to another
|
||||
Given an empty IFC project
|
||||
And I load the demo construction library
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcBeamType"
|
||||
And the variable "element_type" is "[e for e in {ifc}.by_type('IfcBeamType') if e.Name == 'B1'][0].id()"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{element_type}"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And the cursor is at "1,1,0"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And the object "IfcBeam/Beam.001" is selected
|
||||
And I press "bim.hotkey(hotkey='S_R')"
|
||||
And the object "IfcBeam/Beam.001" is selected
|
||||
And additionally the object "IfcBeam/Beam" is selected
|
||||
When I press "bim.hotkey(hotkey='S_E')"
|
||||
Then the object "IfcBeam/Beam" dimensions are "0.1,0.2,3"
|
||||
And the object "IfcBeam/Beam" bottom left corner is at "0,-0.05,-0.1"
|
||||
And the object "IfcBeam/Beam" top right corner is at "3,0.05,0.1"
|
||||
And the object "IfcBeam/Beam.001" dimensions are "0.1,0.2,3.95"
|
||||
And the object "IfcBeam/Beam.001" bottom left corner is at "1.05,0.05,-0.1"
|
||||
And the object "IfcBeam/Beam.001" top right corner is at "0.95,4,0.1"
|
||||
|
||||
Scenario: Join two beams with a butt joint - first beam has priority
|
||||
Given an empty IFC project
|
||||
And I load the demo construction library
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcBeamType"
|
||||
And the variable "element_type" is "[e for e in {ifc}.by_type('IfcBeamType') if e.Name == 'B1'][0].id()"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{element_type}"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And the cursor is at "1,1,0"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And the object "IfcBeam/Beam.001" is selected
|
||||
And I press "bim.hotkey(hotkey='S_R')"
|
||||
And the object "IfcBeam/Beam.001" is selected
|
||||
And additionally the object "IfcBeam/Beam" is selected
|
||||
When I press "bim.hotkey(hotkey='S_T')"
|
||||
Then the object "IfcBeam/Beam" dimensions are "0.1,0.2,1.95"
|
||||
And the object "IfcBeam/Beam" bottom left corner is at "1.05,-0.05,-0.1"
|
||||
And the object "IfcBeam/Beam" top right corner is at "3,0.05,0.1"
|
||||
And the object "IfcBeam/Beam.001" dimensions are "0.1,0.2,4.05"
|
||||
And the object "IfcBeam/Beam.001" bottom left corner is at "1.05,-0.05,-0.1"
|
||||
And the object "IfcBeam/Beam.001" top right corner is at "0.95,4,0.1"
|
||||
|
||||
Scenario: Join two beams with a butt joint - second beam has priority
|
||||
Given an empty IFC project
|
||||
And I load the demo construction library
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcBeamType"
|
||||
And the variable "element_type" is "[e for e in {ifc}.by_type('IfcBeamType') if e.Name == 'B1'][0].id()"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{element_type}"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And the cursor is at "1,1,0"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And the object "IfcBeam/Beam.001" is selected
|
||||
And I press "bim.hotkey(hotkey='S_R')"
|
||||
And the object "IfcBeam/Beam" is selected
|
||||
And additionally the object "IfcBeam/Beam.001" is selected
|
||||
When I press "bim.hotkey(hotkey='S_T')"
|
||||
Then the object "IfcBeam/Beam" dimensions are "0.1,0.2,2.05"
|
||||
And the object "IfcBeam/Beam" bottom left corner is at "0.95,-0.05,-0.1"
|
||||
And the object "IfcBeam/Beam" top right corner is at "3,0.05,0.1"
|
||||
And the object "IfcBeam/Beam.001" dimensions are "0.1,0.2,3.95"
|
||||
And the object "IfcBeam/Beam.001" bottom left corner is at "1.05,0.05,-0.1"
|
||||
And the object "IfcBeam/Beam.001" top right corner is at "0.95,4,0.1"
|
||||
|
||||
Scenario: Join two beams with a mitre joint
|
||||
Given an empty IFC project
|
||||
And I load the demo construction library
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcBeamType"
|
||||
And the variable "element_type" is "[e for e in {ifc}.by_type('IfcBeamType') if e.Name == 'B1'][0].id()"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{element_type}"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And the cursor is at "1,1,0"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And the object "IfcBeam/Beam.001" is selected
|
||||
And I press "bim.hotkey(hotkey='S_R')"
|
||||
And the object "IfcBeam/Beam" is selected
|
||||
And additionally the object "IfcBeam/Beam.001" is selected
|
||||
When I press "bim.hotkey(hotkey='S_Y')"
|
||||
Then the object "IfcBeam/Beam" dimensions are "0.1,0.2,2.05"
|
||||
And the object "IfcBeam/Beam" bottom left corner is at "0.95,-0.05,-0.1"
|
||||
And the object "IfcBeam/Beam" top right corner is at "3,0.05,0.1"
|
||||
And the object "IfcBeam/Beam.001" dimensions are "0.1,0.2,4.05"
|
||||
And the object "IfcBeam/Beam.001" bottom left corner is at "1.05,-0.05,-0.1"
|
||||
And the object "IfcBeam/Beam.001" top right corner is at "0.95,4,0.1"
|
||||
|
||||
Scenario: Change the length of a beam
|
||||
Given an empty IFC project
|
||||
And I load the demo construction library
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcBeamType"
|
||||
And the variable "element_type" is "[e for e in {ifc}.by_type('IfcBeamType') if e.Name == 'B1'][0].id()"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{element_type}"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And the object "IfcBeam/Beam" is selected
|
||||
And I set "scene.BIMModelProperties.extrusion_depth" to "2.0"
|
||||
When I press "bim.change_profile_depth(depth=2.0)"
|
||||
Then the object "IfcBeam/Beam" dimensions are "0.1,0.2,2"
|
||||
|
||||
Scenario: Rotate a beam by 90 degrees
|
||||
Given an empty IFC project
|
||||
And I load the demo construction library
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcBeamType"
|
||||
And the variable "element_type" is "[e for e in {ifc}.by_type('IfcBeamType') if e.Name == 'B1'][0].id()"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{element_type}"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And the object "IfcBeam/Beam" is selected
|
||||
When I press "bim.hotkey(hotkey='S_R')"
|
||||
Then the object "IfcBeam/Beam" dimensions are "0.1,0.2,3"
|
||||
And the object "IfcBeam/Beam" bottom left corner is at "0.05,0,-0.1"
|
||||
And the object "IfcBeam/Beam" top right corner is at "-0.05,3,0.1"
|
||||
|
||||
Scenario: Regenerate a beam - after doing nothing interesting
|
||||
Given an empty IFC project
|
||||
And I load the demo construction library
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcBeamType"
|
||||
And the variable "element_type" is "[e for e in {ifc}.by_type('IfcBeamType') if e.Name == 'B1'][0].id()"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{element_type}"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And the object "IfcBeam/Beam" is selected
|
||||
When I press "bim.hotkey(hotkey='S_G')"
|
||||
Then the object "IfcBeam/Beam" dimensions are "0.1,0.2,3"
|
||||
And the object "IfcBeam/Beam" bottom left corner is at "0,-0.05,-0.1"
|
||||
And the object "IfcBeam/Beam" top right corner is at "3,0.05,0.1"
|
||||
|
||||
Scenario: Undo test - create a wall and couple windows and undo the last window
|
||||
Given an empty IFC project
|
||||
And I load the demo construction library
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcWindowType"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And I prepare to undo
|
||||
And the object "IfcWall/Wall" is selected
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcWindowType"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And I undo
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Undo test - create a wall with window opening, flip it and undo
|
||||
Given an empty IFC project
|
||||
And I load the demo construction library
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcWindowType"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And the object "IfcWall/Wall" is selected
|
||||
And I prepare to undo
|
||||
And I press "bim.hotkey(hotkey='S_F')"
|
||||
And I undo
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Create window type based on window modifier, add an occurrence of it and edit it
|
||||
Given an empty IFC project
|
||||
And I set "scene.BIMModelProperties.type_class" to "IfcWindowType"
|
||||
And I set "scene.BIMModelProperties.type_predefined_type" to "WINDOW"
|
||||
And I set "scene.BIMModelProperties.type_template" to "WINDOW"
|
||||
And I press "bim.add_type()"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And I press "bim.enable_editing_window()"
|
||||
And I press "bim.finish_editing_window()"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Create door type based on door modifier, add an occurrence of it and edit it
|
||||
Given an empty IFC project
|
||||
And I set "scene.BIMModelProperties.type_class" to "IfcDoorType"
|
||||
And I set "scene.BIMModelProperties.type_predefined_type" to "DOOR"
|
||||
And I set "scene.BIMModelProperties.type_template" to "DOOR"
|
||||
And I press "bim.add_type()"
|
||||
And I press "bim.hotkey(hotkey='S_A')"
|
||||
And I press "bim.enable_editing_door()"
|
||||
And I press "bim.finish_editing_door()"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Create a door, undo and create a new door
|
||||
Given an empty IFC project
|
||||
And I prepare to undo
|
||||
And I press "mesh.add_door()"
|
||||
And I undo
|
||||
And I press "mesh.add_door()"
|
||||
Then nothing happens
|
||||
And the object "IfcDoor/IfcDoor" exists
|
||||
|
||||
Scenario: Create a MEP transition
|
||||
Given an empty IFC project
|
||||
And I create default MEP types
|
||||
And the variable "segment_types" is "[str(e.id()) for e in {ifc}.by_type('IfcDuctSegmentType')]"
|
||||
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcDuctSegmentType"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{segment_types}[0]"
|
||||
And I press "bim.add_constr_type_instance"
|
||||
And I rename the object "IfcDuctSegment/DuctSegment" to "IfcDuctSegment/RectSegment"
|
||||
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{segment_types}[1]"
|
||||
And I press "bim.add_constr_type_instance"
|
||||
And I rename the object "IfcDuctSegment/DuctSegment" to "IfcDuctSegment/CircleSegment"
|
||||
|
||||
And the object "IfcDuctSegment/RectSegment" is moved to "0,0,0"
|
||||
And the object "IfcDuctSegment/CircleSegment" is moved to "2.5,0,0"
|
||||
And the object "IfcDuctSegment/CircleSegment" is selected
|
||||
And additionally the object "IfcDuctSegment/RectSegment" is selected
|
||||
And I press "bim.mep_add_transition"
|
||||
|
||||
Then the object "IfcDuctFitting/DuctFitting" exists
|
||||
And the object "IfcDuctFittingType/Transition" exists
|
||||
And the object "IfcDuctSegment/RectSegment" is at "0,0,0"
|
||||
And the object "IfcDuctSegment/RectSegment" dimensions are "0.4,0.2,2.370096"
|
||||
And the object "IfcDuctSegment/CircleSegment" is at "3.1299,0,0"
|
||||
And the object "IfcDuctSegment/CircleSegment" dimensions are "0.1000, 0.09927, 2.370096"
|
||||
And the object "IfcDuctFitting/DuctFitting" is at "2.370096, 0.0000, 0.0000"
|
||||
And the object "IfcDuctFitting/DuctFitting" dimensions are "0.4000, 0.2000, 0.759807"
|
||||
|
||||
Scenario: Create a MEP bend between intersecting with different locations
|
||||
Given an empty IFC project
|
||||
And I create default MEP types
|
||||
And the variable "segment_types" is "[str(e.id()) for e in {ifc}.by_type('IfcDuctSegmentType')]"
|
||||
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcDuctSegmentType"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{segment_types}[0]"
|
||||
And I set "scene.BIMModelProperties.extrusion_depth" to "5.0"
|
||||
And I press "bim.add_constr_type_instance"
|
||||
And I rename the object "IfcDuctSegment/DuctSegment" to "IfcDuctSegment/Seg1"
|
||||
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{segment_types}[0]"
|
||||
And I press "bim.add_constr_type_instance"
|
||||
And I rename the object "IfcDuctSegment/DuctSegment" to "IfcDuctSegment/Seg2"
|
||||
And the object "IfcDuctSegment/Seg2" is rotated by "0,0,90" deg
|
||||
|
||||
And the object "IfcDuctSegment/Seg2" is moved to "6,1,1"
|
||||
And the object "IfcDuctSegment/Seg1" is selected
|
||||
And additionally the object "IfcDuctSegment/Seg2" is selected
|
||||
And I press "bim.mep_add_bend"
|
||||
|
||||
Then the object "IfcDuctFitting/DuctFitting" exists
|
||||
And the object "IfcDuctFittingType/Bend" exists
|
||||
And the object "IfcDuctSegment/Seg1" is at "0,0,1.0"
|
||||
And the object "IfcDuctSegment/Seg1" dimensions are "0.4,0.2,5.5"
|
||||
And the object "IfcDuctSegment/Seg2" is at "6.0,0.5,1.0"
|
||||
And the object "IfcDuctSegment/Seg2" dimensions are "0.4,0.2,5.5"
|
||||
And the object "IfcDuctFitting/DuctFitting" is at "6.0, 0.5, 1.0"
|
||||
And the object "IfcDuctFitting/DuctFitting" dimensions are "0.7, 0.2, 0.7"
|
||||
|
||||
Scenario: Create a MEP bend between intersecting segments at the same location
|
||||
Given an empty IFC project
|
||||
And I create default MEP types
|
||||
And the variable "segment_types" is "[str(e.id()) for e in {ifc}.by_type('IfcDuctSegmentType')]"
|
||||
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcDuctSegmentType"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{segment_types}[0]"
|
||||
And I set "scene.BIMModelProperties.extrusion_depth" to "5.0"
|
||||
And I press "bim.add_constr_type_instance"
|
||||
And I rename the object "IfcDuctSegment/DuctSegment" to "IfcDuctSegment/Seg1"
|
||||
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{segment_types}[0]"
|
||||
And I press "bim.add_constr_type_instance"
|
||||
And I rename the object "IfcDuctSegment/DuctSegment" to "IfcDuctSegment/Seg2"
|
||||
And the object "IfcDuctSegment/Seg2" is rotated by "0,0,90" deg
|
||||
|
||||
And the object "IfcDuctSegment/Seg1" is selected
|
||||
And additionally the object "IfcDuctSegment/Seg2" is selected
|
||||
And I press "bim.mep_add_bend"
|
||||
|
||||
Then the object "IfcDuctFitting/DuctFitting" exists
|
||||
And the object "IfcDuctFittingType/Bend" exists
|
||||
And the object "IfcDuctSegment/Seg1" is at "0.5,0,1.0"
|
||||
And the object "IfcDuctSegment/Seg1" dimensions are "0.4,0.2,4.5"
|
||||
And the object "IfcDuctSegment/Seg2" is at "0.0,0.5,1.0"
|
||||
And the object "IfcDuctSegment/Seg2" dimensions are "0.4,0.2,4.5"
|
||||
And the object "IfcDuctFitting/DuctFitting" is at "0.0, 0.5, 1.0"
|
||||
And the object "IfcDuctFitting/DuctFitting" dimensions are "0.7, 0.2, 0.7"
|
||||
@@ -0,0 +1,308 @@
|
||||
@owner
|
||||
Feature: Owner
|
||||
|
||||
Scenario: Add person
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_person"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Remove person
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_person"
|
||||
And the variable "person" is "{ifc}.by_type('IfcPerson')[-1].id()"
|
||||
And I press "bim.remove_person(person={person})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add person attribute
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_person"
|
||||
And I press "bim.add_person_attribute(name='MiddleNames')"
|
||||
And I press "bim.add_person_attribute(name='PrefixTitles')"
|
||||
And I press "bim.add_person_attribute(name='SuffixTitles')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Remove person attribute
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_person"
|
||||
And I press "bim.add_person_attribute(name='MiddleNames')"
|
||||
And I press "bim.remove_person_attribute(name='MiddleNames', id=0)"
|
||||
And I press "bim.add_person_attribute(name='PrefixTitles')"
|
||||
And I press "bim.remove_person_attribute(name='PrefixTitles', id=0)"
|
||||
And I press "bim.add_person_attribute(name='SuffixTitles')"
|
||||
And I press "bim.remove_person_attribute(name='SuffixTitles', id=0)"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable editing person
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_person"
|
||||
And the variable "person" is "{ifc}.by_type('IfcPerson')[0].id()"
|
||||
And I press "bim.enable_editing_person(person={person})"
|
||||
Then "scene.BIMOwnerProperties.active_person_id" is "{person}"
|
||||
|
||||
Scenario: Disable editing person
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_person"
|
||||
And the variable "person" is "{ifc}.by_type('IfcPerson')[0].id()"
|
||||
And I press "bim.enable_editing_person(person={person})"
|
||||
And I press "bim.disable_editing_person"
|
||||
Then "scene.BIMOwnerProperties.active_person_id" is "0"
|
||||
|
||||
Scenario: Edit person
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_person"
|
||||
And the variable "person" is "{ifc}.by_type('IfcPerson')[0].id()"
|
||||
And I press "bim.enable_editing_person(person={person})"
|
||||
And I press "bim.edit_person"
|
||||
Then "scene.BIMOwnerProperties.active_person_id" is "0"
|
||||
|
||||
Scenario: Add role
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_person"
|
||||
And the variable "person" is "{ifc}.by_type('IfcPerson')[0].id()"
|
||||
And I press "bim.add_role(parent={person})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Remove role
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_person"
|
||||
And the variable "person" is "{ifc}.by_type('IfcPerson')[0].id()"
|
||||
And I press "bim.add_role(parent={person})"
|
||||
And the variable "role" is "{ifc}.by_type('IfcActorRole')[0].id()"
|
||||
And I press "bim.remove_role(role={role})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable editing role
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_person"
|
||||
And the variable "person" is "{ifc}.by_type('IfcPerson')[0].id()"
|
||||
And I press "bim.add_role(parent={person})"
|
||||
And the variable "role" is "{ifc}.by_type('IfcActorRole')[0].id()"
|
||||
And I press "bim.enable_editing_role(role={role})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable editing role
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_person"
|
||||
And the variable "person" is "{ifc}.by_type('IfcPerson')[0].id()"
|
||||
And I press "bim.add_role(parent={person})"
|
||||
And the variable "role" is "{ifc}.by_type('IfcActorRole')[0].id()"
|
||||
And I press "bim.enable_editing_role(role={role})"
|
||||
And I press "bim.disable_editing_role()"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit role
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_person"
|
||||
And the variable "person" is "{ifc}.by_type('IfcPerson')[0].id()"
|
||||
And I press "bim.add_role(parent={person})"
|
||||
And the variable "role" is "{ifc}.by_type('IfcActorRole')[0].id()"
|
||||
And I press "bim.enable_editing_role(role={role})"
|
||||
And I press "bim.edit_role()"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add address
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_person"
|
||||
And the variable "person" is "{ifc}.by_type('IfcPerson')[0].id()"
|
||||
And I press "bim.add_address(parent={person}, ifc_class='IfcPostalAddress')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add address attribute
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_person"
|
||||
And the variable "person" is "{ifc}.by_type('IfcPerson')[0].id()"
|
||||
And I press "bim.add_address(parent={person}, ifc_class='IfcPostalAddress')"
|
||||
And the variable "address" is "{ifc}.by_type('IfcPostalAddress')[0].id()"
|
||||
And I press "bim.enable_editing_address(address={address})"
|
||||
And I press "bim.add_address_attribute(name='AddressLines')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Remove address attribute
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_person"
|
||||
And the variable "person" is "{ifc}.by_type('IfcPerson')[0].id()"
|
||||
And I press "bim.add_address(parent={person}, ifc_class='IfcPostalAddress')"
|
||||
And the variable "address" is "{ifc}.by_type('IfcPostalAddress')[0].id()"
|
||||
And I press "bim.enable_editing_address(address={address})"
|
||||
And I press "bim.add_address_attribute(name='AddressLines')"
|
||||
And I press "bim.remove_address_attribute(name='AddressLines', id=0)"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Remove address
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_person"
|
||||
And the variable "person" is "{ifc}.by_type('IfcPerson')[0].id()"
|
||||
And I press "bim.add_address(parent={person}, ifc_class='IfcPostalAddress')"
|
||||
And the variable "address" is "{ifc}.by_type('IfcPostalAddress')[0].id()"
|
||||
And I press "bim.remove_address(address={address})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable editing address
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_person"
|
||||
And the variable "person" is "{ifc}.by_type('IfcPerson')[0].id()"
|
||||
And I press "bim.add_address(parent={person}, ifc_class='IfcPostalAddress')"
|
||||
And the variable "address" is "{ifc}.by_type('IfcPostalAddress')[0].id()"
|
||||
And I press "bim.enable_editing_address(address={address})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable editing address
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_person"
|
||||
And the variable "person" is "{ifc}.by_type('IfcPerson')[0].id()"
|
||||
And I press "bim.add_address(parent={person}, ifc_class='IfcPostalAddress')"
|
||||
And the variable "address" is "{ifc}.by_type('IfcPostalAddress')[0].id()"
|
||||
And I press "bim.enable_editing_address(address={address})"
|
||||
And I press "bim.disable_editing_address()"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit address
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_person"
|
||||
And the variable "person" is "{ifc}.by_type('IfcPerson')[0].id()"
|
||||
And I press "bim.add_address(parent={person}, ifc_class='IfcPostalAddress')"
|
||||
And the variable "address" is "{ifc}.by_type('IfcPostalAddress')[0].id()"
|
||||
And I press "bim.enable_editing_address(address={address})"
|
||||
And I press "bim.edit_address()"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add organisation
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_organisation"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable editing organisation
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_organisation"
|
||||
And the variable "organisation" is "{ifc}.by_type('IfcOrganization')[0].id()"
|
||||
And I press "bim.enable_editing_organisation(organisation={organisation})"
|
||||
Then "scene.BIMOwnerProperties.active_organisation_id" is "{organisation}"
|
||||
|
||||
Scenario: Disable editing organisation
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_organisation"
|
||||
And the variable "organisation" is "{ifc}.by_type('IfcOrganization')[0].id()"
|
||||
And I press "bim.enable_editing_organisation(organisation={organisation})"
|
||||
And I press "bim.disable_editing_organisation"
|
||||
Then "scene.BIMOwnerProperties.active_organisation_id" is "0"
|
||||
|
||||
Scenario: Edit organisation
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_organisation"
|
||||
And the variable "organisation" is "{ifc}.by_type('IfcOrganization')[0].id()"
|
||||
And I press "bim.enable_editing_organisation(organisation={organisation})"
|
||||
And I press "bim.edit_organisation"
|
||||
Then "scene.BIMOwnerProperties.active_organisation_id" is "0"
|
||||
|
||||
Scenario: Remove organisation
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_organisation"
|
||||
And the variable "organisation" is "{ifc}.by_type('IfcOrganization')[-1].id()"
|
||||
And I press "bim.remove_organisation(organisation={organisation})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add person and organisation
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_person"
|
||||
And I press "bim.add_organisation"
|
||||
And the variable "person" is "{ifc}.by_type('IfcPerson')[0].id()"
|
||||
And the variable "organisation" is "{ifc}.by_type('IfcOrganization')[0].id()"
|
||||
And I press "bim.add_person_and_organisation(person={person}, organisation={organisation})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Remove person and organisation
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_person"
|
||||
And I press "bim.add_organisation"
|
||||
And the variable "person" is "{ifc}.by_type('IfcPerson')[-1].id()"
|
||||
And the variable "organisation" is "{ifc}.by_type('IfcOrganization')[-1].id()"
|
||||
And I press "bim.add_person_and_organisation(person={person}, organisation={organisation})"
|
||||
# Note: these are set to -1 temporarily to prevent crashing due to bug #1747
|
||||
And the variable "pno" is "{ifc}.by_type('IfcPersonAndOrganization')[-1].id()"
|
||||
And I press "bim.remove_person_and_organisation(person_and_organisation={pno})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Set user
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_person"
|
||||
And I press "bim.add_organisation"
|
||||
And the variable "person" is "{ifc}.by_type('IfcPerson')[0].id()"
|
||||
And the variable "organisation" is "{ifc}.by_type('IfcOrganization')[0].id()"
|
||||
And I press "bim.add_person_and_organisation(person={person}, organisation={organisation})"
|
||||
And the variable "user" is "{ifc}.by_type('IfcPersonAndOrganization')[0].id()"
|
||||
And I press "bim.set_user(user={user})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Clear user
|
||||
Given an empty IFC project
|
||||
When I press "bim.clear_user(user={user})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add actor
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_person"
|
||||
When I press "bim.add_actor"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Remove actor
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_person"
|
||||
And I press "bim.add_actor"
|
||||
And the variable "actor" is "{ifc}.by_type('IfcActor')[-1].id()"
|
||||
When I press "bim.remove_actor(actor={actor})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable editing actor
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_person"
|
||||
And I press "bim.add_actor"
|
||||
And the variable "actor" is "{ifc}.by_type('IfcActor')[0].id()"
|
||||
When I press "bim.enable_editing_actor(actor={actor})"
|
||||
Then "scene.BIMOwnerProperties.active_actor_id" is "{actor}"
|
||||
|
||||
Scenario: Disable editing actor
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_person"
|
||||
And I press "bim.add_actor"
|
||||
And the variable "actor" is "{ifc}.by_type('IfcActor')[0].id()"
|
||||
And I press "bim.enable_editing_actor(actor={actor})"
|
||||
When I press "bim.disable_editing_actor"
|
||||
Then "scene.BIMOwnerProperties.active_actor_id" is "0"
|
||||
|
||||
Scenario: Edit actor
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_person"
|
||||
And I press "bim.add_actor"
|
||||
And the variable "actor" is "{ifc}.by_type('IfcActor')[0].id()"
|
||||
And I press "bim.enable_editing_actor(actor={actor})"
|
||||
When I press "bim.edit_actor"
|
||||
Then "scene.BIMOwnerProperties.active_actor_id" is "0"
|
||||
|
||||
Scenario: Assign actor
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_person"
|
||||
And I press "bim.add_actor"
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And the variable "actor" is "{ifc}.by_type('IfcActor')[0].id()"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
When I press "bim.assign_actor(actor={actor})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Unassign actor
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_person"
|
||||
And I press "bim.add_actor"
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And the variable "actor" is "{ifc}.by_type('IfcActor')[0].id()"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
And I press "bim.assign_actor(actor={actor})"
|
||||
When I press "bim.unassign_actor(actor={actor})"
|
||||
Then nothing happens
|
||||
@@ -0,0 +1,37 @@
|
||||
@patch
|
||||
Feature: Patch
|
||||
|
||||
Scenario: Execute IFC Patch - file in memory
|
||||
Given an empty IFC project
|
||||
And I set "scene.BIMPatchProperties.ifc_patch_recipes" to "OffsetObjectPlacements"
|
||||
And I set "scene.BIMPatchProperties.should_load_from_memory" to "True"
|
||||
And I set "scene.BIMPatchProperties.ifc_patch_output" to "{cwd}/test/files/temp/basic-patched.ifc"
|
||||
And I set "scene.BIMPatchProperties.ifc_patch_args_attr['X'].string_value" to "123454321"
|
||||
And I set "scene.BIMPatchProperties.ifc_patch_args_attr['Y'].string_value" to "0"
|
||||
And I set "scene.BIMPatchProperties.ifc_patch_args_attr['Z'].string_value" to "0"
|
||||
And I set "scene.BIMPatchProperties.ifc_patch_args_attr['Should Rotate First'].bool_value" to "True"
|
||||
And I set "scene.BIMPatchProperties.ifc_patch_args_attr['Ax'].string_value" to "0"
|
||||
And I set "scene.BIMPatchProperties.ifc_patch_args_attr['Ay'].string_value" to "0"
|
||||
And I set "scene.BIMPatchProperties.ifc_patch_args_attr['Az'].string_value" to "0"
|
||||
When I press "bim.execute_ifc_patch()"
|
||||
Then the file "{cwd}/test/files/temp/basic-patched.ifc" should contain "123454321"
|
||||
|
||||
Scenario: Execute IFC Patch - file from disk
|
||||
Given an empty IFC project
|
||||
And I set "scene.BIMPatchProperties.ifc_patch_recipes" to "OffsetObjectPlacements"
|
||||
And I set "scene.BIMPatchProperties.ifc_patch_input" to "{cwd}/test/files/basic.ifc"
|
||||
And I set "scene.BIMPatchProperties.ifc_patch_output" to "{cwd}/test/files/temp/basic-patched.ifc"
|
||||
And I set "scene.BIMPatchProperties.ifc_patch_args_attr['X'].string_value" to "123454321"
|
||||
And I set "scene.BIMPatchProperties.ifc_patch_args_attr['Y'].string_value" to "0"
|
||||
And I set "scene.BIMPatchProperties.ifc_patch_args_attr['Z'].string_value" to "0"
|
||||
And I set "scene.BIMPatchProperties.ifc_patch_args_attr['Should Rotate First'].bool_value" to "True"
|
||||
And I set "scene.BIMPatchProperties.ifc_patch_args_attr['Ax'].string_value" to "0"
|
||||
And I set "scene.BIMPatchProperties.ifc_patch_args_attr['Ay'].string_value" to "0"
|
||||
And I set "scene.BIMPatchProperties.ifc_patch_args_attr['Az'].string_value" to "0"
|
||||
When I press "bim.execute_ifc_patch()"
|
||||
Then the file "{cwd}/test/files/temp/basic-patched.ifc" should contain "123454321"
|
||||
|
||||
Scenario: Run migrate patch
|
||||
Given an empty Blender session
|
||||
When I press "bim.run_migrate_patch(infile='{cwd}/test/files/ifc2x3.ifc', outfile='{cwd}/test/files/temp/ifc2x3-migrated.ifc', schema='IFC4')"
|
||||
Then the file "{cwd}/test/files/temp/ifc2x3-migrated.ifc" should contain "IFC4"
|
||||
@@ -0,0 +1,911 @@
|
||||
@project
|
||||
Feature: Project
|
||||
|
||||
Scenario: Create project
|
||||
Given an empty Blender session
|
||||
When I press "bim.create_project"
|
||||
Then an IFC file exists
|
||||
And the object "IfcProject/My Project" is an "IfcProject"
|
||||
And the object "IfcSite/My Site" is an "IfcSite"
|
||||
And the object "IfcBuilding/My Building" is an "IfcBuilding"
|
||||
And the object "IfcBuildingStorey/My Storey" is an "IfcBuildingStorey"
|
||||
And the object "IfcProject/My Project" is in the collection "IfcProject/My Project"
|
||||
And the object "IfcSite/My Site" is in the collection "IfcSite/My Site"
|
||||
And the object "IfcBuilding/My Building" is in the collection "IfcBuilding/My Building"
|
||||
And the object "IfcBuildingStorey/My Storey" is in the collection "IfcBuildingStorey/My Storey"
|
||||
|
||||
Scenario: Create project - IFC2X3
|
||||
Given an empty Blender session
|
||||
And I set "scene.BIMProjectProperties.export_schema" to "IFC2X3"
|
||||
When I press "bim.create_project"
|
||||
Then an IFC file exists
|
||||
And the object "IfcProject/My Project" is an "IfcProject"
|
||||
And the object "IfcSite/My Site" is an "IfcSite"
|
||||
And the object "IfcBuilding/My Building" is an "IfcBuilding"
|
||||
And the object "IfcBuildingStorey/My Storey" is an "IfcBuildingStorey"
|
||||
And the object "IfcProject/My Project" is in the collection "IfcProject/My Project"
|
||||
And the object "IfcSite/My Site" is in the collection "IfcSite/My Site"
|
||||
And the object "IfcBuilding/My Building" is in the collection "IfcBuilding/My Building"
|
||||
And the object "IfcBuildingStorey/My Storey" is in the collection "IfcBuildingStorey/My Storey"
|
||||
|
||||
Scenario: New project - metric (m) preset
|
||||
Given an empty Blender session
|
||||
When I press "bim.new_project(preset='metric_m')"
|
||||
Then an IFC file exists
|
||||
And the object "IfcProject/My Project" is an "IfcProject"
|
||||
And the object "IfcSite/My Site" is an "IfcSite"
|
||||
And the object "IfcBuilding/My Building" is an "IfcBuilding"
|
||||
And the object "IfcBuildingStorey/My Storey" is an "IfcBuildingStorey"
|
||||
And the object "IfcProject/My Project" is in the collection "IfcProject/My Project"
|
||||
And the object "IfcSite/My Site" is in the collection "IfcSite/My Site"
|
||||
And the object "IfcBuilding/My Building" is in the collection "IfcBuilding/My Building"
|
||||
And the object "IfcBuildingStorey/My Storey" is in the collection "IfcBuildingStorey/My Storey"
|
||||
|
||||
Scenario: New project - metric (mm) preset
|
||||
Given an empty Blender session
|
||||
When I press "bim.new_project(preset='metric_mm')"
|
||||
Then an IFC file exists
|
||||
And the object "IfcProject/My Project" is an "IfcProject"
|
||||
And the object "IfcSite/My Site" is an "IfcSite"
|
||||
And the object "IfcBuilding/My Building" is an "IfcBuilding"
|
||||
And the object "IfcBuildingStorey/My Storey" is an "IfcBuildingStorey"
|
||||
And the object "IfcProject/My Project" is in the collection "IfcProject/My Project"
|
||||
And the object "IfcSite/My Site" is in the collection "IfcSite/My Site"
|
||||
And the object "IfcBuilding/My Building" is in the collection "IfcBuilding/My Building"
|
||||
And the object "IfcBuildingStorey/My Storey" is in the collection "IfcBuildingStorey/My Storey"
|
||||
|
||||
Scenario: New project - imperial (ft) preset
|
||||
Given an empty Blender session
|
||||
When I press "bim.new_project(preset='imperial_ft')"
|
||||
Then an IFC file exists
|
||||
And the object "IfcProject/My Project" is an "IfcProject"
|
||||
And the object "IfcSite/My Site" is an "IfcSite"
|
||||
And the object "IfcBuilding/My Building" is an "IfcBuilding"
|
||||
And the object "IfcBuildingStorey/My Storey" is an "IfcBuildingStorey"
|
||||
And the object "IfcProject/My Project" is in the collection "IfcProject/My Project"
|
||||
And the object "IfcSite/My Site" is in the collection "IfcSite/My Site"
|
||||
And the object "IfcBuilding/My Building" is in the collection "IfcBuilding/My Building"
|
||||
And the object "IfcBuildingStorey/My Storey" is in the collection "IfcBuildingStorey/My Storey"
|
||||
|
||||
Scenario: New project - demo preset
|
||||
Given an empty Blender session
|
||||
When I press "bim.new_project(preset='demo')"
|
||||
Then an IFC file exists
|
||||
And the object "IfcProject/My Project" is an "IfcProject"
|
||||
And the object "IfcSite/My Site" is an "IfcSite"
|
||||
And the object "IfcBuilding/My Building" is an "IfcBuilding"
|
||||
And the object "IfcBuildingStorey/My Storey" is an "IfcBuildingStorey"
|
||||
And the object "IfcProject/My Project" is in the collection "IfcProject/My Project"
|
||||
And the object "IfcSite/My Site" is in the collection "IfcSite/My Site"
|
||||
And the object "IfcBuilding/My Building" is in the collection "IfcBuilding/My Building"
|
||||
And the object "IfcBuildingStorey/My Storey" is in the collection "IfcBuildingStorey/My Storey"
|
||||
And the object "IfcBeamType/B1" is an "IfcBeamType"
|
||||
And the object "IfcWallType/WAL50" is an "IfcWallType"
|
||||
|
||||
Scenario: New project - wizard
|
||||
Given an empty Blender session
|
||||
When I press "bim.new_project(preset='wizard')"
|
||||
Then an IFC file does not exist
|
||||
And the object "IfcProject/My Project" does not exist
|
||||
|
||||
Scenario: Append library element
|
||||
Given an empty IFC project
|
||||
When I press "bim.select_library_file(filepath='{cwd}/test/files/basic.ifc')"
|
||||
And I press "bim.change_library_element(element_name='IfcTypeProduct')"
|
||||
And I press "bim.change_library_element(element_name='IfcSlabType')"
|
||||
And I press "bim.append_library_element(definition=242, prop_index=0)"
|
||||
Then the object "IfcSlabType/Slab" is an "IfcSlabType"
|
||||
And the object "IfcSlabType/Slab" is in the collection "IfcTypeProduct"
|
||||
|
||||
Scenario: Append library element - append two elements sharing a material
|
||||
Given an empty IFC project
|
||||
And I press "bim.select_library_file(filepath='{cwd}/test/files/basic.ifc')"
|
||||
And I press "bim.change_library_element(element_name='IfcTypeProduct')"
|
||||
And I press "bim.change_library_element(element_name='IfcSlabType')"
|
||||
And I press "bim.append_library_element(definition=242, prop_index=0)"
|
||||
When I press "bim.rewind_library"
|
||||
And I press "bim.change_library_element(element_name='IfcWallType')"
|
||||
And I press "bim.append_library_element(definition=291, prop_index=0)"
|
||||
Then the object "IfcSlabType/Slab" is an "IfcSlabType"
|
||||
And the object "IfcSlabType/Slab" is in the collection "IfcTypeProduct"
|
||||
And the object "IfcWallType/Wall" is an "IfcWallType"
|
||||
And the object "IfcWallType/Wall" is in the collection "IfcTypeProduct"
|
||||
And the object "IfcSlabType/Slab" has the material "SurfaceStyle"
|
||||
And the object "IfcWallType/Wall" has the material "SurfaceStyle"
|
||||
|
||||
Scenario: Load project
|
||||
Given an empty Blender session
|
||||
When I press "bim.load_project(filepath='{cwd}/test/files/basic.ifc')"
|
||||
Then an IFC file exists
|
||||
And the object "IfcProject/My Project" is an "IfcProject"
|
||||
And the object "IfcSite/My Site" is an "IfcSite"
|
||||
And the object "IfcBuilding/My Building" is an "IfcBuilding"
|
||||
And the object "IfcBuildingStorey/Ground Floor" is an "IfcBuildingStorey"
|
||||
And the object "IfcBuildingStorey/Level 1" is an "IfcBuildingStorey"
|
||||
And the object "IfcSlab/Slab" is an "IfcSlab"
|
||||
And the object "IfcWall/Wall" is an "IfcWall"
|
||||
And the object "IfcElementAssembly/Empty" is an "IfcElementAssembly"
|
||||
And the object "IfcBeam/Beam" is an "IfcBeam"
|
||||
And the object "IfcSite/My Site" is in the collection "IfcSite/My Site"
|
||||
And the object "IfcBuilding/My Building" is in the collection "IfcBuilding/My Building"
|
||||
And the object "IfcBuildingStorey/Ground Floor" is in the collection "IfcBuildingStorey/Ground Floor"
|
||||
And the object "IfcBuildingStorey/Level 1" is in the collection "IfcBuildingStorey/Level 1"
|
||||
And the object "IfcElementAssembly/Empty" is in the collection "IfcBuildingStorey/Level 1"
|
||||
And the object "IfcBeam/Beam" is in the collection "IfcBuildingStorey/Level 1"
|
||||
And the object "IfcSlab/Slab" is in the collection "IfcBuildingStorey/Ground Floor"
|
||||
And the object "IfcWall/Wall" is in the collection "IfcBuildingStorey/Level 1"
|
||||
And "scene.BIMProjectProperties.is_loading" is "False"
|
||||
|
||||
Scenario: Load project - IfcZip
|
||||
Given an empty Blender session
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/basic.ifczip')"
|
||||
Then the object "IfcProject/My Project" is an "IfcProject"
|
||||
|
||||
Scenario: Load project - advanced mode
|
||||
Given an empty Blender session
|
||||
When I press "bim.load_project(filepath='{cwd}/test/files/basic.ifc', is_advanced=True)"
|
||||
Then an IFC file exists
|
||||
And "scene.BIMProjectProperties.is_loading" is "True"
|
||||
And the object "IfcProject/My Project" does not exist
|
||||
|
||||
Scenario: Load project elements - load all project elements
|
||||
Given an empty Blender session
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/basic.ifc', is_advanced=True)"
|
||||
When I set "scene.BIMProjectProperties.filter_mode" to "NONE"
|
||||
And I press "bim.load_project_elements"
|
||||
Then the object "IfcProject/My Project" is an "IfcProject"
|
||||
And the object "IfcSite/My Site" is an "IfcSite"
|
||||
And the object "IfcBuilding/My Building" is an "IfcBuilding"
|
||||
And the object "IfcBuildingStorey/Ground Floor" is an "IfcBuildingStorey"
|
||||
And the object "IfcBuildingStorey/Level 1" is an "IfcBuildingStorey"
|
||||
And the object "IfcSlab/Slab" is an "IfcSlab"
|
||||
And the object "IfcWall/Wall" is an "IfcWall"
|
||||
And the object "IfcElementAssembly/Empty" is an "IfcElementAssembly"
|
||||
And the object "IfcBeam/Beam" is an "IfcBeam"
|
||||
And the object "IfcSite/My Site" is in the collection "IfcSite/My Site"
|
||||
And the object "IfcBuilding/My Building" is in the collection "IfcBuilding/My Building"
|
||||
And the object "IfcBuildingStorey/Ground Floor" is in the collection "IfcBuildingStorey/Ground Floor"
|
||||
And the object "IfcBuildingStorey/Level 1" is in the collection "IfcBuildingStorey/Level 1"
|
||||
And the object "IfcElementAssembly/Empty" is in the collection "IfcBuildingStorey/Level 1"
|
||||
And the object "IfcBeam/Beam" is in the collection "IfcBuildingStorey/Level 1"
|
||||
And the object "IfcSlab/Slab" is in the collection "IfcBuildingStorey/Ground Floor"
|
||||
And the object "IfcWall/Wall" is in the collection "IfcBuildingStorey/Level 1"
|
||||
And the object "IfcSlab/Slab" has data which is an IFC representation
|
||||
And the object "IfcBeam/Beam" has data which is an IFC representation
|
||||
And the object "IfcWall/Wall" has data which is an IFC representation
|
||||
And the object "IfcSlabType/Slab" has data which is an IFC representation
|
||||
And the object "IfcWallType/Wall" has data which is an IFC representation
|
||||
And "scene.BIMProjectProperties.is_loading" is "False"
|
||||
|
||||
Scenario: Load project elements - load objects filtered by decomposition
|
||||
Given an empty Blender session
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/basic.ifc', is_advanced=True)"
|
||||
When I set "scene.BIMProjectProperties.filter_mode" to "DECOMPOSITION"
|
||||
And I set "scene.BIMProjectProperties.should_filter_spatial_elements" to "True"
|
||||
Then "scene.BIMProjectProperties.filter_categories['IfcSite/My Site'].total_elements" is "0"
|
||||
Then "scene.BIMProjectProperties.filter_categories['IfcBuilding/My Building'].total_elements" is "0"
|
||||
Then "scene.BIMProjectProperties.filter_categories['IfcBuildingStorey/Ground Floor'].total_elements" is "1"
|
||||
Then "scene.BIMProjectProperties.filter_categories['IfcBuildingStorey/Level 1'].total_elements" is "2"
|
||||
When I set "scene.BIMProjectProperties.filter_categories['IfcBuildingStorey/Level 1'].is_selected" to "True"
|
||||
And I press "bim.load_project_elements"
|
||||
Then the object "IfcProject/My Project" is an "IfcProject"
|
||||
And the object "IfcSite/My Site" is an "IfcSite"
|
||||
And the object "IfcBuilding/My Building" is an "IfcBuilding"
|
||||
And the object "IfcBuildingStorey/Level 1" is an "IfcBuildingStorey"
|
||||
And the object "IfcWall/Wall" is an "IfcWall"
|
||||
And the object "IfcElementAssembly/Empty" is an "IfcElementAssembly"
|
||||
And the object "IfcBeam/Beam" is an "IfcBeam"
|
||||
And the object "IfcSite/My Site" is in the collection "IfcSite/My Site"
|
||||
And the object "IfcBuilding/My Building" is in the collection "IfcBuilding/My Building"
|
||||
And the object "IfcBuildingStorey/Level 1" is in the collection "IfcBuildingStorey/Level 1"
|
||||
And the object "IfcWall/Wall" is in the collection "IfcBuildingStorey/Level 1"
|
||||
And the object "IfcElementAssembly/Empty" is in the collection "IfcBuildingStorey/Level 1"
|
||||
And the object "IfcBeam/Beam" is in the collection "IfcBuildingStorey/Level 1"
|
||||
And the object "IfcBuildingStorey/Ground Floor" does not exist
|
||||
And the object "IfcSlab/Slab" does not exist
|
||||
|
||||
Scenario: Load project elements - load objects filtered by IFC class
|
||||
Given an empty Blender session
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/basic.ifc', is_advanced=True)"
|
||||
When I set "scene.BIMProjectProperties.filter_mode" to "IFC_CLASS"
|
||||
And I set "scene.BIMProjectProperties.should_filter_spatial_elements" to "True"
|
||||
Then "scene.BIMProjectProperties.filter_categories['IfcWall'].total_elements" is "1"
|
||||
And "scene.BIMProjectProperties.filter_categories['IfcSlab'].total_elements" is "1"
|
||||
And "scene.BIMProjectProperties.filter_categories['IfcElementAssembly'].total_elements" is "1"
|
||||
And "scene.BIMProjectProperties.filter_categories['IfcBeam'].total_elements" is "1"
|
||||
When I set "scene.BIMProjectProperties.filter_categories['IfcSlab'].is_selected" to "True"
|
||||
And I press "bim.load_project_elements"
|
||||
Then the object "IfcProject/My Project" is an "IfcProject"
|
||||
And the object "IfcSite/My Site" is an "IfcSite"
|
||||
And the object "IfcBuilding/My Building" is an "IfcBuilding"
|
||||
And the object "IfcBuildingStorey/Ground Floor" is an "IfcBuildingStorey"
|
||||
And the object "IfcSlab/Slab" is an "IfcSlab"
|
||||
And the object "IfcSite/My Site" is in the collection "IfcSite/My Site"
|
||||
And the object "IfcBuilding/My Building" is in the collection "IfcBuilding/My Building"
|
||||
And the object "IfcBuildingStorey/Ground Floor" is in the collection "IfcBuildingStorey/Ground Floor"
|
||||
And the object "IfcSlab/Slab" is in the collection "IfcBuildingStorey/Ground Floor"
|
||||
And the object "IfcBuildingStorey/Level 1" does not exist
|
||||
And the object "IfcWall/Wall" does not exist
|
||||
|
||||
Scenario: Load project elements - load objects filtered by whitelist
|
||||
Given an empty Blender session
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/basic.ifc', is_advanced=True)"
|
||||
When I set "scene.BIMProjectProperties.filter_mode" to "WHITELIST"
|
||||
And I set "scene.BIMProjectProperties.filter_query" to "IfcSlab"
|
||||
And I set "scene.BIMProjectProperties.should_filter_spatial_elements" to "True"
|
||||
And I press "bim.load_project_elements"
|
||||
Then the object "IfcProject/My Project" is an "IfcProject"
|
||||
And the object "IfcSite/My Site" is an "IfcSite"
|
||||
And the object "IfcBuilding/My Building" is an "IfcBuilding"
|
||||
And the object "IfcBuildingStorey/Ground Floor" is an "IfcBuildingStorey"
|
||||
And the object "IfcSlab/Slab" is an "IfcSlab"
|
||||
And the object "IfcSite/My Site" is in the collection "IfcSite/My Site"
|
||||
And the object "IfcBuilding/My Building" is in the collection "IfcBuilding/My Building"
|
||||
And the object "IfcBuildingStorey/Ground Floor" is in the collection "IfcBuildingStorey/Ground Floor"
|
||||
And the object "IfcSlab/Slab" is in the collection "IfcBuildingStorey/Ground Floor"
|
||||
And the object "IfcBuildingStorey/Level 1" does not exist
|
||||
And the object "IfcWall/Wall" does not exist
|
||||
|
||||
Scenario: Load project elements - load objects filtered by blacklist
|
||||
Given an empty Blender session
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/basic.ifc', is_advanced=True)"
|
||||
When I set "scene.BIMProjectProperties.filter_mode" to "BLACKLIST"
|
||||
And I set "scene.BIMProjectProperties.filter_query" to "IfcSlab"
|
||||
And I set "scene.BIMProjectProperties.should_filter_spatial_elements" to "True"
|
||||
And I press "bim.load_project_elements"
|
||||
Then the object "IfcProject/My Project" is an "IfcProject"
|
||||
And the object "IfcSite/My Site" is an "IfcSite"
|
||||
And the object "IfcBuilding/My Building" is an "IfcBuilding"
|
||||
And the object "IfcBuildingStorey/Level 1" is an "IfcBuildingStorey"
|
||||
And the object "IfcWall/Wall" is an "IfcWall"
|
||||
And the object "IfcElementAssembly/Empty" is an "IfcElementAssembly"
|
||||
And the object "IfcBeam/Beam" is an "IfcBeam"
|
||||
And the object "IfcSite/My Site" is in the collection "IfcSite/My Site"
|
||||
And the object "IfcBuilding/My Building" is in the collection "IfcBuilding/My Building"
|
||||
And the object "IfcBuildingStorey/Level 1" is in the collection "IfcBuildingStorey/Level 1"
|
||||
And the object "IfcWall/Wall" is in the collection "IfcBuildingStorey/Level 1"
|
||||
And the object "IfcElementAssembly/Empty" is in the collection "IfcBuildingStorey/Level 1"
|
||||
And the object "IfcBeam/Beam" is in the collection "IfcBuildingStorey/Level 1"
|
||||
And the object "IfcBuildingStorey/Ground Floor" does not exist
|
||||
And the object "IfcSlab/Slab" does not exist
|
||||
|
||||
Scenario: Load project elements - load no objects due to filter
|
||||
Given an empty Blender session
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/basic.ifc', is_advanced=True)"
|
||||
When I set "scene.BIMProjectProperties.filter_mode" to "IFC_CLASS"
|
||||
And I set "scene.BIMProjectProperties.should_filter_spatial_elements" to "True"
|
||||
And I press "bim.load_project_elements"
|
||||
Then the object "IfcProject/My Project" is an "IfcProject"
|
||||
And the object "IfcSite/My Site" does not exist
|
||||
And the object "IfcBuilding/My Building" does not exist
|
||||
And the object "IfcBuildingStorey/Ground Floor" does not exist
|
||||
And the object "IfcBuildingStorey/Level 1" does not exist
|
||||
And the object "IfcSlab/Slab" does not exist
|
||||
And the object "IfcWall/Wall" does not exist
|
||||
|
||||
Scenario: Load project elements - manual offset of object placements
|
||||
Given an empty Blender session
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/manual-geolocation.ifc', is_advanced=True)"
|
||||
When I set "scene.BIMProjectProperties.false_origin_mode" to "MANUAL"
|
||||
And I set "scene.BIMProjectProperties.false_origin" to "268388500, 5774506000, 21900"
|
||||
And I press "bim.load_project_elements"
|
||||
Then the object "IfcPlate/1780 x 270 PRECAST WALL" is at "0,0,0"
|
||||
|
||||
Scenario: Load project elements - manual offset of cartesian points
|
||||
Given an empty Blender session
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/manual-geolocation-coords.ifc', is_advanced=True)"
|
||||
When I set "scene.BIMProjectProperties.false_origin_mode" to "MANUAL"
|
||||
And I set "scene.BIMProjectProperties.false_origin" to "1990711,5971553,22700"
|
||||
And I press "bim.load_project_elements"
|
||||
Then the object "IfcBuildingElementProxy/NAME" has a vertex at "0,0,0"
|
||||
And the object "IfcBuildingElementProxy/NAME" has a vertex at "-1,0,0"
|
||||
And the object "IfcBuildingElementProxy/NAME" has a vertex at "0,.5,0"
|
||||
And the object "IfcBuildingElementProxy/NAME" has a vertex at "-1,.5,0"
|
||||
And the object "IfcBuildingElementProxy/NAME" has a vertex at "-1,.5,2.2"
|
||||
|
||||
Scenario: Load project elements - auto offset of object placements
|
||||
Given an empty Blender session
|
||||
When I press "bim.load_project(filepath='{cwd}/test/files/auto-geolocation.ifc')"
|
||||
Then the object "IfcPlate/1780 x 270 PRECAST WALL" is at "0,0,0"
|
||||
|
||||
Scenario: Load project elements - auto offset of cartesian points
|
||||
Given an empty Blender session
|
||||
When I press "bim.load_project(filepath='{cwd}/test/files/manual-geolocation-coords.ifc')"
|
||||
Then the object "IfcBuildingElementProxy/NAME" is at "0,0,0"
|
||||
|
||||
Scenario: Load project elements - all georeferencing coordinate situations - disabled false origin mode
|
||||
Given an empty Blender session
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/geolocation.ifc', is_advanced=True)"
|
||||
When I set "scene.BIMProjectProperties.false_origin_mode" to "DISABLED"
|
||||
When I set "scene.BIMProjectProperties.distance_limit" to "5"
|
||||
And I press "bim.load_project_elements"
|
||||
Then "scene.BIMGeoreferenceProperties.has_blender_offset" is "False"
|
||||
And the object "IfcSite/My Site" is at "0,0,0"
|
||||
And the object "IfcBuilding/My Building" is at "0,0,0"
|
||||
And the object "IfcBuildingStorey/My Storey" is at "0,0,0"
|
||||
And the object "IfcActuator/A" is at "7,3,0"
|
||||
And the object "IfcActuator/B" is at "6,1,0"
|
||||
And the object "IfcActuator/C" is at "0,0,0"
|
||||
And the object "IfcActuator/D" is at "13,4,-1"
|
||||
And the object "IfcActuator/E" is at "6,3,0"
|
||||
And the object "IfcActuator/F" is at "3,3,0"
|
||||
And the object "IfcActuator/G" is at "15,6,-1"
|
||||
And the object "IfcActuator/H" is at "9,2,0"
|
||||
And the object "IfcActuator/I" is at "3,3,0"
|
||||
And the object "IfcActuator/J" is at "11,3,-1"
|
||||
And the object "IfcActuator/K" is at "10,0,0"
|
||||
|
||||
Scenario: Load project elements - all georeferencing coordinate situations - automatic false origin mode
|
||||
Given an empty Blender session
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/geolocation.ifc', is_advanced=True)"
|
||||
When I set "scene.BIMProjectProperties.false_origin_mode" to "AUTOMATIC"
|
||||
When I set "scene.BIMProjectProperties.distance_limit" to "5"
|
||||
And I press "bim.load_project_elements"
|
||||
Then "scene.BIMGeoreferenceProperties.has_blender_offset" is "True"
|
||||
And "scene.BIMGeoreferenceProperties.model_origin" is "13000.0,4000.0,-1000.0"
|
||||
And "scene.BIMGeoreferenceProperties.blender_offset_x" is "13000.0"
|
||||
And "scene.BIMGeoreferenceProperties.blender_offset_y" is "4000.0"
|
||||
And "scene.BIMGeoreferenceProperties.blender_offset_z" is "-1000.0"
|
||||
And the object "IfcSite/My Site" is at "0,0,0"
|
||||
And the object "IfcBuilding/My Building" is at "0,0,0"
|
||||
And the object "IfcBuildingStorey/My Storey" is at "0,0,0"
|
||||
And the object "IfcActuator/A" is at "-6,-1,1"
|
||||
And the object "IfcActuator/B" is at "-7,-3,1"
|
||||
And the object "IfcActuator/C" is at "0,0,0"
|
||||
And the object "IfcActuator/D" is at "0,0,0"
|
||||
And the object "IfcActuator/E" is at "-7,-1,1"
|
||||
And the object "IfcActuator/F" is at "-10,-1,1"
|
||||
And the object "IfcActuator/G" is at "2,2,0"
|
||||
And the object "IfcActuator/H" is at "-4,-2,1"
|
||||
And the object "IfcActuator/I" is at "-10,-1,1"
|
||||
And the object "IfcActuator/J" is at "-2,-1,0"
|
||||
And the object "IfcActuator/K" is at "-3,-4,1"
|
||||
|
||||
Scenario: Load project elements - all georeferencing coordinate situations - manual false origin mode
|
||||
Given an empty Blender session
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/geolocation.ifc', is_advanced=True)"
|
||||
When I set "scene.BIMProjectProperties.false_origin_mode" to "MANUAL"
|
||||
When I set "scene.BIMProjectProperties.false_origin" to "10000,0,0"
|
||||
When I set "scene.BIMProjectProperties.distance_limit" to "5"
|
||||
And I press "bim.load_project_elements"
|
||||
Then "scene.BIMGeoreferenceProperties.has_blender_offset" is "True"
|
||||
And "scene.BIMGeoreferenceProperties.model_origin" is "10000.0,0.0,0.0"
|
||||
And "scene.BIMGeoreferenceProperties.blender_offset_x" is "10000.0"
|
||||
And "scene.BIMGeoreferenceProperties.blender_offset_y" is "0.0"
|
||||
And "scene.BIMGeoreferenceProperties.blender_offset_z" is "0.0"
|
||||
And the object "IfcSite/My Site" is at "0,0,0"
|
||||
And the object "IfcBuilding/My Building" is at "0,0,0"
|
||||
And the object "IfcBuildingStorey/My Storey" is at "0,0,0"
|
||||
And the object "IfcActuator/A" is at "-3,3,0"
|
||||
And the object "IfcActuator/B" is at "-4,1,0"
|
||||
And the object "IfcActuator/C" is at "0,0,0"
|
||||
And the object "IfcActuator/D" is at "3,4,-1"
|
||||
And the object "IfcActuator/E" is at "-4,3,0"
|
||||
And the object "IfcActuator/F" is at "-7,3,0"
|
||||
And the object "IfcActuator/G" is at "5,6,-1"
|
||||
And the object "IfcActuator/H" is at "-1,2,0"
|
||||
And the object "IfcActuator/I" is at "-7,3,0"
|
||||
And the object "IfcActuator/J" is at "1,3,-1"
|
||||
And the object "IfcActuator/K" is at "0,0,0"
|
||||
And the object "IfcActuator/D" has a cartesian point offset of "31,4,-1"
|
||||
And the object "IfcActuator/G" has a cartesian point offset of "-25,6,-1"
|
||||
And the object "IfcActuator/J" has a cartesian point offset of "11,3,-1"
|
||||
And the object "IfcActuator/D" has a vertex at "3,2,-1"
|
||||
And the object "IfcActuator/D" has a vertex at "5,2,-1"
|
||||
And the object "IfcActuator/G" has a vertex at "5,4,-1"
|
||||
And the object "IfcActuator/G" has a vertex at "7,4,-1"
|
||||
And the object "IfcActuator/J" has a vertex at "1,1,-1"
|
||||
And the object "IfcActuator/J" has a vertex at "3,1,-1"
|
||||
|
||||
Scenario: Load project elements - all georeferencing coordinate situations with an offset site - disabled false origin mode
|
||||
Given an empty Blender session
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/geolocation-offsetsite.ifc', is_advanced=True)"
|
||||
When I set "scene.BIMProjectProperties.false_origin_mode" to "DISABLED"
|
||||
When I set "scene.BIMProjectProperties.distance_limit" to "5"
|
||||
And I press "bim.load_project_elements"
|
||||
Then "scene.BIMGeoreferenceProperties.has_blender_offset" is "False"
|
||||
And the object "IfcSite/My Site" is at "0,10,0"
|
||||
And the object "IfcBuilding/My Building" is at "0,10,0"
|
||||
And the object "IfcBuildingStorey/My Storey" is at "0,10,0"
|
||||
And the object "IfcActuator/A" is at "5.985,14.71,0"
|
||||
And the object "IfcActuator/B" is at "5.5367,12.519,0"
|
||||
And the object "IfcActuator/C" is at "0,10,0"
|
||||
And the object "IfcActuator/D" is at "11.522,17.228,-1"
|
||||
And the object "IfcActuator/E" is at "5.0191,14.451,0"
|
||||
And the object "IfcActuator/F" is at "2.1213,13.674,0"
|
||||
And the object "IfcActuator/G" is at "12.936,19.678,-1"
|
||||
And the object "IfcActuator/H" is at "8.1757,14.261,0"
|
||||
And the object "IfcActuator/I" is at "2.1213,13.674,0"
|
||||
And the object "IfcActuator/J" is at "9.8487,15.745,-1"
|
||||
And the object "IfcActuator/K" is at "9.6593,12.588,0"
|
||||
|
||||
Scenario: Load project elements - all georeferencing coordinate situations with an offset site - automatic false origin mode
|
||||
Given an empty Blender session
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/geolocation-offsetsite.ifc', is_advanced=True)"
|
||||
When I set "scene.BIMProjectProperties.false_origin_mode" to "AUTOMATIC"
|
||||
When I set "scene.BIMProjectProperties.distance_limit" to "5"
|
||||
And I press "bim.load_project_elements"
|
||||
Then "scene.BIMGeoreferenceProperties.has_blender_offset" is "True"
|
||||
And "scene.BIMGeoreferenceProperties.model_origin" is "0.0,10000.0,0.0"
|
||||
And "scene.BIMGeoreferenceProperties.blender_offset_x" is "0.0"
|
||||
And "scene.BIMGeoreferenceProperties.blender_offset_y" is "10000.0"
|
||||
And "scene.BIMGeoreferenceProperties.blender_offset_z" is "0.0"
|
||||
And the object "IfcSite/My Site" is at "0,0,0"
|
||||
And the object "IfcBuilding/My Building" is at "0,0,0"
|
||||
And the object "IfcBuildingStorey/My Storey" is at "0,0,0"
|
||||
And the object "IfcActuator/A" is at "7,3,0"
|
||||
And the object "IfcActuator/B" is at "6,1,0"
|
||||
And the object "IfcActuator/C" is at "0,0,0"
|
||||
And the object "IfcActuator/D" is at "13,4,-1"
|
||||
And the object "IfcActuator/E" is at "6,3,0"
|
||||
And the object "IfcActuator/F" is at "3,3,0"
|
||||
And the object "IfcActuator/G" is at "15,6,-1"
|
||||
And the object "IfcActuator/H" is at "9,2,0"
|
||||
And the object "IfcActuator/I" is at "3,3,0"
|
||||
And the object "IfcActuator/J" is at "11,3,-1"
|
||||
And the object "IfcActuator/K" is at "10,0,0"
|
||||
|
||||
Scenario: Load project elements - all georeferencing coordinate situations with an offset site - manual false origin mode
|
||||
Given an empty Blender session
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/geolocation-offsetsite.ifc', is_advanced=True)"
|
||||
And I set "scene.BIMProjectProperties.false_origin_mode" to "MANUAL"
|
||||
And I set "scene.BIMProjectProperties.false_origin" to "0,10000,0"
|
||||
And I set "scene.BIMProjectProperties.distance_limit" to "5"
|
||||
When I press "bim.load_project_elements"
|
||||
Then "scene.BIMGeoreferenceProperties.has_blender_offset" is "True"
|
||||
And "scene.BIMGeoreferenceProperties.model_origin" is "0.0,10000.0,0.0"
|
||||
And "scene.BIMGeoreferenceProperties.blender_offset_x" is "0.0"
|
||||
And "scene.BIMGeoreferenceProperties.blender_offset_y" is "10000.0"
|
||||
And "scene.BIMGeoreferenceProperties.blender_offset_z" is "0.0"
|
||||
And the object "IfcSite/My Site" is at "0,0,0"
|
||||
And the object "IfcBuilding/My Building" is at "0,0,0"
|
||||
And the object "IfcBuildingStorey/My Storey" is at "0,0,0"
|
||||
And the object "IfcActuator/A" is at "5.985,4.71,0"
|
||||
And the object "IfcActuator/B" is at "5.5367,2.519,0"
|
||||
And the object "IfcActuator/C" is at "0,0,0"
|
||||
And the object "IfcActuator/D" is at "11.522,7.228,-1"
|
||||
And the object "IfcActuator/E" is at "5.0191,4.451,0"
|
||||
And the object "IfcActuator/F" is at "2.1213,3.674,0"
|
||||
And the object "IfcActuator/G" is at "12.936,9.678,-1"
|
||||
And the object "IfcActuator/H" is at "8.1757,4.261,0"
|
||||
And the object "IfcActuator/I" is at "2.1213,3.674,0"
|
||||
And the object "IfcActuator/J" is at "9.8487,5.745,-1"
|
||||
And the object "IfcActuator/K" is at "9.6593,2.588,0"
|
||||
And the object "IfcActuator/D" has a cartesian point offset of "31,4,-1"
|
||||
And the object "IfcActuator/G" has a cartesian point offset of "-25,6,-1"
|
||||
And the object "IfcActuator/J" has a cartesian point offset of "11,3,-1"
|
||||
And the object "IfcActuator/D" has a vertex at "12.039,5.296,-1"
|
||||
And the object "IfcActuator/D" has a vertex at "13.971,5.814,-1"
|
||||
And the object "IfcActuator/G" has a vertex at "13.454,7.746,-1"
|
||||
And the object "IfcActuator/G" has a vertex at "15.385,8.264,-1"
|
||||
And the object "IfcActuator/J" has a vertex at "10.366,3.813,-1"
|
||||
And the object "IfcActuator/J" has a vertex at "12.298,4.331,-1"
|
||||
|
||||
Scenario: Load project elements - all georeferencing coordinate situations with an offset site - manual false origin mode - with custom project north
|
||||
Given an empty Blender session
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/geolocation-offsetsite.ifc', is_advanced=True)"
|
||||
And I set "scene.BIMProjectProperties.false_origin_mode" to "MANUAL"
|
||||
And I set "scene.BIMProjectProperties.false_origin" to "0,10000,0"
|
||||
And I set "scene.BIMProjectProperties.project_north" to "-15"
|
||||
And I set "scene.BIMProjectProperties.distance_limit" to "5"
|
||||
When I press "bim.load_project_elements"
|
||||
Then "scene.BIMGeoreferenceProperties.has_blender_offset" is "True"
|
||||
And "scene.BIMGeoreferenceProperties.model_origin" is "0.0,10000.0,0.0"
|
||||
And "scene.BIMGeoreferenceProperties.blender_offset_x" is "0.0"
|
||||
And "scene.BIMGeoreferenceProperties.blender_offset_y" is "10000.0"
|
||||
And "scene.BIMGeoreferenceProperties.blender_offset_z" is "0.0"
|
||||
And the object "IfcSite/My Site" is at "0,0,0"
|
||||
And the object "IfcBuilding/My Building" is at "0,0,0"
|
||||
And the object "IfcBuildingStorey/My Storey" is at "0,0,0"
|
||||
And the object "IfcActuator/A" is at "7,3,0"
|
||||
And the object "IfcActuator/B" is at "6,1,0"
|
||||
And the object "IfcActuator/C" is at "0,0,0"
|
||||
And the object "IfcActuator/D" is at "13,4,-1"
|
||||
And the object "IfcActuator/E" is at "6,3,0"
|
||||
And the object "IfcActuator/F" is at "3,3,0"
|
||||
And the object "IfcActuator/G" is at "15,6,-1"
|
||||
And the object "IfcActuator/H" is at "9,2,0"
|
||||
And the object "IfcActuator/I" is at "3,3,0"
|
||||
And the object "IfcActuator/J" is at "11,3,-1"
|
||||
And the object "IfcActuator/K" is at "10,0,0"
|
||||
|
||||
Scenario: Load project elements - all georeferencing coordinate situations with a map conversion - disabled false origin mode (this should be identical to the situation with no map conversion)
|
||||
Given an empty Blender session
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/geolocation-mapconversion.ifc', is_advanced=True)"
|
||||
When I set "scene.BIMProjectProperties.false_origin_mode" to "DISABLED"
|
||||
When I set "scene.BIMProjectProperties.distance_limit" to "5"
|
||||
And I press "bim.load_project_elements"
|
||||
Then "scene.BIMGeoreferenceProperties.has_blender_offset" is "False"
|
||||
And the object "IfcSite/My Site" is at "0,0,0"
|
||||
And the object "IfcBuilding/My Building" is at "0,0,0"
|
||||
And the object "IfcBuildingStorey/My Storey" is at "0,0,0"
|
||||
And the object "IfcActuator/A" is at "7,3,0"
|
||||
And the object "IfcActuator/B" is at "6,1,0"
|
||||
And the object "IfcActuator/C" is at "0,0,0"
|
||||
And the object "IfcActuator/D" is at "13,4,-1"
|
||||
And the object "IfcActuator/E" is at "6,3,0"
|
||||
And the object "IfcActuator/F" is at "3,3,0"
|
||||
And the object "IfcActuator/G" is at "15,6,-1"
|
||||
And the object "IfcActuator/H" is at "9,2,0"
|
||||
And the object "IfcActuator/I" is at "3,3,0"
|
||||
And the object "IfcActuator/J" is at "11,3,-1"
|
||||
And the object "IfcActuator/K" is at "10,0,0"
|
||||
|
||||
Scenario: Load project elements - all georeferencing coordinate situations with a map conversion - automatic false origin mode (this should affect the Blender eastings and northings, which is now different to the Blender offset XYZ, but is otherwise identical to the non-map conversion variant)
|
||||
Given an empty Blender session
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/geolocation-mapconversion.ifc', is_advanced=True)"
|
||||
When I set "scene.BIMProjectProperties.false_origin_mode" to "AUTOMATIC"
|
||||
When I set "scene.BIMProjectProperties.distance_limit" to "5"
|
||||
And I press "bim.load_project_elements"
|
||||
Then "scene.BIMGeoreferenceProperties.has_blender_offset" is "True"
|
||||
And "scene.BIMGeoreferenceProperties.model_origin" is "28000.0,4000.0,-1000.0"
|
||||
And "scene.BIMGeoreferenceProperties.blender_offset_x" is "13000.0"
|
||||
And "scene.BIMGeoreferenceProperties.blender_offset_y" is "4000.0"
|
||||
And "scene.BIMGeoreferenceProperties.blender_offset_z" is "-1000.0"
|
||||
And the object "IfcSite/My Site" is at "0,0,0"
|
||||
And the object "IfcBuilding/My Building" is at "0,0,0"
|
||||
And the object "IfcBuildingStorey/My Storey" is at "0,0,0"
|
||||
And the object "IfcActuator/A" is at "-6,-1,1"
|
||||
And the object "IfcActuator/B" is at "-7,-3,1"
|
||||
And the object "IfcActuator/C" is at "0,0,0"
|
||||
And the object "IfcActuator/D" is at "0,0,0"
|
||||
And the object "IfcActuator/E" is at "-7,-1,1"
|
||||
And the object "IfcActuator/F" is at "-10,-1,1"
|
||||
And the object "IfcActuator/G" is at "2,2,0"
|
||||
And the object "IfcActuator/H" is at "-4,-2,1"
|
||||
And the object "IfcActuator/I" is at "-10,-1,1"
|
||||
And the object "IfcActuator/J" is at "-2,-1,0"
|
||||
And the object "IfcActuator/K" is at "-3,-4,1"
|
||||
|
||||
Scenario: Load project elements - all georeferencing coordinate situations with a map conversion - manual false origin mode (this should affect the Blender eastings and northings, which is now different to the Blender offset XYZ, but is otherwise identical to the non-map conversion variant)
|
||||
Given an empty Blender session
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/geolocation-mapconversion.ifc', is_advanced=True)"
|
||||
When I set "scene.BIMProjectProperties.false_origin_mode" to "MANUAL"
|
||||
When I set "scene.BIMProjectProperties.false_origin" to "25000,0,0"
|
||||
When I set "scene.BIMProjectProperties.distance_limit" to "5"
|
||||
And I press "bim.load_project_elements"
|
||||
Then "scene.BIMGeoreferenceProperties.has_blender_offset" is "True"
|
||||
And "scene.BIMGeoreferenceProperties.model_origin" is "25000.0,0.0,0.0"
|
||||
And "scene.BIMGeoreferenceProperties.blender_offset_x" is "10000.0"
|
||||
And "scene.BIMGeoreferenceProperties.blender_offset_y" is "0.0"
|
||||
And "scene.BIMGeoreferenceProperties.blender_offset_z" is "0.0"
|
||||
And the object "IfcSite/My Site" is at "0,0,0"
|
||||
And the object "IfcBuilding/My Building" is at "0,0,0"
|
||||
And the object "IfcBuildingStorey/My Storey" is at "0,0,0"
|
||||
And the object "IfcActuator/A" is at "-3,3,0"
|
||||
And the object "IfcActuator/B" is at "-4,1,0"
|
||||
And the object "IfcActuator/C" is at "0,0,0"
|
||||
And the object "IfcActuator/D" is at "3,4,-1"
|
||||
And the object "IfcActuator/E" is at "-4,3,0"
|
||||
And the object "IfcActuator/F" is at "-7,3,0"
|
||||
And the object "IfcActuator/G" is at "5,6,-1"
|
||||
And the object "IfcActuator/H" is at "-1,2,0"
|
||||
And the object "IfcActuator/I" is at "-7,3,0"
|
||||
And the object "IfcActuator/J" is at "1,3,-1"
|
||||
And the object "IfcActuator/K" is at "0,0,0"
|
||||
And the object "IfcActuator/D" has a cartesian point offset of "31,4,-1"
|
||||
And the object "IfcActuator/G" has a cartesian point offset of "-25,6,-1"
|
||||
And the object "IfcActuator/J" has a cartesian point offset of "11,3,-1"
|
||||
And the object "IfcActuator/D" has a vertex at "3,2,-1"
|
||||
And the object "IfcActuator/D" has a vertex at "5,2,-1"
|
||||
And the object "IfcActuator/G" has a vertex at "5,4,-1"
|
||||
And the object "IfcActuator/G" has a vertex at "7,4,-1"
|
||||
And the object "IfcActuator/J" has a vertex at "1,1,-1"
|
||||
And the object "IfcActuator/J" has a vertex at "3,1,-1"
|
||||
|
||||
Scenario: Load project elements - all georeferencing coordinate situations with map conversion and an offset site - disabled false origin mode
|
||||
Given an empty Blender session
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/geolocation-mapconversion-offsetsite.ifc', is_advanced=True)"
|
||||
When I set "scene.BIMProjectProperties.false_origin_mode" to "DISABLED"
|
||||
When I set "scene.BIMProjectProperties.distance_limit" to "5"
|
||||
And I press "bim.load_project_elements"
|
||||
Then "scene.BIMGeoreferenceProperties.has_blender_offset" is "False"
|
||||
And the object "IfcSite/My Site" is at "0,10,0"
|
||||
And the object "IfcBuilding/My Building" is at "0,10,0"
|
||||
And the object "IfcBuildingStorey/My Storey" is at "0,10,0"
|
||||
And the object "IfcActuator/A" is at "5.985,14.71,0"
|
||||
And the object "IfcActuator/B" is at "5.5367,12.519,0"
|
||||
And the object "IfcActuator/C" is at "0,10,0"
|
||||
And the object "IfcActuator/D" is at "11.522,17.228,-1"
|
||||
And the object "IfcActuator/E" is at "5.0191,14.451,0"
|
||||
And the object "IfcActuator/F" is at "2.1213,13.674,0"
|
||||
And the object "IfcActuator/G" is at "12.936,19.678,-1"
|
||||
And the object "IfcActuator/H" is at "8.1757,14.261,0"
|
||||
And the object "IfcActuator/I" is at "2.1213,13.674,0"
|
||||
And the object "IfcActuator/J" is at "9.8487,15.745,-1"
|
||||
And the object "IfcActuator/K" is at "9.6593,12.588,0"
|
||||
|
||||
Scenario: Load project elements - all georeferencing coordinate situations with map conversion and an offset site - automatic false origin mode
|
||||
Given an empty Blender session
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/geolocation-mapconversion-offsetsite.ifc', is_advanced=True)"
|
||||
When I set "scene.BIMProjectProperties.false_origin_mode" to "AUTOMATIC"
|
||||
When I set "scene.BIMProjectProperties.distance_limit" to "5"
|
||||
And I press "bim.load_project_elements"
|
||||
Then "scene.BIMGeoreferenceProperties.has_blender_offset" is "True"
|
||||
And "scene.BIMGeoreferenceProperties.model_origin" is "15000.0,10000.0,0.0"
|
||||
And "scene.BIMGeoreferenceProperties.blender_offset_x" is "0.0"
|
||||
And "scene.BIMGeoreferenceProperties.blender_offset_y" is "10000.0"
|
||||
And "scene.BIMGeoreferenceProperties.blender_offset_z" is "0.0"
|
||||
And the object "IfcSite/My Site" is at "0,0,0"
|
||||
And the object "IfcBuilding/My Building" is at "0,0,0"
|
||||
And the object "IfcBuildingStorey/My Storey" is at "0,0,0"
|
||||
And the object "IfcActuator/A" is at "7,3,0"
|
||||
And the object "IfcActuator/B" is at "6,1,0"
|
||||
And the object "IfcActuator/C" is at "0,0,0"
|
||||
And the object "IfcActuator/D" is at "13,4,-1"
|
||||
And the object "IfcActuator/E" is at "6,3,0"
|
||||
And the object "IfcActuator/F" is at "3,3,0"
|
||||
And the object "IfcActuator/G" is at "15,6,-1"
|
||||
And the object "IfcActuator/H" is at "9,2,0"
|
||||
And the object "IfcActuator/I" is at "3,3,0"
|
||||
And the object "IfcActuator/J" is at "11,3,-1"
|
||||
And the object "IfcActuator/K" is at "10,0,0"
|
||||
|
||||
Scenario: Load project elements - all georeferencing coordinate situations with map conversion and an offset site - manual false origin mode
|
||||
Given an empty Blender session
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/geolocation-mapconversion-offsetsite.ifc', is_advanced=True)"
|
||||
When I set "scene.BIMProjectProperties.false_origin_mode" to "MANUAL"
|
||||
When I set "scene.BIMProjectProperties.false_origin" to "15000,10000,0"
|
||||
When I set "scene.BIMProjectProperties.distance_limit" to "5"
|
||||
And I press "bim.load_project_elements"
|
||||
Then "scene.BIMGeoreferenceProperties.has_blender_offset" is "True"
|
||||
And "scene.BIMGeoreferenceProperties.model_origin" is "15000.0,10000.0,0.0"
|
||||
And "scene.BIMGeoreferenceProperties.blender_offset_x" is "0.0"
|
||||
And "scene.BIMGeoreferenceProperties.blender_offset_y" is "10000.0"
|
||||
And "scene.BIMGeoreferenceProperties.blender_offset_z" is "0.0"
|
||||
And the object "IfcSite/My Site" is at "0,0,0"
|
||||
And the object "IfcBuilding/My Building" is at "0,0,0"
|
||||
And the object "IfcBuildingStorey/My Storey" is at "0,0,0"
|
||||
And the object "IfcActuator/A" is at "5.985,4.71,0"
|
||||
And the object "IfcActuator/B" is at "5.5367,2.519,0"
|
||||
And the object "IfcActuator/C" is at "0,0,0"
|
||||
And the object "IfcActuator/D" is at "11.522,7.228,-1"
|
||||
And the object "IfcActuator/E" is at "5.0191,4.451,0"
|
||||
And the object "IfcActuator/F" is at "2.1213,3.674,0"
|
||||
And the object "IfcActuator/G" is at "12.936,9.678,-1"
|
||||
And the object "IfcActuator/H" is at "8.1757,4.261,0"
|
||||
And the object "IfcActuator/I" is at "2.1213,3.674,0"
|
||||
And the object "IfcActuator/J" is at "9.8487,5.745,-1"
|
||||
And the object "IfcActuator/K" is at "9.6593,2.588,0"
|
||||
And the object "IfcActuator/D" has a cartesian point offset of "31,4,-1"
|
||||
And the object "IfcActuator/G" has a cartesian point offset of "-25,6,-1"
|
||||
And the object "IfcActuator/J" has a cartesian point offset of "11,3,-1"
|
||||
And the object "IfcActuator/D" has a vertex at "12.039,5.296,-1"
|
||||
And the object "IfcActuator/D" has a vertex at "13.971,5.814,-1"
|
||||
And the object "IfcActuator/G" has a vertex at "13.454,7.746,-1"
|
||||
And the object "IfcActuator/G" has a vertex at "15.385,8.264,-1"
|
||||
And the object "IfcActuator/J" has a vertex at "10.366,3.813,-1"
|
||||
And the object "IfcActuator/J" has a vertex at "12.298,4.331,-1"
|
||||
|
||||
Scenario: Link IFC
|
||||
Given an empty IFC project
|
||||
When I press "bim.link_ifc(filepath='{cwd}/test/files/basic.ifc')"
|
||||
Then "scene.BIMProjectProperties.links['{cwd}/test/files/basic.ifc'].is_loaded" is "True"
|
||||
And the collection "IfcProject/basic.ifc" exists
|
||||
And the object "Chunk" exists
|
||||
And the object "Chunk" is placed in the collection "IfcProject/basic.ifc"
|
||||
|
||||
Scenario: Link IFC - disabled false origin mode
|
||||
Given an empty IFC project
|
||||
# Not currently possible via UI
|
||||
And I set "scene.BIMProjectProperties.distance_limit" to "5"
|
||||
And I set "scene.BIMProjectProperties.false_origin_mode" to "DISABLED"
|
||||
When I press "bim.link_ifc(filepath='{cwd}/test/files/geolocation.ifc', use_cache=False)"
|
||||
Then the object "Chunk" exists
|
||||
And the object "Chunk" has a vertex at "2,2,-1"
|
||||
And the object "Chunk" has a vertex at "9,-1,-1"
|
||||
And the object "Chunk" has a vertex at "17,4,-1"
|
||||
|
||||
Scenario: Link IFC - from an empty IFC project - automatic false origin mode (0,0,0 will be the false origin)
|
||||
Given an empty IFC project
|
||||
# Not currently possible via UI
|
||||
And I set "scene.BIMProjectProperties.distance_limit" to "5"
|
||||
And I set "scene.BIMProjectProperties.false_origin_mode" to "AUTOMATIC"
|
||||
When I press "bim.link_ifc(filepath='{cwd}/test/files/geolocation.ifc', use_cache=False)"
|
||||
Then the object "Chunk" exists
|
||||
And the object "Chunk" has a vertex at "2,2,-1"
|
||||
And the object "Chunk" has a vertex at "9,-1,-1"
|
||||
And the object "Chunk" has a vertex at "17,4,-1"
|
||||
|
||||
Scenario: Link IFC - from an empty Blender session - automatic false origin mode (a new false origin will be detected)
|
||||
Given an empty Blender session
|
||||
# Not currently possible via UI
|
||||
And I set "scene.BIMProjectProperties.distance_limit" to "5"
|
||||
And I set "scene.BIMProjectProperties.false_origin_mode" to "AUTOMATIC"
|
||||
When I press "bim.link_ifc(filepath='{cwd}/test/files/geolocation.ifc', use_cache=False)"
|
||||
Then the object "Chunk" exists
|
||||
And the object "Chunk" has a vertex at "-11,-2,0"
|
||||
And the object "Chunk" has a vertex at "-4,-5,0"
|
||||
And the object "Chunk" has a vertex at "4,0,0"
|
||||
|
||||
Scenario: Link IFC - manual false origin mode
|
||||
Given an empty Blender session
|
||||
# Not currently possible via UI
|
||||
And I set "scene.BIMProjectProperties.distance_limit" to "5"
|
||||
And I set "scene.BIMProjectProperties.false_origin_mode" to "MANUAL"
|
||||
And I set "scene.BIMProjectProperties.false_origin" to "10000,0,0"
|
||||
When I press "bim.link_ifc(filepath='{cwd}/test/files/geolocation.ifc', use_cache=False)"
|
||||
Then the object "Chunk" exists
|
||||
And the object "Chunk" has a vertex at "-8,2,-1"
|
||||
And the object "Chunk" has a vertex at "-1,-1,-1"
|
||||
And the object "Chunk" has a vertex at "7,4,-1"
|
||||
|
||||
Scenario: Link IFC - automatic false origin mode - two different false origins and project norths - grid north is up because we start with geolocation.ifc
|
||||
Given an empty Blender session
|
||||
# Not currently possible via UI
|
||||
And I set "scene.BIMProjectProperties.distance_limit" to "5"
|
||||
And I set "scene.BIMProjectProperties.false_origin_mode" to "AUTOMATIC"
|
||||
When I press "bim.link_ifc(filepath='{cwd}/test/files/geolocation.ifc', use_cache=False)"
|
||||
And I press "bim.link_ifc(filepath='{cwd}/test/files/geolocation-mapconversion-angle.ifc', use_cache=False)"
|
||||
Then the object "Col:IfcProject/geolocation.ifc:Chunk" exists
|
||||
And the object "Col:IfcProject/geolocation-mapconversion-angle.ifc:Chunk" exists
|
||||
And the object "Col:IfcProject/geolocation.ifc:Chunk" has a vertex at "-11,-2,0"
|
||||
And the object "Col:IfcProject/geolocation.ifc:Chunk" has a vertex at "-4,-5,0"
|
||||
And the object "Col:IfcProject/geolocation.ifc:Chunk" has a vertex at "4,0,0"
|
||||
And the object "Col:IfcProject/geolocation-mapconversion-angle.ifc:Chunk" has a vertex at "4.732,-3.268,0"
|
||||
And the object "Col:IfcProject/geolocation-mapconversion-angle.ifc:Chunk" has a vertex at "9.294,-9.366,0"
|
||||
And the object "Col:IfcProject/geolocation-mapconversion-angle.ifc:Chunk" has a vertex at "18.722,-9.036,0"
|
||||
|
||||
Scenario: Link IFC - automatic false origin mode - two different false origins and project norths - project north is up because we start with geolocation-mapconversion-angle.ifc
|
||||
Given an empty Blender session
|
||||
# Not currently possible via UI
|
||||
And I set "scene.BIMProjectProperties.distance_limit" to "5"
|
||||
And I set "scene.BIMProjectProperties.false_origin_mode" to "AUTOMATIC"
|
||||
When I press "bim.link_ifc(filepath='{cwd}/test/files/geolocation-mapconversion-angle.ifc', use_cache=False)"
|
||||
And I press "bim.link_ifc(filepath='{cwd}/test/files/geolocation.ifc', use_cache=False)"
|
||||
Then the object "Col:IfcProject/geolocation.ifc:Chunk" exists
|
||||
And the object "Col:IfcProject/geolocation-mapconversion-angle.ifc:Chunk" exists
|
||||
And the object "Col:IfcProject/geolocation-mapconversion-angle.ifc:Chunk" has a vertex at "-11,-2,0"
|
||||
And the object "Col:IfcProject/geolocation-mapconversion-angle.ifc:Chunk" has a vertex at "-4,-5,0"
|
||||
And the object "Col:IfcProject/geolocation-mapconversion-angle.ifc:Chunk" has a vertex at "4,0,0"
|
||||
And the object "Col:IfcProject/geolocation.ifc:Chunk" has a vertex at "-25.258,-8.768,0"
|
||||
And the object "Col:IfcProject/geolocation.ifc:Chunk" has a vertex at "-17.696,-7.866,0"
|
||||
And the object "Col:IfcProject/geolocation.ifc:Chunk" has a vertex at "-13.268,0.464,0"
|
||||
|
||||
Scenario: Link IFC - automatic false origin mode - three identical false origins but different project and map units
|
||||
Given an empty Blender session
|
||||
# Not currently possible via UI
|
||||
And I set "scene.BIMProjectProperties.distance_limit" to "5"
|
||||
And I set "scene.BIMProjectProperties.false_origin_mode" to "AUTOMATIC"
|
||||
When I press "bim.link_ifc(filepath='{cwd}/test/files/geolocation-unit1.ifc', use_cache=False)"
|
||||
And I press "bim.link_ifc(filepath='{cwd}/test/files/geolocation-unit2.ifc', use_cache=False)"
|
||||
And I press "bim.link_ifc(filepath='{cwd}/test/files/geolocation-unit3.ifc', use_cache=False)"
|
||||
Then the object "Col:IfcProject/geolocation-unit1.ifc:Chunk" exists
|
||||
And the object "Col:IfcProject/geolocation-unit2.ifc:Chunk" exists
|
||||
And the object "Col:IfcProject/geolocation-unit3.ifc:Chunk" exists
|
||||
And the object "Col:IfcProject/geolocation-unit1.ifc:Chunk" has a vertex at "7.294,-5.366,-1"
|
||||
And the object "Col:IfcProject/geolocation-unit2.ifc:Chunk" has a vertex at "7.294,-5.366,-1"
|
||||
And the object "Col:IfcProject/geolocation-unit3.ifc:Chunk" has a vertex at "7.294,-5.366,-1"
|
||||
|
||||
Scenario: Toggle link visibility - wireframe mode
|
||||
Given an empty IFC project
|
||||
And I press "bim.link_ifc(filepath='{cwd}/test/files/basic.ifc')"
|
||||
When I press "bim.toggle_link_visibility(link='{cwd}/test/files/basic.ifc', mode='WIREFRAME')"
|
||||
Then "scene.BIMProjectProperties.links['{cwd}/test/files/basic.ifc'].is_wireframe" is "True"
|
||||
And the object "Chunk" should display as "WIRE"
|
||||
When I press "bim.toggle_link_visibility(link='{cwd}/test/files/basic.ifc', mode='WIREFRAME')"
|
||||
Then "scene.BIMProjectProperties.links['{cwd}/test/files/basic.ifc'].is_wireframe" is "False"
|
||||
And the object "Chunk" should display as "TEXTURED"
|
||||
|
||||
Scenario: Toggle link selectability
|
||||
Given an empty IFC project
|
||||
And I press "bim.link_ifc(filepath='{cwd}/test/files/basic.ifc')"
|
||||
When I press "bim.toggle_link_selectability(link='{cwd}/test/files/basic.ifc')"
|
||||
Then "scene.BIMProjectProperties.links['{cwd}/test/files/basic.ifc'].is_selectable" is "False"
|
||||
And the collection "IfcProject/basic.ifc" is unselectable
|
||||
When I press "bim.toggle_link_selectability(link='{cwd}/test/files/basic.ifc')"
|
||||
Then "scene.BIMProjectProperties.links['{cwd}/test/files/basic.ifc'].is_selectable" is "True"
|
||||
And the collection "IfcProject/basic.ifc" is selectable
|
||||
|
||||
Scenario: Toggle link visibility - visible mode
|
||||
Given an empty IFC project
|
||||
And I press "bim.link_ifc(filepath='{cwd}/test/files/basic.ifc')"
|
||||
When I press "bim.toggle_link_visibility(link='{cwd}/test/files/basic.ifc', mode='VISIBLE')"
|
||||
Then "scene.BIMProjectProperties.links['{cwd}/test/files/basic.ifc'].is_hidden" is "True"
|
||||
And the collection "IfcProject/basic.ifc" exclude status is "True"
|
||||
When I press "bim.toggle_link_visibility(link='{cwd}/test/files/basic.ifc', mode='VISIBLE')"
|
||||
Then "scene.BIMProjectProperties.links['{cwd}/test/files/basic.ifc'].is_hidden" is "False"
|
||||
And the collection "IfcProject/basic.ifc" exclude status is "False"
|
||||
|
||||
Scenario: Unload link
|
||||
Given an empty Blender session
|
||||
And I press "bim.link_ifc(filepath='{cwd}/test/files/basic.ifc')"
|
||||
When I press "bim.unload_link(filepath='{cwd}/test/files/basic.ifc')"
|
||||
Then "scene.BIMProjectProperties.links['{cwd}/test/files/basic.ifc'].is_loaded" is "False"
|
||||
And the collection "IfcProject/basic.ifc" does not exist
|
||||
|
||||
Scenario: Load link
|
||||
Given an empty Blender session
|
||||
And I press "bim.link_ifc(filepath='{cwd}/test/files/basic.ifc')"
|
||||
And I press "bim.unload_link(filepath='{cwd}/test/files/basic.ifc')"
|
||||
When I press "bim.load_link(filepath='{cwd}/test/files/basic.ifc')"
|
||||
Then "scene.BIMProjectProperties.links['{cwd}/test/files/basic.ifc'].is_loaded" is "True"
|
||||
And the collection "IfcProject/basic.ifc" exists in viewlayer
|
||||
|
||||
Scenario: Unlink IFC
|
||||
Given an empty Blender session
|
||||
And I press "bim.link_ifc(filepath='{cwd}/test/files/basic.ifc')"
|
||||
And I press "bim.unload_link(filepath='{cwd}/test/files/basic.ifc')"
|
||||
When I press "bim.unlink_ifc(filepath='{cwd}/test/files/basic.ifc')"
|
||||
Then "scene.BIMProjectProperties.links.get('{cwd}/test/files/basic.ifc')" is "None"
|
||||
And "scene.collection.children.get('IfcProject/basic.ifc')" is "None"
|
||||
And the object "Chunk" does not exist
|
||||
|
||||
Scenario: Export IFC - blank project
|
||||
Given an empty IFC project
|
||||
When I press "bim.save_project(filepath='{cwd}/test/files/temp/export.ifc')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Export IFC - with basic contents
|
||||
Given an empty Blender session
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/basic.ifc')"
|
||||
When I press "bim.save_project(filepath='{cwd}/test/files/temp/export.ifc')"
|
||||
Then "scene.BIMProperties.ifc_file" is "{cwd}/test/files/temp/export.ifc"
|
||||
|
||||
Scenario: Export IFC - with basic contents and saving as another file
|
||||
Given an empty Blender session
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/basic.ifc')"
|
||||
When I press "bim.save_project(filepath='{cwd}/test/files/temp/export.ifc', should_save_as=True)"
|
||||
Then "scene.BIMProperties.ifc_file" is "{cwd}/test/files/temp/export.ifc"
|
||||
|
||||
Scenario: Export IFC - with basic contents and saving as IfcJSON where import is not supported
|
||||
Given an empty Blender session
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/basic.ifc')"
|
||||
When I press "bim.save_project(filepath='{cwd}/test/files/temp/export.ifcjson', should_save_as=True)"
|
||||
Then "scene.BIMProperties.ifc_file" is "{cwd}/test/files/basic.ifc"
|
||||
|
||||
Scenario: Export IFC - with basic contents and round-tripping an IfcZip
|
||||
Given an empty Blender session
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/basic.ifc')"
|
||||
When I press "bim.save_project(filepath='{cwd}/test/files/temp/export.ifczip', should_save_as=True)"
|
||||
Then "scene.BIMProperties.ifc_file" is "{cwd}/test/files/basic.ifc"
|
||||
When an empty Blender session is started
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/temp/export.ifczip')"
|
||||
Then the object "IfcProject/My Project" is an "IfcProject"
|
||||
|
||||
Scenario: Export IFC - with basic contents and saving as a relative path
|
||||
Given an empty Blender session
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/basic.ifc')"
|
||||
When I press "wm.save_mainfile(filepath='{cwd}/test/files/temp/export.blend')"
|
||||
And I press "bim.save_project(filepath='{cwd}/test/files/temp/export.ifc', use_relative_path=True, save_as_invoked=True)"
|
||||
Then "scene.BIMProperties.ifc_file" is "export.ifc"
|
||||
|
||||
Scenario: Export IFC - with deleted objects synchronised
|
||||
Given an empty IFC project
|
||||
When the object "IfcBuildingStorey/My Storey" is selected
|
||||
And I delete the selected objects
|
||||
And I press "bim.save_project(filepath='{cwd}/test/files/temp/export.ifc')"
|
||||
And an empty Blender session is started
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/temp/export.ifc')"
|
||||
Then the object "IfcBuildingStorey/My Storey" does not exist
|
||||
|
||||
Scenario: Export IFC - with moved object location synchronised
|
||||
Given an empty IFC project
|
||||
When the object "IfcBuildingStorey/My Storey" is moved to "0,0,1"
|
||||
And I press "bim.save_project(filepath='{cwd}/test/files/temp/export.ifc')"
|
||||
And an empty Blender session is started
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/temp/export.ifc')"
|
||||
Then the object "IfcBuildingStorey/My Storey" is at "0,0,1"
|
||||
|
||||
Scenario: Export IFC - with moved grid axis location synchronised
|
||||
Given an empty IFC project
|
||||
And I press "mesh.add_grid"
|
||||
When the object "IfcGridAxis/01" is moved to "1,0,0"
|
||||
And I press "bim.save_project(filepath='{cwd}/test/files/temp/export.ifc')"
|
||||
And an empty Blender session is started
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/temp/export.ifc')"
|
||||
Then the object "IfcGridAxis/01" bottom left corner is at "1,-2,0"
|
||||
|
||||
Scenario: Export IFC - with changed object scale synchronised
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
When the object "IfcWall/Cube" is scaled to "2"
|
||||
And I press "bim.save_project(filepath='{cwd}/test/files/temp/export.ifc')"
|
||||
And an empty Blender session is started
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/temp/export.ifc')"
|
||||
Then the object "IfcWall/Cube" dimensions are "4,4,4"
|
||||
@@ -0,0 +1,400 @@
|
||||
@pset
|
||||
Feature: Pset
|
||||
|
||||
Scenario: Add pset - object
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
And I set "active_object.PsetProperties.pset_name" to "Pset_WallCommon"
|
||||
When I press "bim.add_pset(obj='IfcWall/Cube', obj_type='Object')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add pset - multiple objects
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
And additionally the object "IfcWall/Cube.001" is selected
|
||||
And I set "active_object.PsetProperties.pset_name" to "Pset_WallCommon"
|
||||
When I press "bim.add_pset(obj='IfcWall/Cube', obj_type='Object')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable pset editing - object
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
And I set "active_object.PsetProperties.pset_name" to "Pset_WallCommon"
|
||||
And I press "bim.add_pset(obj='IfcWall/Cube', obj_type='Object')"
|
||||
And I set "active_object.PsetProperties.properties[0].metadata.string_value" to "Foobar"
|
||||
And I press "bim.edit_pset(obj='IfcWall/Cube', obj_type='Object')"
|
||||
And the variable "pset" is "{ifc}.by_type('IfcPropertySet')[-1].id()"
|
||||
When I press "bim.enable_pset_editing(pset_id={pset}, obj='IfcWall/Cube', obj_type='Object')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable pset editing - material
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_material()"
|
||||
And I press "bim.load_materials"
|
||||
And I press "bim.expand_material_category(category='Uncategorised')"
|
||||
And I set "scene.BIMMaterialProperties.active_material_index" to "1"
|
||||
And I set "scene.MaterialPsetProperties.pset_name" to "Pset_MaterialCommon"
|
||||
And I press "bim.add_pset(obj='', obj_type='Material')"
|
||||
And I set "scene.MaterialPsetProperties.properties[0].metadata.float_value" to "0.42"
|
||||
And I press "bim.edit_pset(obj='', obj_type='Material')"
|
||||
And the variable "pset" is "{ifc}.by_type('IfcMaterialProperties')[-1].id()"
|
||||
When I press "bim.enable_pset_editing(pset_id={pset}, obj='', obj_type='Material')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable pset editing - profile
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_profiles"
|
||||
And I press "bim.add_profile_def"
|
||||
And I set "scene.ProfilePsetProperties.pset_name" to "Pset_ProfileMechanical"
|
||||
And I press "bim.add_pset(obj_type='Profile')"
|
||||
And I set "scene.ProfilePsetProperties.properties[0].metadata.float_value" to "0.42"
|
||||
And I press "bim.edit_pset(obj='', obj_type='Profile')"
|
||||
And the variable "pset" is "{ifc}.by_type('IfcProfileProperties')[-1].id()"
|
||||
When I press "bim.enable_pset_editing(pset_id={pset}, obj='', obj_type='Profile')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable pset editing - work schedule
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_work_schedule"
|
||||
And the variable "work_schedule" is "{ifc}.by_type('IfcWorkSchedule')[0].id()"
|
||||
And I press "bim.enable_editing_work_schedule_tasks(work_schedule={work_schedule})"
|
||||
And I set "scene.WorkSchedulePsetProperties.pset_name" to "Pset_WorkControlCommon"
|
||||
And I press "bim.add_pset(obj_type='WorkSchedule')"
|
||||
And I set "scene.WorkSchedulePsetProperties.properties[0].metadata.string_value" to "Foobar"
|
||||
And I press "bim.edit_pset(obj='', obj_type='WorkSchedule')"
|
||||
And the variable "pset" is "{ifc}.by_type('IfcPropertySet')[-1].id()"
|
||||
When I press "bim.enable_pset_editing(pset_id={pset}, obj='', obj_type='WorkSchedule')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable pset editing - resource with time series properties
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_resources"
|
||||
And I press "bim.add_resource(ifc_class='IfcSubContractResource', parent_resource=0)"
|
||||
And I set "scene.ResourcePsetProperties.pset_name" to "Pset_ConstructionResource"
|
||||
When I press "bim.add_pset(obj_type='Resource')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable pset editing - resource with regular single properties
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_resources"
|
||||
And I press "bim.add_resource(ifc_class='IfcCrewResource', parent_resource=0)"
|
||||
And the variable "resource" is "{ifc}.by_type('IfcCrewResource')[-1].id()"
|
||||
And I press "bim.add_resource(ifc_class='IfcLaborResource', parent_resource={resource})"
|
||||
And I set "scene.BIMResourceProperties.active_resource_index" to "1"
|
||||
And I set "scene.ResourcePsetProperties.pset_name" to "EPset_Productivity"
|
||||
And I press "bim.add_pset(obj_type='Resource')"
|
||||
And I set "scene.ResourcePsetProperties.properties[0].metadata.string_value" to "Foobar"
|
||||
And I press "bim.edit_pset(obj='', obj_type='Resource')"
|
||||
And the variable "pset" is "{ifc}.by_type('IfcPropertySet')[-1].id()"
|
||||
When I press "bim.enable_pset_editing(pset_id={pset}, obj='', obj_type='Resource')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable pset editing - task
|
||||
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_work_schedule_tasks(work_schedule={work_schedule})"
|
||||
And I press "bim.add_summary_task(work_schedule={work_schedule})"
|
||||
And I set "scene.TaskPsetProperties.qto_name" to "Qto_TaskBaseQuantities"
|
||||
And I press "bim.add_qto(obj_type='Task')"
|
||||
And I set "scene.TaskPsetProperties.properties[0].metadata.float_value" to "0.42"
|
||||
And I press "bim.edit_pset(obj='', obj_type='Task')"
|
||||
And the variable "pset" is "{ifc}.by_type('IfcElementQuantity')[-1].id()"
|
||||
When I press "bim.enable_pset_editing(pset_id={pset}, obj='', obj_type='Task')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable pset editing - object
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
And I set "active_object.PsetProperties.pset_name" to "Pset_WallCommon"
|
||||
And I press "bim.add_pset(obj='IfcWall/Cube', obj_type='Object')"
|
||||
When I press "bim.disable_pset_editing(obj='IfcWall/Cube', obj_type='Object')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable pset editing - material
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_material()"
|
||||
And I press "bim.load_materials"
|
||||
And I press "bim.expand_material_category(category='Uncategorised')"
|
||||
And I set "scene.BIMMaterialProperties.active_material_index" to "1"
|
||||
And I press "bim.add_pset(obj='Default', obj_type='Material')"
|
||||
When I press "bim.disable_pset_editing(obj='Default', obj_type='Material')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable pset editing - profile
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_profiles"
|
||||
And I press "bim.add_profile_def"
|
||||
And I set "scene.ProfilePsetProperties.pset_name" to "Pset_ProfileMechanical"
|
||||
And I press "bim.add_pset(obj_type='Profile')"
|
||||
When I press "bim.disable_pset_editing(obj='', obj_type='Profile')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable pset editing - work schedule
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_work_schedule"
|
||||
And the variable "work_schedule" is "{ifc}.by_type('IfcWorkSchedule')[0].id()"
|
||||
And I press "bim.enable_editing_work_schedule_tasks(work_schedule={work_schedule})"
|
||||
And I set "scene.WorkSchedulePsetProperties.pset_name" to "Pset_WorkControlCommon"
|
||||
And I press "bim.add_pset(obj_type='WorkSchedule')"
|
||||
When I press "bim.disable_pset_editing(obj='', obj_type='WorkSchedule')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable pset editing - resource with time series properties
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_resources"
|
||||
And I press "bim.add_resource(ifc_class='IfcSubContractResource', parent_resource=0)"
|
||||
And I set "scene.ResourcePsetProperties.pset_name" to "Pset_ConstructionResource"
|
||||
And I press "bim.add_pset(obj_type='Resource')"
|
||||
When I press "bim.disable_pset_editing(obj='', obj_type='Resource')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable pset editing - resource with regular single properties
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_resources"
|
||||
And I press "bim.add_resource(ifc_class='IfcCrewResource', parent_resource=0)"
|
||||
And the variable "resource" is "{ifc}.by_type('IfcCrewResource')[-1].id()"
|
||||
And I press "bim.add_resource(ifc_class='IfcLaborResource', parent_resource={resource})"
|
||||
And I set "scene.BIMResourceProperties.active_resource_index" to "1"
|
||||
And I set "scene.ResourcePsetProperties.pset_name" to "EPset_Productivity"
|
||||
And I press "bim.add_pset(obj_type='Resource')"
|
||||
When I press "bim.disable_pset_editing(obj='', obj_type='Resource')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable pset editing - task
|
||||
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_work_schedule_tasks(work_schedule={work_schedule})"
|
||||
And I press "bim.add_summary_task(work_schedule={work_schedule})"
|
||||
And I set "scene.TaskPsetProperties.qto_name" to "Qto_TaskBaseQuantities"
|
||||
And I press "bim.add_qto(obj_type='Task')"
|
||||
When I press "bim.disable_pset_editing(obj='', obj_type='Task')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit pset - object
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
And I set "active_object.PsetProperties.pset_name" to "Pset_WallCommon"
|
||||
And I press "bim.add_pset(obj='IfcWall/Cube', obj_type='Object')"
|
||||
When I press "bim.edit_pset(obj='IfcWall/Cube', obj_type='Object')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit qto - object
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
And I set "active_object.PsetProperties.qto_name" to "Qto_WallBaseQuantities"
|
||||
When I press "bim.add_qto(obj='IfcWall/Cube', obj_type='Object')"
|
||||
And I set "active_object.PsetProperties.properties[0].metadata.float_value" to "0.42"
|
||||
And I press "bim.edit_pset(obj='IfcWall/Cube', obj_type='Object')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit pset - material
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_material()"
|
||||
And I press "bim.load_materials"
|
||||
And I press "bim.expand_material_category(category='Uncategorised')"
|
||||
And I set "scene.BIMMaterialProperties.active_material_index" to "1"
|
||||
And I press "bim.add_pset(obj='', obj_type='Material')"
|
||||
When I press "bim.edit_pset(obj='', obj_type='Material')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit pset - profile
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_profiles"
|
||||
And I press "bim.add_profile_def"
|
||||
And I set "scene.ProfilePsetProperties.pset_name" to "Pset_ProfileMechanical"
|
||||
And I press "bim.add_pset(obj_type='Profile')"
|
||||
When I press "bim.edit_pset(obj='', obj_type='Profile')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit pset - work schedule
|
||||
Given an empty IFC project
|
||||
And I press "bim.add_work_schedule"
|
||||
And the variable "work_schedule" is "{ifc}.by_type('IfcWorkSchedule')[0].id()"
|
||||
And I press "bim.enable_editing_work_schedule_tasks(work_schedule={work_schedule})"
|
||||
And I set "scene.WorkSchedulePsetProperties.pset_name" to "Pset_WorkControlCommon"
|
||||
And I press "bim.add_pset(obj_type='WorkSchedule')"
|
||||
When I press "bim.edit_pset(obj='', obj_type='WorkSchedule')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit pset - resource with time series properties
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_resources"
|
||||
And I press "bim.add_resource(ifc_class='IfcSubContractResource', parent_resource=0)"
|
||||
And I set "scene.ResourcePsetProperties.pset_name" to "Pset_ConstructionResource"
|
||||
And I press "bim.add_pset(obj_type='Resource')"
|
||||
When I press "bim.edit_pset(obj='', obj_type='Resource')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit pset - resource with regular single properties
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_resources"
|
||||
And I press "bim.add_resource(ifc_class='IfcCrewResource', parent_resource=0)"
|
||||
And the variable "resource" is "{ifc}.by_type('IfcCrewResource')[-1].id()"
|
||||
And I press "bim.add_resource(ifc_class='IfcLaborResource', parent_resource={resource})"
|
||||
And I set "scene.BIMResourceProperties.active_resource_index" to "1"
|
||||
And I set "scene.ResourcePsetProperties.pset_name" to "EPset_Productivity"
|
||||
And I press "bim.add_pset(obj_type='Resource')"
|
||||
When I press "bim.edit_pset(obj='', obj_type='Resource')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit pset - task
|
||||
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_work_schedule_tasks(work_schedule={work_schedule})"
|
||||
And I press "bim.add_summary_task(work_schedule={work_schedule})"
|
||||
And I set "scene.TaskPsetProperties.qto_name" to "Qto_TaskBaseQuantities"
|
||||
And I press "bim.add_qto(obj_type='Task')"
|
||||
When I press "bim.edit_pset(obj='', obj_type='Task')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Copy property to selected - copy property
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
And additionally the object "IfcWall/Cube.001" is selected
|
||||
And I set "active_object.PsetProperties.pset_name" to "Pset_WallCommon"
|
||||
And I press "bim.add_pset(obj='IfcWall/Cube.001', obj_type='Object')"
|
||||
And I set "active_object.PsetProperties.properties[2].metadata.string_value" to "Foo"
|
||||
When I press "bim.copy_property_to_selection(name='FireRating')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Remove pset - object
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
And I set "active_object.PsetProperties.pset_name" to "Pset_WallCommon"
|
||||
And I press "bim.add_pset(obj='IfcWall/Cube', obj_type='Object')"
|
||||
And I set "active_object.PsetProperties.properties[0].metadata.string_value" to "Foobar"
|
||||
And I press "bim.edit_pset(obj='IfcWall/Cube', obj_type='Object')"
|
||||
And the variable "pset" is "{ifc}.by_type('IfcPropertySet')[-1].id()"
|
||||
When I press "bim.remove_pset(pset_id={pset}, obj='IfcWall/Cube', obj_type='Object')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Remove pset - multiple objects
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
And additionally the object "IfcWall/Cube.001" is selected
|
||||
And I set "active_object.PsetProperties.pset_name" to "Pset_WallCommon"
|
||||
And I press "bim.add_pset(obj='IfcWall/Cube.001', obj_type='Object')"
|
||||
And I set "active_object.PsetProperties.properties[0].metadata.string_value" to "Foobar"
|
||||
And I press "bim.edit_pset(obj='IfcWall/Cube.001', obj_type='Object')"
|
||||
And the variable "pset" is "{ifc}.by_type('IfcPropertySet')[-1].id()"
|
||||
When I press "bim.remove_pset(pset_id={pset}, obj='IfcWall/Cube', obj_type='Object')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit pset length property
|
||||
Given an empty IFC project
|
||||
And I press "mesh.add_clever_stair"
|
||||
And the variable "pset" is "tool.Pset.get_element_pset(tool.Ifc.get_entity(bpy.context.active_object), 'Pset_StairFlightCommon').id()"
|
||||
And the variable "si_conversion" is "ifcopenshell.util.unit.calculate_unit_scale(tool.Ifc.get())"
|
||||
And I press "bim.enable_pset_editing(pset_id={pset}, obj='IfcStairFlight/StairFlight', obj_type='Object')"
|
||||
|
||||
# Testing IfcPositiveLengthMeasure type of prop
|
||||
Then "active_object.PsetProperties.properties['TreadLength'].metadata.special_type" is "LENGTH"
|
||||
And "active_object.PsetProperties.properties['TreadLength'].metadata.float_value" is "250"
|
||||
And "active_object.PsetProperties.properties['TreadLength'].metadata.length_value" is roughly "0.25"
|
||||
|
||||
When I set "active_object.PsetProperties.properties['TreadLength'].metadata.float_value" to "350"
|
||||
Then "active_object.PsetProperties.properties['TreadLength'].metadata.float_value" is roughly "350"
|
||||
|
||||
When I set "active_object.PsetProperties.properties['TreadLength'].metadata.length_value" to "0.45"
|
||||
Then "active_object.PsetProperties.properties['TreadLength'].metadata.float_value" is roughly "450"
|
||||
|
||||
# Testing IfcLengthMeasure type of prop
|
||||
Then "active_object.PsetProperties.properties['NosingLength'].metadata.special_type" is "LENGTH"
|
||||
And "active_object.PsetProperties.properties['NosingLength'].metadata.float_value" is "0.0"
|
||||
And "active_object.PsetProperties.properties['NosingLength'].metadata.length_value" is roughly "0.0"
|
||||
|
||||
When I set "active_object.PsetProperties.properties['NosingLength'].metadata.float_value" to "350"
|
||||
Then "active_object.PsetProperties.properties['NosingLength'].metadata.float_value" is roughly "350"
|
||||
|
||||
When I set "active_object.PsetProperties.properties['NosingLength'].metadata.length_value" to "0.45"
|
||||
Then "active_object.PsetProperties.properties['NosingLength'].metadata.float_value" is roughly "450"
|
||||
|
||||
When I press "bim.edit_pset(obj='IfcStairFlight/StairFlight', obj_type='Object')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit qset length property
|
||||
Given an empty IFC project
|
||||
And I press "mesh.add_clever_stair"
|
||||
And I press "bim.perform_quantity_take_off"
|
||||
And the variable "pset" is "tool.Pset.get_element_pset(tool.Ifc.get_entity(bpy.context.active_object), 'Qto_StairFlightBaseQuantities').id()"
|
||||
And the variable "si_conversion" is "ifcopenshell.util.unit.calculate_unit_scale(tool.Ifc.get())"
|
||||
And I press "bim.enable_pset_editing(pset_id={pset}, obj='IfcStairFlight/StairFlight', obj_type='Object')"
|
||||
|
||||
# Testing Q_LENGTH type of prop
|
||||
Then "active_object.PsetProperties.properties['Length'].metadata.special_type" is "LENGTH"
|
||||
And "active_object.PsetProperties.properties['Length'].metadata.float_value" is roughly "2156.485"
|
||||
And "active_object.PsetProperties.properties['Length'].metadata.length_value" is roughly "2.156"
|
||||
|
||||
When I set "active_object.PsetProperties.properties['Length'].metadata.float_value" to "350"
|
||||
Then "active_object.PsetProperties.properties['Length'].metadata.length_value" is roughly "0.35"
|
||||
|
||||
When I set "active_object.PsetProperties.properties['Length'].metadata.length_value" to "0.45"
|
||||
Then "active_object.PsetProperties.properties['Length'].metadata.float_value" is roughly "450"
|
||||
|
||||
When I press "bim.edit_pset(obj='IfcStairFlight/StairFlight', obj_type='Object')"
|
||||
Then nothing happens
|
||||
@@ -0,0 +1,122 @@
|
||||
@pset_template
|
||||
Feature: Pset_Template
|
||||
Covers property sets and property templates creation, edition, deletion.
|
||||
|
||||
Scenario: Add pset template
|
||||
Given an empty IFC project
|
||||
When I load a new pset template file
|
||||
And I press "bim.add_pset_template"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Remove pset template
|
||||
Given an empty IFC project
|
||||
When I load a new pset template file
|
||||
And I press "bim.add_pset_template"
|
||||
And I press "bim.remove_pset_template"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable editing pset template
|
||||
Given an empty IFC project
|
||||
When I load a new pset template file
|
||||
And I press "bim.add_pset_template"
|
||||
And I press "bim.enable_editing_pset_template"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit pset template
|
||||
Given an empty IFC project
|
||||
When I load a new pset template file
|
||||
And I press "bim.add_pset_template"
|
||||
And I press "bim.enable_editing_pset_template"
|
||||
And I press "bim.edit_pset_template"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable editing pset template
|
||||
Given an empty IFC project
|
||||
When I load a new pset template file
|
||||
And I press "bim.add_pset_template"
|
||||
And I press "bim.enable_editing_pset_template"
|
||||
And I press "bim.disable_editing_pset_template"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Save pset template
|
||||
Given an empty IFC project
|
||||
When I load a new pset template file
|
||||
And I press "bim.save_pset_template_file"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add prop template
|
||||
Given an empty IFC project
|
||||
When I load a new pset template file
|
||||
And I press "bim.add_pset_template"
|
||||
And I press "bim.add_prop_template"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Remove prop template
|
||||
Given an empty IFC project
|
||||
When I load a new pset template file
|
||||
And I press "bim.add_pset_template"
|
||||
And I press "bim.add_prop_template"
|
||||
And the variable "prop_template" is "{pset_ifc}.by_type('IfcSimplePropertyTemplate')[-1].id()"
|
||||
And I press "bim.remove_prop_template(prop_template={prop_template})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable editing prop template
|
||||
Given an empty IFC project
|
||||
When I load a new pset template file
|
||||
And I press "bim.add_pset_template"
|
||||
And the variable "prop_template" is "{pset_ifc}.by_type('IfcSimplePropertyTemplate')[-1].id()"
|
||||
And I press "bim.enable_editing_prop_template(prop_template={prop_template})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit prop template
|
||||
Given an empty IFC project
|
||||
When I load a new pset template file
|
||||
And I press "bim.add_pset_template"
|
||||
And the variable "prop_template" is "{pset_ifc}.by_type('IfcSimplePropertyTemplate')[-1].id()"
|
||||
And I press "bim.enable_editing_prop_template(prop_template={prop_template})"
|
||||
And I press "bim.edit_prop_template"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit prop template - enumeration property
|
||||
Given an empty IFC project
|
||||
When I load a new pset template file
|
||||
And I press "bim.add_pset_template"
|
||||
And the variable "prop_template" is "{pset_ifc}.by_type('IfcSimplePropertyTemplate')[-1].id()"
|
||||
And I press "bim.enable_editing_prop_template(prop_template={prop_template})"
|
||||
And I set "scene.BIMPsetTemplateProperties.active_prop_template.template_type" to "P_ENUMERATEDVALUE"
|
||||
And I press "bim.edit_prop_template"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add prop enum
|
||||
Given an empty IFC project
|
||||
When I load a new pset template file
|
||||
And I press "bim.add_pset_template"
|
||||
And I press "bim.add_prop_template"
|
||||
And the variable "prop_template" is "{pset_ifc}.by_type('IfcSimplePropertyTemplate')[-1].id()"
|
||||
And I press "bim.enable_editing_prop_template(prop_template={prop_template})"
|
||||
And I set "scene.BIMPsetTemplateProperties.active_prop_template.template_type" to "P_ENUMERATEDVALUE"
|
||||
And I press "bim.add_prop_enum"
|
||||
And I press "bim.edit_prop_template"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Delete prop enum
|
||||
Given an empty IFC project
|
||||
When I load a new pset template file
|
||||
And I press "bim.add_pset_template"
|
||||
And I press "bim.add_prop_template"
|
||||
And the variable "prop_template" is "{pset_ifc}.by_type('IfcSimplePropertyTemplate')[-1].id()"
|
||||
And I press "bim.enable_editing_prop_template(prop_template={prop_template})"
|
||||
And I set "scene.BIMPsetTemplateProperties.active_prop_template.template_type" to "P_ENUMERATEDVALUE"
|
||||
And I press "bim.add_prop_enum"
|
||||
And I press "bim.delete_prop_enum(index=0)"
|
||||
And I press "bim.edit_prop_template"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable editing prop template
|
||||
Given an empty IFC project
|
||||
When I load a new pset template file
|
||||
And I press "bim.add_pset_template"
|
||||
And the variable "prop_template" is "{pset_ifc}.by_type('IfcSimplePropertyTemplate')[-1].id()"
|
||||
And I press "bim.enable_editing_prop_template(prop_template={prop_template})"
|
||||
And I press "bim.disable_editing_prop_template"
|
||||
Then nothing happens
|
||||
@@ -0,0 +1,57 @@
|
||||
@qto
|
||||
Feature: Qto
|
||||
|
||||
Scenario: Calculate circle radius
|
||||
Given an empty Blender session
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
When I press "bim.calculate_circle_radius"
|
||||
Then "scene.BIMQtoProperties.qto_result" is "1.732"
|
||||
|
||||
Scenario: Calculate edge lengths
|
||||
Given an empty Blender session
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
When I press "bim.calculate_edge_lengths"
|
||||
Then "scene.BIMQtoProperties.qto_result" is "24.0"
|
||||
|
||||
Scenario: Calculate face areas
|
||||
Given an empty Blender session
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
When I press "bim.calculate_face_areas"
|
||||
Then "scene.BIMQtoProperties.qto_result" is "24.0"
|
||||
|
||||
Scenario: Calculate object volumes
|
||||
Given an empty Blender session
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
When I press "bim.calculate_object_volumes"
|
||||
Then "scene.BIMQtoProperties.qto_result" is "8.0"
|
||||
|
||||
Scenario: Execute qto method - formwork areas
|
||||
Given an empty Blender session
|
||||
And I add a cube
|
||||
And I add a cube of size "1" at "1,0,0"
|
||||
And the object "Cube" is selected
|
||||
And additionally the object "Cube.001" is selected
|
||||
When I press "bim.calculate_formwork_area"
|
||||
Then "scene.BIMQtoProperties.qto_result" is "21.5"
|
||||
|
||||
Scenario: Execute qto method - side formwork areas
|
||||
Given an empty Blender session
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
When I press "bim.calculate_side_formwork_area"
|
||||
Then "scene.BIMQtoProperties.qto_result" is "16.0"
|
||||
|
||||
Scenario: Calculate all quantities
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I press "bim.assign_class(ifc_class='IfcWall', predefined_type='SOLIDWALL')"
|
||||
When I press "bim.perform_quantity_take_off"
|
||||
And the variable "qset_id" is "{ifc}.by_type('IfcElementQuantity')[0].id()"
|
||||
And I press "bim.enable_pset_editing(pset_id={qset_id}, obj='IfcWall/Cube', obj_type='Object')"
|
||||
Then "active_object.PsetProperties.active_pset_name" is "Qto_WallBaseQuantities"
|
||||
And "active_object.PsetProperties.properties['Length'].metadata.float_value" is roughly "2000.0"
|
||||
@@ -0,0 +1,333 @@
|
||||
@resource
|
||||
Feature: Resource
|
||||
|
||||
Scenario: Load Resources
|
||||
Given an empty IFC project
|
||||
When I press "bim.load_resources"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add Crew Resource
|
||||
Given an empty IFC project
|
||||
When I press "bim.load_resources"
|
||||
When I press "bim.add_resource(ifc_class="IfcCrewResource")"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable Editing resources
|
||||
Given an empty IFC project
|
||||
When I press "bim.load_resources"
|
||||
When I press "bim.add_resource(ifc_class="IfcCrewResource")"
|
||||
When I press "bim.disable_resource_editing_ui"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Re-enable Editing resources
|
||||
Given an empty IFC project
|
||||
When I press "bim.load_resources"
|
||||
When I press "bim.add_resource(ifc_class="IfcCrewResource")"
|
||||
When I press "bim.disable_resource_editing_ui"
|
||||
When I press "bim.load_resources"
|
||||
Then nothing happens
|
||||
|
||||
|
||||
Scenario: Add Labor Resource
|
||||
Given an empty IFC project
|
||||
When I press "bim.load_resources"
|
||||
When I press "bim.add_resource(ifc_class="IfcCrewResource")"
|
||||
And the variable "crew_resource" is "IfcStore.get_file().by_type('IfcCrewResource')[0].id()"
|
||||
When I press "bim.add_resource(ifc_class="IfcLaborResource", parent_resource={crew_resource})"
|
||||
Then nothing happens
|
||||
|
||||
|
||||
Scenario: Enable Editing Resource
|
||||
Given an empty IFC project
|
||||
When I press "bim.load_resources"
|
||||
When I press "bim.add_resource(ifc_class="IfcCrewResource")"
|
||||
And the variable "crew_resource" is "IfcStore.get_file().by_type('IfcCrewResource')[0].id()"
|
||||
When I press "bim.enable_editing_resource(resource={crew_resource})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit Resource
|
||||
Given an empty IFC project
|
||||
When I press "bim.load_resources"
|
||||
When I press "bim.add_resource(ifc_class="IfcCrewResource")"
|
||||
And the variable "crew_resource" is "IfcStore.get_file().by_type('IfcCrewResource')[0].id()"
|
||||
When I press "bim.enable_editing_resource(resource={crew_resource})"
|
||||
And I set "scene.BIMResourceProperties.resource_attributes.get('Name').string_value" to "Foo"
|
||||
When I press "bim.edit_resource()"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Remove Resource
|
||||
Given an empty IFC project
|
||||
When I press "bim.load_resources"
|
||||
When I press "bim.add_resource(ifc_class="IfcCrewResource")"
|
||||
And the variable "crew_resource" is "IfcStore.get_file().by_type('IfcCrewResource')[0].id()"
|
||||
When I press "bim.enable_editing_resource(resource={crew_resource})"
|
||||
And I set "scene.BIMResourceProperties.resource_attributes.get('Name').string_value" to "Foo"
|
||||
When I press "bim.edit_resource()"
|
||||
When I press "bim.remove_resource(resource={crew_resource})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Remove Parent Resource
|
||||
Given an empty IFC project
|
||||
When I press "bim.load_resources"
|
||||
When I press "bim.add_resource(ifc_class="IfcCrewResource")"
|
||||
And the variable "crew_resource" is "IfcStore.get_file().by_type('IfcCrewResource')[0].id()"
|
||||
When I press "bim.add_resource(ifc_class="IfcLaborResource", parent_resource={crew_resource})"
|
||||
And the variable "labor_resource" is "IfcStore.get_file().by_type('IfcLaborResource')[0].id()"
|
||||
When I press "bim.enable_editing_resource_time(resource={labor_resource})"
|
||||
And I set "scene.BIMResourceProperties.resource_time_attributes.get('Name').string_value" to "TimelyFoo"
|
||||
When I press "bim.edit_resource_time()"
|
||||
When I press "bim.remove_resource(resource={crew_resource})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable Editing Resource time
|
||||
Given an empty IFC project
|
||||
When I press "bim.load_resources"
|
||||
When I press "bim.add_resource(ifc_class="IfcCrewResource")"
|
||||
And the variable "crew_resource" is "IfcStore.get_file().by_type('IfcCrewResource')[0].id()"
|
||||
When I press "bim.add_resource(ifc_class="IfcLaborResource", parent_resource={crew_resource})"
|
||||
And the variable "labor_resource" is "IfcStore.get_file().by_type('IfcLaborResource')[0].id()"
|
||||
When I press "bim.enable_editing_resource_time(resource={labor_resource})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable editing resource time
|
||||
Given an empty IFC project
|
||||
When I press "bim.load_resources"
|
||||
When I press "bim.add_resource(ifc_class="IfcCrewResource")"
|
||||
And the variable "crew_resource" is "IfcStore.get_file().by_type('IfcCrewResource')[0].id()"
|
||||
When I press "bim.add_resource(ifc_class="IfcLaborResource", parent_resource={crew_resource})"
|
||||
And the variable "labor_resource" is "IfcStore.get_file().by_type('IfcLaborResource')[0].id()"
|
||||
And I press "bim.enable_editing_resource_time(resource={labor_resource})"
|
||||
When I press "bim.disable_editing_resource()"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit Resource time
|
||||
Given an empty IFC project
|
||||
When I press "bim.load_resources"
|
||||
When I press "bim.add_resource(ifc_class="IfcCrewResource")"
|
||||
And the variable "crew_resource" is "IfcStore.get_file().by_type('IfcCrewResource')[0].id()"
|
||||
When I press "bim.add_resource(ifc_class="IfcLaborResource", parent_resource={crew_resource})"
|
||||
And the variable "labor_resource" is "IfcStore.get_file().by_type('IfcLaborResource')[0].id()"
|
||||
When I press "bim.enable_editing_resource_time(resource={labor_resource})"
|
||||
And I set "scene.BIMResourceProperties.resource_time_attributes.get('ScheduleUsage').float_value" to "305.25"
|
||||
When I press "bim.edit_resource_time()"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable Editing Resource Costs
|
||||
Given an empty IFC project
|
||||
When I press "bim.load_resources"
|
||||
When I press "bim.add_resource(ifc_class="IfcCrewResource")"
|
||||
And the variable "crew_resource" is "IfcStore.get_file().by_type('IfcCrewResource')[0].id()"
|
||||
When I press "bim.add_resource(ifc_class="IfcLaborResource", parent_resource={crew_resource})"
|
||||
And the variable "labor_resource" is "IfcStore.get_file().by_type('IfcLaborResource')[0].id()"
|
||||
When I press "bim.enable_editing_resource_costs(resource={labor_resource})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable Editing Resource Costs
|
||||
Given an empty IFC project
|
||||
When I press "bim.load_resources"
|
||||
When I press "bim.add_resource(ifc_class="IfcCrewResource")"
|
||||
And the variable "crew_resource" is "IfcStore.get_file().by_type('IfcCrewResource')[0].id()"
|
||||
When I press "bim.add_resource(ifc_class="IfcLaborResource", parent_resource={crew_resource})"
|
||||
And the variable "labor_resource" is "IfcStore.get_file().by_type('IfcLaborResource')[0].id()"
|
||||
When I press "bim.enable_editing_resource_costs(resource={labor_resource})"
|
||||
When I press "bim.disable_editing_resource()"
|
||||
Then nothing happens
|
||||
|
||||
|
||||
Scenario: Add Resource Fixed Cost Value
|
||||
Given an empty IFC project
|
||||
When I press "bim.load_resources"
|
||||
When I press "bim.add_resource(ifc_class="IfcCrewResource")"
|
||||
And the variable "crew_resource" is "IfcStore.get_file().by_type('IfcCrewResource')[0].id()"
|
||||
When I press "bim.add_resource(ifc_class="IfcLaborResource", parent_resource={crew_resource})"
|
||||
And the variable "labor_resource" is "IfcStore.get_file().by_type('IfcLaborResource')[0].id()"
|
||||
When I press "bim.enable_editing_resource_costs(resource={labor_resource})"
|
||||
When I press "bim.add_cost_value(parent={labor_resource}, cost_type="FIXED")"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit Resource Cost Value
|
||||
Given an empty IFC project
|
||||
When I press "bim.load_resources"
|
||||
When I press "bim.add_resource(ifc_class="IfcCrewResource")"
|
||||
And the variable "crew_resource" is "IfcStore.get_file().by_type('IfcCrewResource')[0].id()"
|
||||
When I press "bim.add_resource(ifc_class="IfcLaborResource", parent_resource={crew_resource})"
|
||||
And the variable "labor_resource" is "IfcStore.get_file().by_type('IfcLaborResource')[0].id()"
|
||||
When I press "bim.enable_editing_resource_costs(resource={labor_resource})"
|
||||
When I press "bim.add_cost_value(parent={labor_resource}, cost_type="FIXED")"
|
||||
And the variable "cost_value" is "IfcStore.get_file().by_type('IfcCostValue')[0].id()"
|
||||
When I press "bim.enable_editing_resource_cost_value(cost_value={cost_value})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable Editing Resource Cost Value Formula
|
||||
Given an empty IFC project
|
||||
When I press "bim.load_resources"
|
||||
When I press "bim.add_resource(ifc_class="IfcCrewResource")"
|
||||
And the variable "crew_resource" is "IfcStore.get_file().by_type('IfcCrewResource')[0].id()"
|
||||
When I press "bim.add_resource(ifc_class="IfcLaborResource", parent_resource={crew_resource})"
|
||||
And the variable "labor_resource" is "IfcStore.get_file().by_type('IfcLaborResource')[0].id()"
|
||||
When I press "bim.enable_editing_resource_costs(resource={labor_resource})"
|
||||
When I press "bim.add_cost_value(parent={labor_resource}, cost_type="FIXED")"
|
||||
And the variable "cost_value" is "IfcStore.get_file().by_type('IfcCostValue')[0].id()"
|
||||
When I press "bim.enable_editing_resource_cost_value(cost_value={cost_value})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit Resource Cost Value Formula
|
||||
Given an empty IFC project
|
||||
When I press "bim.load_resources"
|
||||
When I press "bim.add_resource(ifc_class="IfcCrewResource")"
|
||||
And the variable "crew_resource" is "IfcStore.get_file().by_type('IfcCrewResource')[0].id()"
|
||||
When I press "bim.add_resource(ifc_class="IfcLaborResource", parent_resource={crew_resource})"
|
||||
And the variable "labor_resource" is "IfcStore.get_file().by_type('IfcLaborResource')[0].id()"
|
||||
When I press "bim.enable_editing_resource_costs(resource={labor_resource})"
|
||||
When I press "bim.add_cost_value(parent={labor_resource}, cost_type="FIXED")"
|
||||
And the variable "cost_value" is "IfcStore.get_file().by_type('IfcCostValue')[0].id()"
|
||||
When I press "bim.enable_editing_resource_cost_value(cost_value={cost_value})"
|
||||
And I set "scene.BIMResourceProperties.cost_value_formula" to "220*0.2"
|
||||
When I press "bim.edit_resource_cost_value_formula(cost_value={cost_value})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit Resource Cost Value
|
||||
Given an empty IFC project
|
||||
When I press "bim.load_resources"
|
||||
When I press "bim.add_resource(ifc_class="IfcCrewResource")"
|
||||
And the variable "crew_resource" is "IfcStore.get_file().by_type('IfcCrewResource')[0].id()"
|
||||
When I press "bim.add_resource(ifc_class="IfcLaborResource", parent_resource={crew_resource})"
|
||||
And the variable "labor_resource" is "IfcStore.get_file().by_type('IfcLaborResource')[0].id()"
|
||||
When I press "bim.enable_editing_resource_costs(resource={labor_resource})"
|
||||
When I press "bim.add_cost_value(parent={labor_resource}, cost_type="FIXED")"
|
||||
And the variable "cost_value" is "IfcStore.get_file().by_type('IfcCostValue')[0].id()"
|
||||
When I press "bim.enable_editing_resource_cost_value(cost_value={cost_value})"
|
||||
And I set "scene.BIMResourceProperties.cost_value_attributes.get('AppliedValue').float_value" to "1.00"
|
||||
When I press "bim.edit_resource_cost_value(cost_value={cost_value})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable Editing Resource Quantity
|
||||
Given an empty IFC project
|
||||
When I press "bim.load_resources"
|
||||
When I press "bim.add_resource(ifc_class="IfcCrewResource")"
|
||||
And the variable "crew_resource" is "IfcStore.get_file().by_type('IfcCrewResource')[0].id()"
|
||||
When I press "bim.add_resource(ifc_class="IfcLaborResource", parent_resource={crew_resource})"
|
||||
And the variable "labor_resource" is "IfcStore.get_file().by_type('IfcLaborResource')[0].id()"
|
||||
When I press "bim.enable_editing_resource_base_quantity(resource={labor_resource})"
|
||||
When I press "bim.add_resource_quantity(resource={labor_resource}, ifc_class="IfcQuantityTime")"
|
||||
When I press "bim.enable_editing_resource_quantity(resource={labor_resource})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit Resource Quantity
|
||||
Given an empty IFC project
|
||||
When I press "bim.load_resources"
|
||||
When I press "bim.add_resource(ifc_class="IfcCrewResource")"
|
||||
And the variable "crew_resource" is "IfcStore.get_file().by_type('IfcCrewResource')[0].id()"
|
||||
When I press "bim.add_resource(ifc_class="IfcLaborResource", parent_resource={crew_resource})"
|
||||
And the variable "labor_resource" is "IfcStore.get_file().by_type('IfcLaborResource')[0].id()"
|
||||
When I press "bim.enable_editing_resource_base_quantity(resource={labor_resource})"
|
||||
When I press "bim.add_resource_quantity(resource={labor_resource}, ifc_class="IfcQuantityTime")"
|
||||
When I press "bim.enable_editing_resource_quantity(resource={labor_resource})"
|
||||
And I set "scene.BIMResourceProperties.quantity_attributes.get('TimeValue').float_value" to "50.00"
|
||||
And the variable "quantity_time" is "IfcStore.get_file().by_type('IfcQuantityTime')[0].id()"
|
||||
When I press "bim.edit_resource_quantity(physical_quantity={quantity_time})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Remove Resource Quantity
|
||||
Given an empty IFC project
|
||||
When I press "bim.load_resources"
|
||||
When I press "bim.add_resource(ifc_class="IfcCrewResource")"
|
||||
And the variable "crew_resource" is "IfcStore.get_file().by_type('IfcCrewResource')[0].id()"
|
||||
When I press "bim.add_resource(ifc_class="IfcLaborResource", parent_resource={crew_resource})"
|
||||
And the variable "labor_resource" is "IfcStore.get_file().by_type('IfcLaborResource')[0].id()"
|
||||
When I press "bim.enable_editing_resource_base_quantity(resource={labor_resource})"
|
||||
When I press "bim.add_resource_quantity(resource={labor_resource}, ifc_class="IfcQuantityTime")"
|
||||
When I press "bim.remove_resource_quantity(resource={labor_resource})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add Productivity data
|
||||
Given an empty IFC project
|
||||
When I press "bim.load_resources"
|
||||
When I press "bim.add_resource(ifc_class="IfcCrewResource")"
|
||||
And the variable "crew_resource" is "IfcStore.get_file().by_type('IfcCrewResource')[0].id()"
|
||||
When I press "bim.add_resource(ifc_class="IfcLaborResource", parent_resource={crew_resource})"
|
||||
And the variable "labor_resource" is "IfcStore.get_file().by_type('IfcLaborResource')[0].id()"
|
||||
And I set "scene.BIMResourceProperties.active_resource_index" to "1"
|
||||
And I press "bim.add_productivity_data"
|
||||
And I set "scene.BIMResourceProperties.should_show_resource_tools" to "True"
|
||||
And I set "scene.BIMResourceProductivity.quantity_produced" to "5.00"
|
||||
And I set "scene.BIMResourceProductivity.quantity_produced_name" to "GrossSideArea"
|
||||
And I set "scene.BIMResourceProductivity.quantity_consumed[0].hours" to "5"
|
||||
When I press "bim.edit_productivity_data()"
|
||||
And the variable "productivity_data" is "IfcStore.get_file().by_type('IfcPropertySet')[-1].id()"
|
||||
|
||||
|
||||
Scenario: Calculate Resource Work
|
||||
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_work_schedule_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_attributes(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_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
And I set "active_object.PsetProperties.qto_name" to "Qto_WallBaseQuantities"
|
||||
When I press "bim.add_qto(obj='IfcWall/Cube', obj_type='Object')"
|
||||
And I set "active_object.PsetProperties.properties[5].metadata.float_value" to "50.00"
|
||||
And I press "bim.edit_pset(obj='IfcWall/Cube', obj_type='Object')"
|
||||
When I press "bim.load_resources"
|
||||
When I press "bim.add_resource(ifc_class="IfcCrewResource")"
|
||||
And the variable "crew_resource" is "IfcStore.get_file().by_type('IfcCrewResource')[0].id()"
|
||||
When I press "bim.add_resource(ifc_class="IfcLaborResource", parent_resource={crew_resource})"
|
||||
And the variable "labor_resource" is "IfcStore.get_file().by_type('IfcLaborResource')[0].id()"
|
||||
And I set "scene.BIMResourceProperties.active_resource_index" to "1"
|
||||
And I press "bim.add_productivity_data"
|
||||
And I set "scene.BIMResourceProperties.should_show_resource_tools" to "True"
|
||||
And I set "scene.BIMResourceProductivity.quantity_produced" to "5.00"
|
||||
And I set "scene.BIMResourceProductivity.quantity_produced_name" to "GrossSideArea"
|
||||
And I set "scene.BIMResourceProductivity.quantity_consumed[0].hours" to "5"
|
||||
When I press "bim.edit_productivity_data()"
|
||||
And the variable "productivity_data" is "IfcStore.get_file().by_type('IfcPropertySet')[-1].id()"
|
||||
When I press "bim.calculate_resource_work(resource={labor_resource})"
|
||||
Then nothing happens
|
||||
|
||||
|
||||
Scenario: Assign Resource
|
||||
Given an empty IFC project
|
||||
When I press "bim.load_resources"
|
||||
When I press "bim.add_resource(ifc_class="IfcCrewResource")"
|
||||
And the variable "crew_resource" is "IfcStore.get_file().by_type('IfcCrewResource')[0].id()"
|
||||
When I press "bim.add_resource(ifc_class="IfcLaborResource", parent_resource={crew_resource})"
|
||||
And the variable "labor_resource" is "IfcStore.get_file().by_type('IfcLaborResource')[0].id()"
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
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_resource(resource={labor_resource})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Unassign Resource
|
||||
Given an empty IFC project
|
||||
When I press "bim.load_resources"
|
||||
When I press "bim.add_resource(ifc_class="IfcCrewResource")"
|
||||
And the variable "crew_resource" is "IfcStore.get_file().by_type('IfcCrewResource')[0].id()"
|
||||
When I press "bim.add_resource(ifc_class="IfcLaborResource", parent_resource={crew_resource})"
|
||||
And the variable "labor_resource" is "IfcStore.get_file().by_type('IfcLaborResource')[0].id()"
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
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_resource(resource={labor_resource})"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
And I press "bim.unassign_resource(resource={labor_resource})"
|
||||
Then nothing happens
|
||||
@@ -0,0 +1,119 @@
|
||||
@root
|
||||
Feature: Root
|
||||
|
||||
Scenario: Reassign class
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class(ifc_class='IfcWall', predefined_type='SOLIDWALL')"
|
||||
And I press "object.duplicate_move"
|
||||
When the object "IfcWall/Cube.001" is selected
|
||||
And I press "bim.enable_reassign_class"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcSlab"
|
||||
And I set "scene.BIMRootProperties.ifc_predefined_type" to "BASESLAB"
|
||||
And I press "bim.reassign_class"
|
||||
Then the object "IfcSlab/Cube" is an "IfcSlab"
|
||||
|
||||
Scenario: Unlink object
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.load_styles(style_type='IfcSurfaceStyle')"
|
||||
And I press "bim.enable_adding_presentation_style"
|
||||
And I set "scene.BIMStylesProperties.style_name" to "Style"
|
||||
And I press "bim.add_presentation_style"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
And the variable "style" is "{ifc}.by_type('IfcSurfaceStyle')[0].id()"
|
||||
And I press "bim.assign_style_to_selected(style_id={style})"
|
||||
When I press "bim.unlink_object(obj='IfcWall/Cube')"
|
||||
Then the object "Cube" is not an IFC element
|
||||
And the material "Style" is an IFC style
|
||||
And the material "Style.001" is not an IFC style
|
||||
|
||||
Scenario: Copy class
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
When I press "bim.copy_class(obj='IfcWall/Cube')"
|
||||
Then the object "IfcWall/Cube" is an "IfcWall"
|
||||
|
||||
Scenario: Assign a class to a cube
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
When the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
Then the object "IfcWall/Cube" is an "IfcWall"
|
||||
And the object "IfcWall/Cube" is in the collection "IfcBuildingStorey/My Storey"
|
||||
And the object "IfcWall/Cube" has a "Tessellation" representation of "Model/Body/MODEL_VIEW"
|
||||
|
||||
Scenario: Assign a type class to a cube
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
When the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
Then the object "IfcWallType/Cube" is an "IfcWallType"
|
||||
And the object "IfcWallType/Cube" is in the collection "IfcTypeProduct"
|
||||
And the object "IfcWallType/Cube" has a "Tessellation" representation of "Model/Body/MODEL_VIEW"
|
||||
|
||||
Scenario: Assign a spatial class to a cube
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
When the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcSpatialElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcBuilding"
|
||||
And I press "bim.assign_class"
|
||||
Then the object "IfcBuilding/Cube" is an "IfcBuilding"
|
||||
And the object "IfcBuilding/Cube" is in the collection "IfcBuilding/Cube"
|
||||
And the object "IfcBuilding/Cube" has a "Tessellation" representation of "Model/Body/MODEL_VIEW"
|
||||
|
||||
Scenario: Assign a spatial class to a cube already in a collection
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is placed in the collection "IfcBuildingStorey/My Storey"
|
||||
When the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcSpatialElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcSpace"
|
||||
And I press "bim.assign_class"
|
||||
Then the object "IfcSpace/Cube" is an "IfcSpace"
|
||||
And the object "IfcSpace/Cube" is in the collection "IfcSpace/Cube"
|
||||
And the object "IfcSpace/Cube" has a "Tessellation" representation of "Model/Body/MODEL_VIEW"
|
||||
|
||||
Scenario: Assign a class to a cube in a collection
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
When the object "Cube" is selected
|
||||
And the object "Cube" is placed in the collection "IfcBuildingStorey/My Storey"
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
Then the object "IfcWall/Cube" is contained in "My Storey"
|
||||
|
||||
Scenario: Copy a wall
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
When the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I duplicate the selected objects
|
||||
Then the object "IfcWall/Cube" and "IfcWall/Cube.001" are different elements
|
||||
|
||||
Scenario: Copy a storey
|
||||
Given an empty IFC project
|
||||
And the object "IfcBuildingStorey/My Storey" is selected
|
||||
When I duplicate the selected objects
|
||||
Then the object "IfcBuildingStorey/My Storey" and "IfcBuildingStorey/My Storey.001" are different elements
|
||||
And the object "IfcBuildingStorey/My Storey" is in the collection "IfcBuildingStorey/My Storey"
|
||||
And the object "IfcBuildingStorey/My Storey.001" is in the collection "IfcBuildingStorey/My Storey.001"
|
||||
@@ -0,0 +1,16 @@
|
||||
@search
|
||||
Feature: Search
|
||||
|
||||
Scenario: Select all walls
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.add_filter_group(module='search')"
|
||||
And I set "scene.BIMSearchProperties.facet" to "entity"
|
||||
And I press "bim.add_filter(index=0, type='entity', module='search')"
|
||||
And I set "scene.BIMSearchProperties.filter_groups[0].filters[0].value" to "IfcWall"
|
||||
When I press "bim.search(property_group='BIMSearchProperties')"
|
||||
Then the object "IfcWall/Cube" is selected
|
||||
@@ -0,0 +1,865 @@
|
||||
@sequence
|
||||
Feature: Sequence
|
||||
|
||||
Scenario: Add work plan
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_work_plan"
|
||||
And the variable "work_plan" is "IfcStore.get_file().by_type('IfcWorkPlan')[0].id()"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add Work schedule
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_work_schedule"
|
||||
And the variable "work_schedule" is "IfcStore.get_file().by_type('IfcWorkSchedule')[0].id()"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Remove work plan
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_work_plan"
|
||||
And the variable "work_plan" is "IfcStore.get_file().by_type('IfcWorkPlan')[0].id()"
|
||||
When I press "bim.remove_work_plan(work_plan={work_plan})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Remove work schedule
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_work_schedule"
|
||||
And the variable "work_schedule" is "IfcStore.get_file().by_type('IfcWorkSchedule')[0].id()"
|
||||
When I press "bim.remove_work_schedule(work_schedule={work_schedule})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable Editing Work Plan
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_work_plan"
|
||||
And the variable "work_plan" is "IfcStore.get_file().by_type('IfcWorkPlan')[0].id()"
|
||||
When I press "bim.enable_editing_work_plan(work_plan={work_plan})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit Work Plan
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_work_plan"
|
||||
And the variable "work_plan" is "IfcStore.get_file().by_type('IfcWorkPlan')[0].id()"
|
||||
And I press "bim.enable_editing_work_plan(work_plan={work_plan})"
|
||||
And I set "scene.BIMWorkPlanProperties.work_plan_attributes.get('Name').string_value" to "FooPlan"
|
||||
When I press "bim.edit_work_plan()"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit Work Schedule
|
||||
Given an empty IFC project
|
||||
When 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_work_schedule(work_schedule={work_schedule})"
|
||||
And I set "scene.BIMWorkScheduleProperties.work_schedule_attributes.get('Name').string_value" to "FooSchedule"
|
||||
When I press "bim.edit_work_schedule()"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable Editing Work Plan
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_work_plan"
|
||||
And the variable "work_plan" is "IfcStore.get_file().by_type('IfcWorkPlan')[0].id()"
|
||||
And I press "bim.enable_editing_work_plan_schedules(work_plan={work_plan})"
|
||||
When I press "bim.disable_editing_work_plan"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Assign work schedule
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_work_schedule"
|
||||
And the variable "work_schedule" is "IfcStore.get_file().by_type('IfcWorkSchedule')[0].id()"
|
||||
When I press "bim.add_work_plan"
|
||||
And the variable "work_plan" is "IfcStore.get_file().by_type('IfcWorkPlan')[0].id()"
|
||||
And I press "bim.enable_editing_work_plan_schedules(work_plan={work_plan})"
|
||||
And I press "bim.assign_work_schedule(work_plan={work_plan}, work_schedule={work_schedule})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Unassign work schedule
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_work_schedule"
|
||||
And the variable "work_schedule" is "IfcStore.get_file().by_type('IfcWorkSchedule')[0].id()"
|
||||
When I press "bim.add_work_plan"
|
||||
And the variable "work_plan" is "IfcStore.get_file().by_type('IfcWorkPlan')[0].id()"
|
||||
And I press "bim.enable_editing_work_plan_schedules(work_plan={work_plan})"
|
||||
And I press "bim.assign_work_schedule(work_plan={work_plan}, work_schedule={work_schedule})"
|
||||
And I press "bim.unassign_work_schedule(work_plan={work_plan}, work_schedule={work_schedule})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Delete assigned work schedule
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_work_schedule"
|
||||
And the variable "work_schedule" is "IfcStore.get_file().by_type('IfcWorkSchedule')[0].id()"
|
||||
When I press "bim.add_work_plan"
|
||||
And the variable "work_plan" is "IfcStore.get_file().by_type('IfcWorkPlan')[0].id()"
|
||||
And I press "bim.enable_editing_work_plan_schedules(work_plan={work_plan})"
|
||||
And I press "bim.assign_work_schedule(work_plan={work_plan}, work_schedule={work_schedule})"
|
||||
When I press "bim.remove_work_schedule(work_schedule={work_schedule})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Remove Assigned work schedule
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_work_schedule"
|
||||
And the variable "work_schedule" is "IfcStore.get_file().by_type('IfcWorkSchedule')[0].id()"
|
||||
When I press "bim.add_work_plan"
|
||||
And the variable "work_plan" is "IfcStore.get_file().by_type('IfcWorkPlan')[0].id()"
|
||||
And I press "bim.enable_editing_work_plan_schedules(work_plan={work_plan})"
|
||||
When I press "bim.assign_work_schedule(work_plan={work_plan}, work_schedule={work_schedule})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add work calendar
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_work_calendar"
|
||||
And the variable "work_calendar" is "IfcStore.get_file().by_type('IfcWorkCalendar')[0].id()"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Remove work calendar
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_work_calendar"
|
||||
And the variable "work_calendar" is "IfcStore.get_file().by_type('IfcWorkCalendar')[0].id()"
|
||||
When I press "bim.remove_work_calendar(work_calendar={work_calendar})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit work calendar attributes
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_work_calendar"
|
||||
And the variable "work_calendar" is "IfcStore.get_file().by_type('IfcWorkCalendar')[0].id()"
|
||||
When I press "bim.enable_editing_work_calendar(work_calendar={work_calendar})"
|
||||
And I set "scene.BIMWorkCalendarProperties.work_calendar_attributes.get('Name').string_value" to "FooCalendar"
|
||||
When I press "bim.edit_work_calendar()"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable editing calendar times
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_work_calendar"
|
||||
And the variable "work_calendar" is "IfcStore.get_file().by_type('IfcWorkCalendar')[0].id()"
|
||||
When I press "bim.enable_editing_work_calendar_times(work_calendar={work_calendar})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add calendar Working Time
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_work_calendar"
|
||||
And the variable "work_calendar" is "IfcStore.get_file().by_type('IfcWorkCalendar')[0].id()"
|
||||
When I press "bim.enable_editing_work_calendar_times(work_calendar={work_calendar})"
|
||||
When I press "bim.add_work_time(work_calendar={work_calendar}, time_type="WorkingTimes")"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add calendar Exception Time
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_work_calendar"
|
||||
And the variable "work_calendar" is "IfcStore.get_file().by_type('IfcWorkCalendar')[0].id()"
|
||||
And I press "bim.enable_editing_work_calendar_times(work_calendar={work_calendar})"
|
||||
When I press "bim.add_work_time(work_calendar={work_calendar}, time_type="ExceptionTimes")"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable editing Working Time Attributes
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_work_calendar"
|
||||
And the variable "work_calendar" is "IfcStore.get_file().by_type('IfcWorkCalendar')[0].id()"
|
||||
When I press "bim.enable_editing_work_calendar_times(work_calendar={work_calendar})"
|
||||
When I press "bim.add_work_time(work_calendar={work_calendar}, time_type="WorkingTimes")"
|
||||
And the variable "work_time" is "IfcStore.get_file().by_type('IfcWorkTime')[0].id()"
|
||||
When I press "bim.enable_editing_work_time(work_time={work_time})"
|
||||
|
||||
Scenario: Edit Working Time Start and End Period
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_work_calendar"
|
||||
And the variable "work_calendar" is "IfcStore.get_file().by_type('IfcWorkCalendar')[0].id()"
|
||||
When I press "bim.enable_editing_work_calendar_times(work_calendar={work_calendar})"
|
||||
When I press "bim.add_work_time(work_calendar={work_calendar}, time_type='WorkingTimes')"
|
||||
And the variable "work_time" is "IfcStore.get_file().by_type('IfcWorkTime')[0].id()"
|
||||
When I press "bim.enable_editing_work_time(work_time={work_time})"
|
||||
And I set "scene.BIMWorkCalendarProperties.work_time_attributes.get('Start').string_value" to "2021-01-01"
|
||||
And I set "scene.BIMWorkCalendarProperties.work_time_attributes.get('Finish').string_value" to "2022-01-01"
|
||||
When I press "bim.edit_work_time()"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add Working Time Period
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_work_calendar"
|
||||
And the variable "work_calendar" is "IfcStore.get_file().by_type('IfcWorkCalendar')[0].id()"
|
||||
When I press "bim.enable_editing_work_calendar_times(work_calendar={work_calendar})"
|
||||
When I press "bim.add_work_time(work_calendar={work_calendar}, time_type='WorkingTimes')"
|
||||
And the variable "work_time" is "IfcStore.get_file().by_type('IfcWorkTime')[0].id()"
|
||||
When I press "bim.enable_editing_work_time(work_time={work_time})"
|
||||
When I press "bim.assign_recurrence_pattern(work_time={work_time}, recurrence_type='DAILY')"
|
||||
And the variable "recurrence_pattern" is "IfcStore.get_file().by_type('IfcRecurrencePattern')[0].id()"
|
||||
And I set "scene.BIMWorkCalendarProperties.start_time" to "9AM"
|
||||
And I set "scene.BIMWorkCalendarProperties.end_time" to "1PM"
|
||||
When I press "bim.add_time_period(recurrence_pattern={recurrence_pattern})"
|
||||
When I press "bim.edit_work_time()"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit Working Time start finish and time period
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_work_calendar"
|
||||
And the variable "work_calendar" is "IfcStore.get_file().by_type('IfcWorkCalendar')[0].id()"
|
||||
When I press "bim.enable_editing_work_calendar_times(work_calendar={work_calendar})"
|
||||
When I press "bim.add_work_time(work_calendar={work_calendar}, time_type='WorkingTimes')"
|
||||
And the variable "work_time" is "IfcStore.get_file().by_type('IfcWorkTime')[0].id()"
|
||||
When I press "bim.enable_editing_work_time(work_time={work_time})"
|
||||
And I set "scene.BIMWorkCalendarProperties.work_time_attributes.get('Start').string_value" to "2021-01-01"
|
||||
And I set "scene.BIMWorkCalendarProperties.work_time_attributes.get('Finish').string_value" to "2022-01-01"
|
||||
When I press "bim.assign_recurrence_pattern(work_time={work_time}, recurrence_type='DAILY')"
|
||||
And the variable "recurrence_pattern" is "IfcStore.get_file().by_type('IfcRecurrencePattern')[0].id()"
|
||||
And I set "scene.BIMWorkCalendarProperties.start_time" to "9AM"
|
||||
And I set "scene.BIMWorkCalendarProperties.end_time" to "1PM"
|
||||
When I press "bim.add_time_period(recurrence_pattern={recurrence_pattern})"
|
||||
When I press "bim.edit_work_time()"
|
||||
Then nothing happens
|
||||
|
||||
|
||||
Scenario: Unassign Calendar to task
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_work_calendar"
|
||||
And the variable "work_calendar" is "IfcStore.get_file().by_type('IfcWorkCalendar')[0].id()"
|
||||
When 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_work_schedule_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_calendar(task={task})"
|
||||
And I press "bim.edit_task_calendar(work_calendar={work_calendar}, task={task})"
|
||||
When I press "bim.remove_task_calendar(work_calendar={work_calendar}, task={task})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable editing task
|
||||
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_work_schedule_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()"
|
||||
When I press "bim.enable_editing_task_attributes(task={task})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Copy task attribute
|
||||
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_work_schedule_tasks(work_schedule={work_schedule})"
|
||||
And I press "bim.add_summary_task(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_attributes(task={task})"
|
||||
And I set "scene.BIMWorkScheduleProperties.task_attributes[2].string_value" to "Foo"
|
||||
When I set "scene.BIMTaskTreeProperties.tasks[1].is_selected" to "True"
|
||||
And I press "bim.copy_task_attribute(name='Description')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Unassign task Successor
|
||||
Given an empty IFC project
|
||||
When 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_work_schedule_tasks(work_schedule={work_schedule})"
|
||||
When I press "bim.add_summary_task(work_schedule={work_schedule})"
|
||||
And the variable "task" is "IfcStore.get_file().by_type('IfcTask')[0].id()"
|
||||
When I press "bim.add_task(task={task})"
|
||||
And the variable "nested_task_one" is "IfcStore.get_file().by_type('IfcTask')[1].id()"
|
||||
When I press "bim.add_task(task={task})"
|
||||
And the variable "nested_task_two" is "IfcStore.get_file().by_type('IfcTask')[2].id()"
|
||||
And I press "bim.enable_editing_task_attributes(task={nested_task_one})"
|
||||
And I press "bim.assign_successor(task={nested_task_two})"
|
||||
When I press "bim.unassign_successor(task={nested_task_two})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit time Lag
|
||||
Given an empty IFC project
|
||||
When 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_work_schedule_tasks(work_schedule={work_schedule})"
|
||||
When I press "bim.add_summary_task(work_schedule={work_schedule})"
|
||||
And the variable "task" is "IfcStore.get_file().by_type('IfcTask')[0].id()"
|
||||
When I press "bim.add_task(task={task})"
|
||||
And the variable "nested_task_one" is "IfcStore.get_file().by_type('IfcTask')[1].id()"
|
||||
When I press "bim.add_task(task={task})"
|
||||
And the variable "nested_task_two" is "IfcStore.get_file().by_type('IfcTask')[2].id()"
|
||||
And I press "bim.enable_editing_task_attributes(task={nested_task_one})"
|
||||
When I press "bim.assign_successor(task={nested_task_two})"
|
||||
And the variable "rel_sequence" is "IfcStore.get_file().by_type('IfcRelSequence')[0].id()"
|
||||
When I press "bim.assign_lag_time(sequence={rel_sequence})"
|
||||
And the variable "lag_time" is "IfcStore.get_file().by_type('IfcLagTime')[0].id()"
|
||||
And I press "bim.enable_editing_sequence_lag_time(sequence={rel_sequence}, lag_time={lag_time})"
|
||||
And I set "scene.BIMWorkScheduleProperties.lag_time_attributes.get('LagValue').string_value" to "P5D"
|
||||
When I press "bim.edit_sequence_lag_time(lag_time={lag_time})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Unassign time Lag
|
||||
Given an empty IFC project
|
||||
When 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_work_schedule_tasks(work_schedule={work_schedule})"
|
||||
When I press "bim.add_summary_task(work_schedule={work_schedule})"
|
||||
And the variable "task" is "IfcStore.get_file().by_type('IfcTask')[0].id()"
|
||||
When I press "bim.add_task(task={task})"
|
||||
And the variable "nested_task_one" is "IfcStore.get_file().by_type('IfcTask')[1].id()"
|
||||
When I press "bim.add_task(task={task})"
|
||||
And the variable "nested_task_two" is "IfcStore.get_file().by_type('IfcTask')[2].id()"
|
||||
And I press "bim.enable_editing_task_attributes(task={nested_task_one})"
|
||||
When I press "bim.assign_successor(task={nested_task_two})"
|
||||
And the variable "rel_sequence" is "IfcStore.get_file().by_type('IfcRelSequence')[0].id()"
|
||||
When I press "bim.assign_lag_time(sequence={rel_sequence})"
|
||||
And the variable "lag_time" is "IfcStore.get_file().by_type('IfcLagTime')[0].id()"
|
||||
When I press "bim.unassign_lag_time(sequence={rel_sequence})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit Sequence Relationship
|
||||
Given an empty IFC project
|
||||
When 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_work_schedule_tasks(work_schedule={work_schedule})"
|
||||
When I press "bim.add_summary_task(work_schedule={work_schedule})"
|
||||
And the variable "task" is "IfcStore.get_file().by_type('IfcTask')[0].id()"
|
||||
When I press "bim.add_task(task={task})"
|
||||
And the variable "nested_task_one" is "IfcStore.get_file().by_type('IfcTask')[1].id()"
|
||||
When I press "bim.add_task(task={task})"
|
||||
And the variable "nested_task_two" is "IfcStore.get_file().by_type('IfcTask')[2].id()"
|
||||
And I press "bim.enable_editing_task_attributes(task={nested_task_one})"
|
||||
When I press "bim.assign_successor(task={nested_task_two})"
|
||||
And the variable "rel_sequence" is "IfcStore.get_file().by_type('IfcRelSequence')[0].id()"
|
||||
And I press "bim.enable_editing_sequence_attributes(sequence={rel_sequence})"
|
||||
And I set "scene.BIMWorkScheduleProperties.sequence_attributes.get('SequenceType').enum_value" to "START_START"
|
||||
When I press "bim.edit_sequence_attributes()"
|
||||
Then nothing happens
|
||||
|
||||
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_work_schedule_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 "1 w"
|
||||
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_work_schedule_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_attributes(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_product" to "IfcElement"
|
||||
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})"
|
||||
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 "1 w"
|
||||
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 "7"
|
||||
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_work_schedule_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_attributes(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_product" to "IfcElement"
|
||||
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=0, related_object_type='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 "1 w"
|
||||
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 "7"
|
||||
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_work_schedule_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_attributes(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_product" to "IfcElement"
|
||||
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=0)"
|
||||
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 "1 w"
|
||||
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 "7"
|
||||
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_work_schedule_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_attributes(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_product" to "IfcElement"
|
||||
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=0)"
|
||||
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=0)"
|
||||
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 "1 w"
|
||||
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 "7"
|
||||
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_work_schedule_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_product" to "IfcElement"
|
||||
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=0)"
|
||||
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 "1 w"
|
||||
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.2, 0.2, 0.2, 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 "7"
|
||||
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"
|
||||
|
||||
|
||||
|
||||
Scenario: Clear Previous Animation
|
||||
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_work_schedule_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_attributes(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_product" to "IfcElement"
|
||||
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})"
|
||||
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 "1 w"
|
||||
And I press "bim.visualise_work_schedule_date_range(work_schedule={work_schedule})"
|
||||
And I press "bim.clear_previous_animation"
|
||||
When I am on frame "3"
|
||||
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]"
|
||||
|
||||
Scenario: Generate Gantt Chart
|
||||
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_work_schedule_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_attributes(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 press "bim.generate_gantt_chart(work_schedule={work_schedule})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit task with calendar
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_work_calendar"
|
||||
And the variable "work_calendar" is "IfcStore.get_file().by_type('IfcWorkCalendar')[0].id()"
|
||||
When 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_work_schedule_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()"
|
||||
When I press "bim.add_task(task={task})"
|
||||
And the variable "nested_task_one" is "IfcStore.get_file().by_type('IfcTask')[1].id()"
|
||||
When I press "bim.add_task(task={task})"
|
||||
And the variable "nested_task_two" is "IfcStore.get_file().by_type('IfcTask')[2].id()"
|
||||
When I press "bim.add_task(task={task})"
|
||||
And the variable "nested_task_three" is "IfcStore.get_file().by_type('IfcTask')[3].id()"
|
||||
When I press "bim.enable_editing_work_calendar_times(work_calendar={work_calendar})"
|
||||
When I press "bim.add_work_time(work_calendar={work_calendar}, time_type="WorkingTimes")"
|
||||
When I press "bim.add_work_time(work_calendar={work_calendar}, time_type="ExceptionTimes")"
|
||||
And I press "bim.disable_editing_work_calendar"
|
||||
And I set "scene.BIMWorkScheduleProperties.active_task_index" to "1"
|
||||
And I press "bim.enable_editing_task_sequence()"
|
||||
And I press "bim.assign_successor(task={nested_task_two})"
|
||||
And I set "scene.BIMWorkScheduleProperties.active_task_index" to "3"
|
||||
And I press "bim.assign_predecessor(task={nested_task_two})"
|
||||
And I press "bim.disable_editing_task"
|
||||
And I press "bim.enable_editing_task_time(task={nested_task_three})"
|
||||
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 press "bim.enable_editing_task_calendar(task={task})"
|
||||
And I press "bim.edit_task_calendar(work_calendar={work_calendar}, task={task})"
|
||||
And I set "scene.BIMWorkScheduleProperties.active_task_index" to "1"
|
||||
And I press "bim.enable_editing_task_sequence()"
|
||||
And I press "bim.disable_editing_task()"
|
||||
Then nothing happens
|
||||
|
||||
|
||||
Scenario: Assign task calendar with Working Time
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_work_calendar"
|
||||
And the variable "work_calendar" is "IfcStore.get_file().by_type('IfcWorkCalendar')[0].id()"
|
||||
When 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_work_schedule_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()"
|
||||
When I press "bim.add_task(task={task})"
|
||||
And the variable "nested_task_one" is "IfcStore.get_file().by_type('IfcTask')[1].id()"
|
||||
When I press "bim.add_task(task={task})"
|
||||
And the variable "nested_task_two" is "IfcStore.get_file().by_type('IfcTask')[2].id()"
|
||||
When I press "bim.add_task(task={task})"
|
||||
And the variable "nested_task_three" is "IfcStore.get_file().by_type('IfcTask')[3].id()"
|
||||
When I press "bim.enable_editing_work_calendar_times(work_calendar={work_calendar})"
|
||||
When I press "bim.add_work_time(work_calendar={work_calendar}, time_type="WorkingTimes")"
|
||||
When I press "bim.add_work_time(work_calendar={work_calendar}, time_type="ExceptionTimes")"
|
||||
And I press "bim.disable_editing_work_calendar"
|
||||
And I press "bim.enable_editing_task_sequence()"
|
||||
And I set "scene.BIMWorkScheduleProperties.active_task_index" to "1"
|
||||
And I press "bim.assign_successor(task={nested_task_two})"
|
||||
And I set "scene.BIMWorkScheduleProperties.active_task_index" to "3"
|
||||
And I press "bim.assign_predecessor(task={nested_task_two})"
|
||||
And I press "bim.disable_editing_task"
|
||||
And I press "bim.enable_editing_task_calendar(task={task})"
|
||||
And I press "bim.edit_task_calendar(work_calendar={work_calendar}, task={nested_task_three})"
|
||||
And I press "bim.disable_editing_task()"
|
||||
And I press "bim.enable_editing_task_time(task={nested_task_three})"
|
||||
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"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Assign task calendar with no working time
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_work_calendar"
|
||||
And the variable "work_calendar" is "IfcStore.get_file().by_type('IfcWorkCalendar')[0].id()"
|
||||
When 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_work_schedule_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()"
|
||||
When I press "bim.add_task(task={task})"
|
||||
And the variable "nested_task_one" is "IfcStore.get_file().by_type('IfcTask')[1].id()"
|
||||
When I press "bim.add_task(task={task})"
|
||||
And the variable "nested_task_two" is "IfcStore.get_file().by_type('IfcTask')[2].id()"
|
||||
When I press "bim.add_task(task={task})"
|
||||
And the variable "nested_task_three" is "IfcStore.get_file().by_type('IfcTask')[3].id()"
|
||||
And I press "bim.enable_editing_task_sequence()"
|
||||
And I set "scene.BIMWorkScheduleProperties.active_task_index" to "1"
|
||||
And I press "bim.assign_successor(task={nested_task_two})"
|
||||
And I set "scene.BIMWorkScheduleProperties.active_task_index" to "3"
|
||||
And I press "bim.assign_predecessor(task={nested_task_two})"
|
||||
And I press "bim.disable_editing_task"
|
||||
And I press "bim.enable_editing_task_calendar(task={task})"
|
||||
And I press "bim.edit_task_calendar(work_calendar={work_calendar}, task={nested_task_three})"
|
||||
And I press "bim.disable_editing_task()"
|
||||
When I press "bim.enable_editing_work_calendar_times(work_calendar={work_calendar})"
|
||||
When I press "bim.add_work_time(work_calendar={work_calendar}, time_type="WorkingTimes")"
|
||||
And the variable "work_time" is "IfcStore.get_file().by_type('IfcWorkTime')[0].id()"
|
||||
When I press "bim.enable_editing_work_time(work_time={work_time})"
|
||||
And I set "scene.BIMWorkCalendarProperties.work_time_attributes.get('Start').string_value" to "01-08-2021"
|
||||
And I set "scene.BIMWorkCalendarProperties.work_time_attributes.get('Finish').string_value" to "01-08-2022"
|
||||
When I press "bim.assign_recurrence_pattern(work_time={work_time}, recurrence_type='DAILY')"
|
||||
And the variable "recurrence_pattern" is "IfcStore.get_file().by_type('IfcRecurrencePattern')[0].id()"
|
||||
And I set "scene.BIMWorkCalendarProperties.start_time" to "9AM"
|
||||
And I set "scene.BIMWorkCalendarProperties.end_time" to "1PM"
|
||||
When I press "bim.add_time_period(recurrence_pattern={recurrence_pattern})"
|
||||
And I press "bim.edit_work_time"
|
||||
# When I press "bim.add_work_time(work_calendar={work_calendar}, time_type="ExceptionTimes")"
|
||||
And I press "bim.disable_editing_work_calendar"
|
||||
And I press "bim.enable_editing_task_time(task={nested_task_three})"
|
||||
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"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Contract Task
|
||||
Given an empty IFC project
|
||||
When 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_work_schedule_tasks(work_schedule={work_schedule})"
|
||||
And I press "bim.add_summary_task(work_schedule={work_schedule})"
|
||||
And the variable "summary_task" is "IfcStore.get_file().by_type('IfcTask')[0].id()"
|
||||
When I press "bim.add_task(task={summary_task})"
|
||||
And I press "bim.contract_task(task={summary_task})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Expand Task
|
||||
Given an empty IFC project
|
||||
When 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_work_schedule_tasks(work_schedule={work_schedule})"
|
||||
And I press "bim.add_summary_task(work_schedule={work_schedule})"
|
||||
And the variable "summary_task" is "IfcStore.get_file().by_type('IfcTask')[0].id()"
|
||||
When I press "bim.add_task(task={summary_task})"
|
||||
And I press "bim.contract_task(task={summary_task})"
|
||||
And I press "bim.expand_task(task={summary_task})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Contract All Tasks
|
||||
Given an empty IFC project
|
||||
When 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_work_schedule_tasks(work_schedule={work_schedule})"
|
||||
And I press "bim.add_summary_task(work_schedule={work_schedule})"
|
||||
And the variable "summary_task" is "IfcStore.get_file().by_type('IfcTask')[0].id()"
|
||||
When I press "bim.add_task(task={summary_task})"
|
||||
And the variable "nested_task_one" is "IfcStore.get_file().by_type('IfcTask')[-1].id()"
|
||||
When I press "bim.add_task(task={summary_task})"
|
||||
And the variable "nested_task_two" is "IfcStore.get_file().by_type('IfcTask')[-1].id()"
|
||||
When I press "bim.contract_all_tasks()"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Expand All Tasks
|
||||
Given an empty IFC project
|
||||
When 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_work_schedule_tasks(work_schedule={work_schedule})"
|
||||
And I press "bim.add_summary_task(work_schedule={work_schedule})"
|
||||
And the variable "summary_task" is "IfcStore.get_file().by_type('IfcTask')[-1].id()"
|
||||
When I press "bim.add_task(task={summary_task})"
|
||||
And the variable "nested_task_one" is "IfcStore.get_file().by_type('IfcTask')[-1].id()"
|
||||
When I press "bim.add_task(task={summary_task})"
|
||||
And the variable "nested_task_two" is "IfcStore.get_file().by_type('IfcTask')[-1].id()"
|
||||
And I press "bim.contract_all_tasks()"
|
||||
When I press "bim.expand_all_tasks()"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Assign Product Output
|
||||
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_work_schedule_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 add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class(ifc_class='IfcWall', predefined_type='SOLIDWALL')"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
And I press "bim.assign_product(task={task})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Assign Product Input
|
||||
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_work_schedule_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 add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class(ifc_class='IfcWall', predefined_type='SOLIDWALL')"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
And I press "bim.assign_process(task={task},related_object=0, related_object_type='PRODUCT')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Select Assigned Outputs
|
||||
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_work_schedule_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 add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class()"
|
||||
And I press "bim.assign_product(task={task})"
|
||||
When I press "bim.select_task_related_products(task={task})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Select Assigned Inputs
|
||||
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_work_schedule_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 add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
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')"
|
||||
When I press "bim.select_task_related_products(task={task})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Duplicate Task
|
||||
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_work_schedule_tasks(work_schedule={work_schedule})"
|
||||
When I press "bim.add_summary_task(work_schedule={work_schedule})"
|
||||
And the variable "task" is "IfcStore.get_file().by_type('IfcTask')[0].id()"
|
||||
When I press "bim.add_task(task={task})"
|
||||
And the variable "nested_task_one" is "IfcStore.get_file().by_type('IfcTask')[1].id()"
|
||||
When I press "bim.add_task(task={task})"
|
||||
And the variable "nested_task_two" is "IfcStore.get_file().by_type('IfcTask')[2].id()"
|
||||
And I press "bim.enable_editing_task_attributes(task={nested_task_one})"
|
||||
And I press "bim.assign_successor(task={nested_task_two})"
|
||||
When I press "bim.duplicate_task(task={task})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Duplicate Task and edit sequence Relationship
|
||||
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_work_schedule_tasks(work_schedule={work_schedule})"
|
||||
When I press "bim.add_summary_task(work_schedule={work_schedule})"
|
||||
And the variable "task" is "IfcStore.get_file().by_type('IfcTask')[0].id()"
|
||||
When I press "bim.add_task(task={task})"
|
||||
And the variable "nested_task_one" is "IfcStore.get_file().by_type('IfcTask')[1].id()"
|
||||
When I press "bim.add_task(task={task})"
|
||||
And the variable "nested_task_two" is "IfcStore.get_file().by_type('IfcTask')[2].id()"
|
||||
And I press "bim.enable_editing_task_attributes(task={nested_task_one})"
|
||||
And I press "bim.assign_successor(task={nested_task_two})"
|
||||
And I press "bim.duplicate_task(task={task})"
|
||||
When I press "bim.enable_editing_task_sequence()"
|
||||
And I set "scene.BIMWorkScheduleProperties.active_task_index" to "1"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add Animation Camera
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.add_animation_camera"
|
||||
Then "scene.objects.get('4D Camera').name" is "4D Camera"
|
||||
@@ -0,0 +1,128 @@
|
||||
@spatial
|
||||
Feature: Spatial
|
||||
Covers spatial containment management and spatial tool.
|
||||
|
||||
Scenario: Enable editing container
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
When I press "bim.enable_editing_container"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable editing container
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I press "bim.enable_editing_container"
|
||||
When I press "bim.disable_editing_container"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Assign container
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
And the variable "site" is "tool.Ifc.get().by_type('IfcSite')[0].id()"
|
||||
And I press "bim.set_default_container(container={site})"
|
||||
And I press "bim.enable_editing_container"
|
||||
When I press "bim.assign_container()"
|
||||
Then the object "IfcWall/Cube" is in the collection "IfcSite/My Site"
|
||||
|
||||
Scenario: Copy to container
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And the object "IfcSite/My Site" is selected
|
||||
And additionally the object "IfcWall/Cube" is selected
|
||||
And I press "bim.enable_editing_container"
|
||||
When I press "bim.copy_to_container"
|
||||
Then the object "IfcWall/Cube.001" is in the collection "IfcSite/My Site"
|
||||
|
||||
Scenario: Reference structure
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And the object "IfcBuilding/My Building" is selected
|
||||
And additionally the object "IfcWall/Cube" is selected
|
||||
And I press "bim.enable_editing_container"
|
||||
When I press "bim.reference_structure"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Dereference structure
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And the object "IfcBuilding/My Building" is selected
|
||||
And additionally the object "IfcWall/Cube" is selected
|
||||
And I press "bim.enable_editing_container"
|
||||
When I press "bim.reference_structure"
|
||||
And I press "bim.dereference_structure"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Select container
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
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.enable_editing_container"
|
||||
And the variable "site" is "tool.Ifc.get().by_type('IfcSite')[0].id()"
|
||||
And I press "bim.set_default_container(container={site})"
|
||||
And I press "bim.assign_container()"
|
||||
When I press "bim.select_container"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Select similar container
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
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.enable_editing_container"
|
||||
And the variable "site" is "tool.Ifc.get().by_type('IfcSite')[0].id()"
|
||||
And I press "bim.set_default_container(container={site})"
|
||||
And I press "bim.assign_container()"
|
||||
When I press "bim.select_similar_container"
|
||||
Then nothing happens
|
||||
|
||||
#HERE STARTS TESTS FOR SPATIAL TOOL
|
||||
|
||||
Scenario: Execute generate space from cursor position
|
||||
Given an empty IFC project
|
||||
When I press "bim.generate_space"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Execute generate spaces from walls
|
||||
Given an empty IFC project
|
||||
And I load the demo construction library
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcWallType"
|
||||
And the variable "element_type" is "[e for e in {ifc}.by_type('IfcWallType') if e.Name == 'WAL100'][0].id()"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{element_type}"
|
||||
And I press "bim.add_constr_type_instance"
|
||||
And the object "IfcWall/Wall" is selected
|
||||
When I press "bim.generate_spaces_from_walls"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Execute toggle space visibility
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I press "bim.assign_class(ifc_class='IfcSpace', predefined_type='SPACE')"
|
||||
When I press "bim.toggle_space_visibility"
|
||||
Then nothing happens
|
||||
@@ -0,0 +1,19 @@
|
||||
@structural
|
||||
Feature: Structural
|
||||
|
||||
Scenario: Load structural analysis models
|
||||
Given an empty IFC project
|
||||
When I press "bim.load_structural_analysis_models"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add structural analysis model
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_structural_analysis_models"
|
||||
When I press "bim.add_structural_analysis_model"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable structural analysis model editing UI
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_structural_analysis_models"
|
||||
When I press "bim.disable_structural_analysis_model_editing_ui"
|
||||
Then nothing happens
|
||||
@@ -0,0 +1,120 @@
|
||||
@style
|
||||
Feature: Style
|
||||
|
||||
|
||||
Scenario: Unlink style
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
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.load_styles(style_type='IfcSurfaceStyle')"
|
||||
And I press "bim.enable_adding_presentation_style"
|
||||
And I set "scene.BIMStylesProperties.style_name" to "Style"
|
||||
And I press "bim.add_presentation_style"
|
||||
And the variable "style" is "{ifc}.by_type('IfcSurfaceStyle')[0].id()"
|
||||
And I press "bim.assign_style_to_selected(style_id={style})"
|
||||
When I press "bim.unlink_style(blender_material='Style')"
|
||||
Then the material "Style" is not an IFC style
|
||||
|
||||
Scenario: Add a new style
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_styles(style_type='IfcSurfaceStyle')"
|
||||
And I press "bim.enable_adding_presentation_style"
|
||||
And I set "scene.BIMStylesProperties.style_name" to "Style"
|
||||
And I set "scene.BIMStylesProperties.surface_colour" to "[1.0,0.0,0.0]"
|
||||
When I press "bim.add_presentation_style"
|
||||
Then the material "Style" colour is "1,0,0,1"
|
||||
And the material "Style" is an IFC style
|
||||
|
||||
Scenario: Disable adding a new style
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_styles(style_type='IfcSurfaceStyle')"
|
||||
And I press "bim.enable_adding_presentation_style"
|
||||
When I press "bim.disable_adding_presentation_style"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Remove style
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_styles(style_type='IfcSurfaceStyle')"
|
||||
And I press "bim.enable_adding_presentation_style"
|
||||
And I set "scene.BIMStylesProperties.style_name" to "Style"
|
||||
And I set "scene.BIMStylesProperties.surface_colour" to "[1.0,0.0,0.0]"
|
||||
And I press "bim.add_presentation_style"
|
||||
And the variable "style" is "{ifc}.by_type('IfcSurfaceStyle')[0].id()"
|
||||
When I press "bim.remove_style(style={style})"
|
||||
Then the material "Style" does not exist
|
||||
|
||||
Scenario: Edit style
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_styles(style_type='IfcSurfaceStyle')"
|
||||
And I press "bim.enable_adding_presentation_style"
|
||||
And I set "scene.BIMStylesProperties.style_name" to "Style"
|
||||
And I press "bim.add_presentation_style"
|
||||
And the variable "style" is "{ifc}.by_type('IfcSurfaceStyle')[0].id()"
|
||||
And I press "bim.enable_editing_style(style={style})"
|
||||
And I set "scene.BIMStylesProperties.attributes[0].string_value" to "NewStyle"
|
||||
When I press "bim.edit_style"
|
||||
Then the material "Style" does not exist
|
||||
And the material "NewStyle" exists
|
||||
|
||||
Scenario: Disable editing style
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_styles(style_type='IfcSurfaceStyle')"
|
||||
And I press "bim.enable_adding_presentation_style"
|
||||
And I set "scene.BIMStylesProperties.style_name" to "Style"
|
||||
And I press "bim.add_presentation_style"
|
||||
And the variable "style" is "{ifc}.by_type('IfcSurfaceStyle')[0].id()"
|
||||
And I press "bim.enable_editing_style(style={style})"
|
||||
And I set "scene.BIMStylesProperties.attributes[0].string_value" to "NewStyle"
|
||||
When I press "bim.disable_editing_style"
|
||||
Then the material "NewStyle" does not exist
|
||||
And the material "Style" exists
|
||||
|
||||
Scenario: Load styles
|
||||
Given an empty IFC project
|
||||
When I press "bim.load_styles(style_type='IfcSurfaceStyle')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable editing styles
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_styles(style_type='IfcSurfaceStyle')"
|
||||
When I press "bim.disable_editing_styles"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Assign style to selected
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
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.load_styles(style_type='IfcSurfaceStyle')"
|
||||
And I press "bim.enable_adding_presentation_style"
|
||||
And I set "scene.BIMStylesProperties.style_name" to "Style"
|
||||
And I press "bim.add_presentation_style"
|
||||
And the variable "style" is "{ifc}.by_type('IfcSurfaceStyle')[0].id()"
|
||||
When I press "bim.assign_style_to_selected(style_id={style})"
|
||||
Then the object "IfcWall/Cube" has the material "Style"
|
||||
|
||||
Scenario: Select by style
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
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.load_styles(style_type='IfcSurfaceStyle')"
|
||||
And I press "bim.enable_adding_presentation_style"
|
||||
And I set "scene.BIMStylesProperties.style_name" to "Style"
|
||||
And I press "bim.add_presentation_style"
|
||||
And the variable "style" is "{ifc}.by_type('IfcSurfaceStyle')[0].id()"
|
||||
And I press "bim.assign_style_to_selected(style_id={style})"
|
||||
And the variable "style" is "{ifc}.by_type('IfcSurfaceStyle')[0].id()"
|
||||
When I deselect all objects
|
||||
And I press "bim.select_by_style(style={style})"
|
||||
Then the object "IfcWall/Cube" is selected
|
||||
@@ -0,0 +1,208 @@
|
||||
@system
|
||||
Feature: System
|
||||
|
||||
Scenario: Load systems
|
||||
Given an empty IFC project
|
||||
When I press "bim.load_systems"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable system editing UI
|
||||
Given an empty IFC project
|
||||
When I press "bim.load_systems"
|
||||
And I press "bim.disable_system_editing_ui"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add system
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_systems"
|
||||
When I press "bim.add_system"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit system
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_systems"
|
||||
And I press "bim.add_system"
|
||||
And the variable "system" is "{ifc}.by_type('IfcSystem')[0].id()"
|
||||
And I press "bim.enable_editing_system(system={system})"
|
||||
When I press "bim.edit_system"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit system
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_systems"
|
||||
And I press "bim.add_system"
|
||||
And the variable "system" is "{ifc}.by_type('IfcSystem')[0].id()"
|
||||
When I press "bim.remove_system(system={system})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable editing system
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_systems"
|
||||
And I press "bim.add_system"
|
||||
And the variable "system" is "{ifc}.by_type('IfcSystem')[0].id()"
|
||||
When I press "bim.enable_editing_system(system={system})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable editing system
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_systems"
|
||||
And I press "bim.add_system"
|
||||
And the variable "system" is "{ifc}.by_type('IfcSystem')[0].id()"
|
||||
And I press "bim.enable_editing_system(system={system})"
|
||||
When I press "bim.disable_editing_system"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Assign system
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_systems"
|
||||
And I set "scene.BIMSystemProperties.system_class" to "IfcDistributionSystem"
|
||||
And I press "bim.add_system"
|
||||
And the variable "system" is "{ifc}.by_type('IfcSystem')[0].id()"
|
||||
And I press "bim.enable_editing_system(system={system})"
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcPump"
|
||||
And I press "bim.assign_class"
|
||||
And the object "IfcPump/Cube" is selected
|
||||
When I press "bim.assign_system(system={system})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Unassign system
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_systems"
|
||||
And I set "scene.BIMSystemProperties.system_class" to "IfcDistributionSystem"
|
||||
And I press "bim.add_system"
|
||||
And the variable "system" is "{ifc}.by_type('IfcSystem')[0].id()"
|
||||
And I press "bim.enable_editing_system(system={system})"
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcPump"
|
||||
And I press "bim.assign_class"
|
||||
And the object "IfcPump/Cube" is selected
|
||||
And I press "bim.assign_system(system={system})"
|
||||
When I press "bim.unassign_system(system={system})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Select system products
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_systems"
|
||||
And I set "scene.BIMSystemProperties.system_class" to "IfcDistributionSystem"
|
||||
And I press "bim.add_system"
|
||||
And the variable "system" is "{ifc}.by_type('IfcSystem')[0].id()"
|
||||
And I press "bim.enable_editing_system(system={system})"
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcPump"
|
||||
And I press "bim.assign_class"
|
||||
And the object "IfcPump/Cube" is selected
|
||||
And I press "bim.assign_system(system={system})"
|
||||
When I press "bim.select_system_products(system={system})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Assign flow controls to flow element_type
|
||||
Given an empty IFC project
|
||||
And I add an empty
|
||||
And the object "Empty" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcActuator"
|
||||
And I press "bim.assign_class"
|
||||
|
||||
And I add an empty
|
||||
And the object "Empty" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcActuator"
|
||||
And I press "bim.assign_class"
|
||||
|
||||
And I add an empty
|
||||
And the object "Empty" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcFlowSegment"
|
||||
And I press "bim.assign_class"
|
||||
|
||||
And the object "IfcActuator/Empty" is selected
|
||||
And additionally the object "IfcActuator/Empty.001" is selected
|
||||
And additionally the object "IfcFlowSegment/Empty" is selected
|
||||
When I press "bim.assign_unassign_flow_control(assign=True)"
|
||||
And the variable "assigned_controls" is "set(tool.System.get_flow_element_controls({ifc}.by_type('IfcFlowSegment')[0]))"
|
||||
Then the variable "assigned_controls" is "set({ifc}.by_type('IfcActuator'))"
|
||||
|
||||
Scenario: Connect MEP elements
|
||||
Given an empty IFC project
|
||||
And I create default MEP types
|
||||
And the variable "segment_types" is "[str(e.id()) for e in {ifc}.by_type('IfcDuctSegmentType')]"
|
||||
And the variable "actuator_type_id" is "{ifc}.by_type('IfcActuatorType')[0].id()"
|
||||
|
||||
# segment 1
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcDuctSegmentType"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{segment_types}[0]"
|
||||
And I set "scene.BIMModelProperties.extrusion_depth" to "5.0"
|
||||
And I press "bim.add_constr_type_instance"
|
||||
And I rename the object "IfcDuctSegment/DuctSegment" to "IfcDuctSegment/Seg1"
|
||||
|
||||
# actuator
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcActuatorType"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{actuator_type_id}"
|
||||
And I press "bim.add_constr_type_instance"
|
||||
And the object "IfcActuator/Actuator" is moved to "10,0,0"
|
||||
|
||||
# connect actuator
|
||||
And the object "IfcActuator/Actuator" is selected
|
||||
And additionally the object "IfcDuctSegment/Seg1" is selected
|
||||
And I press "bim.mep_connect_elements"
|
||||
|
||||
# final check
|
||||
Then the object "IfcDuctSegment/Seg1" is at "0,0,1"
|
||||
And the object "IfcDuctSegment/Seg1" dimensions are "0.4,0.2,5.0"
|
||||
And the object "IfcActuator/Actuator" is at "5.5,0.0,1.0"
|
||||
And the variable "connected_elements" is "set(tool.System.get_connected_elements({ifc}.by_type('IfcActuator')[0]))"
|
||||
|
||||
Scenario: Connect MEP elements and regenerate
|
||||
Given an empty IFC project
|
||||
And I create default MEP types
|
||||
And the variable "segment_types" is "[str(e.id()) for e in {ifc}.by_type('IfcDuctSegmentType')]"
|
||||
And the variable "actuator_type_id" is "{ifc}.by_type('IfcActuatorType')[0].id()"
|
||||
|
||||
# segment1
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcDuctSegmentType"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{segment_types}[0]"
|
||||
And I set "scene.BIMModelProperties.extrusion_depth" to "5.0"
|
||||
And I press "bim.add_constr_type_instance"
|
||||
And I rename the object "IfcDuctSegment/DuctSegment" to "IfcDuctSegment/Seg1"
|
||||
|
||||
# segment2
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{segment_types}[0]"
|
||||
And I press "bim.add_constr_type_instance"
|
||||
And I rename the object "IfcDuctSegment/DuctSegment" to "IfcDuctSegment/Seg2"
|
||||
And the object "IfcDuctSegment/Seg2" is rotated by "0,0,90" deg
|
||||
|
||||
# bend between segments 1 and 2
|
||||
And the object "IfcDuctSegment/Seg1" is selected
|
||||
And additionally the object "IfcDuctSegment/Seg2" is selected
|
||||
And I press "bim.mep_add_bend"
|
||||
|
||||
# actuator
|
||||
And I set "scene.BIMModelProperties.ifc_class" to "IfcActuatorType"
|
||||
And I set "scene.BIMModelProperties.relating_type_id" to "{actuator_type_id}"
|
||||
And I press "bim.add_constr_type_instance"
|
||||
And the object "IfcActuator/Actuator" is moved to "10,0,0"
|
||||
|
||||
# connect actuator
|
||||
And the object "IfcActuator/Actuator" is selected
|
||||
And additionally the object "IfcDuctSegment/Seg1" is selected
|
||||
And I press "bim.mep_connect_elements"
|
||||
|
||||
# move and regenerate
|
||||
And the object "IfcActuator/Actuator" is moved to "0.0,5.0,10"
|
||||
And the object "IfcActuator/Actuator" is selected
|
||||
And I press "bim.regenerate_distribution_element"
|
||||
|
||||
# final check
|
||||
Then the object "IfcActuator/Actuator" is at "0.0,5.0,10"
|
||||
And the object "IfcDuctSegment/Seg1" is at "-6.0,5.0,10.0"
|
||||
And the object "IfcDuctSegment/Seg1" dimensions are "0.4,0.2,5.5"
|
||||
And the object "IfcDuctFitting/DuctFitting" is at "-6.5,5.5,10.0"
|
||||
And the object "IfcDuctSegment/Seg2" is at "-6.5,5.5,10.0"
|
||||
And the object "IfcDuctSegment/Seg2" dimensions are "0.4,0.2,5.0"
|
||||
@@ -0,0 +1,212 @@
|
||||
@type
|
||||
Feature: Type
|
||||
|
||||
Scenario: Add type - adding via manual class assignment
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
When I press "bim.assign_class"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add type - add from empty template
|
||||
Given an empty IFC project
|
||||
And I press "bim.launch_type_manager"
|
||||
And I set "scene.BIMModelProperties.type_class" to "IfcWallType"
|
||||
And I set "scene.BIMModelProperties.type_predefined_type" to "SOLIDWALL"
|
||||
And I set "scene.BIMModelProperties.type_template" to "EMPTY"
|
||||
When I press "bim.add_type"
|
||||
Then the object "IfcWallType/TYPEX" is an "IfcWallType"
|
||||
And the object "IfcWallType/TYPEX" has no data
|
||||
|
||||
Scenario: Enable editing type
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
When I press "bim.enable_editing_type"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable editing type
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.enable_editing_type"
|
||||
When I press "bim.disable_editing_type"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Assign type - assign to an empty type
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I add an empty
|
||||
And the object "Empty" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
When the variable "type" is "{ifc}.by_type('IfcWallType')[0].id()"
|
||||
And I press "bim.assign_type(relating_type={type}, related_object='IfcWall/Cube')"
|
||||
Then the object "IfcWall/Cube" has a "Tessellation" representation of "Model/Body/MODEL_VIEW"
|
||||
|
||||
Scenario: Assign type - assign to a type with representation maps
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
When the variable "type" is "{ifc}.by_type('IfcWallType')[0].id()"
|
||||
And I press "bim.assign_type(relating_type={type}, related_object='IfcWall/Cube')"
|
||||
Then the object "IfcWall/Cube" has a "MappedRepresentation" representation of "Model/Body/MODEL_VIEW"
|
||||
|
||||
Scenario: Assign type - assign to a type with a material layer set, which automatically recreates the shape
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I add an empty
|
||||
And the object "Empty" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.add_material()"
|
||||
And I set "active_object.BIMObjectMaterialProperties.material_type" to "IfcMaterialLayerSet"
|
||||
And I press "bim.assign_material"
|
||||
When the variable "type" is "{ifc}.by_type('IfcWallType')[0].id()"
|
||||
And I press "bim.assign_type(relating_type={type}, related_object='IfcWall/Cube')"
|
||||
Then the object "IfcWall/Cube" has a "SweptSolid" representation of "Model/Body/MODEL_VIEW"
|
||||
And the object "IfcWall/Cube" has a "100" thick layered material containing the material "Default"
|
||||
And the object "IfcWall/Cube" dimensions are "2,.1,3"
|
||||
|
||||
Scenario: Assign type - assign to a different type with a material layer set
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I add an empty
|
||||
And the object "Empty" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
And the variable "type" is "{ifc}.by_type('IfcWallType')[-1].id()"
|
||||
And I press "bim.add_material()"
|
||||
And I set "active_object.BIMObjectMaterialProperties.material_type" to "IfcMaterialLayerSet"
|
||||
And I press "bim.assign_material"
|
||||
And I add an empty
|
||||
And the object "Empty" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
And I set "active_object.BIMObjectMaterialProperties.material_type" to "IfcMaterialLayerSet"
|
||||
And I press "bim.assign_material"
|
||||
And the variable "type2" is "[w for w in {ifc}.by_type('IfcWallType') if w.id() != {type}][0].id()"
|
||||
And the variable "layer_set" is "ifcopenshell.util.element.get_material({ifc}.by_id({type2})).id()"
|
||||
And the variable "layer" is "{ifc}.by_id({layer_set}).MaterialLayers[0].id()"
|
||||
And I press "bim.enable_editing_material_set_item(material_set_item={layer})"
|
||||
And I set "active_object.BIMObjectMaterialProperties.material_set_item_attributes[0].float_value" to "200"
|
||||
And I press "bim.edit_material_set_item(material_set_item={layer})"
|
||||
And I press "bim.edit_assigned_material(material_set={layer_set})"
|
||||
When I press "bim.assign_type(relating_type={type}, related_object='IfcWall/Cube')"
|
||||
Then the object "IfcWall/Cube" has a "SweptSolid" representation of "Model/Body/MODEL_VIEW"
|
||||
And the object "IfcWall/Cube" has a "100" thick layered material containing the material "Default"
|
||||
And the object "IfcWall/Cube" dimensions are "2,.1,3"
|
||||
When I press "bim.assign_type(relating_type={type2}, related_object='IfcWall/Cube')"
|
||||
Then the object "IfcWall/Cube" has a "200" thick layered material containing the material "Default"
|
||||
And the object "IfcWall/Cube" dimensions are "2,.2,3"
|
||||
|
||||
Scenario: Assign type - assign to a type with a material profile set
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I add an empty
|
||||
And the object "Empty" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.add_material()"
|
||||
And I set "active_object.BIMObjectMaterialProperties.material_type" to "IfcMaterialProfileSet"
|
||||
And I press "bim.assign_material"
|
||||
And I press "bim.enable_editing_assigned_material"
|
||||
And I press "bim.add_profile_def"
|
||||
And the variable "profile_set" is "{ifc}.by_type("IfcMaterialProfileSet")[0].id()"
|
||||
And I press "bim.add_profile(profile_set={profile_set})"
|
||||
And I press "bim.edit_assigned_material(material_set={profile_set})"
|
||||
When the variable "type" is "{ifc}.by_type('IfcWallType')[0].id()"
|
||||
And I press "bim.assign_type(relating_type={type}, related_object='IfcWall/Cube')"
|
||||
Then the object "IfcWall/Cube" has a "SweptSolid" representation of "Model/Body/MODEL_VIEW"
|
||||
|
||||
Scenario: Select type objects
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I add an empty
|
||||
And the object "Empty" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
And the variable "type" is "{ifc}.by_type('IfcWallType')[0].id()"
|
||||
And I press "bim.assign_type(relating_type={type}, related_object='IfcWall/Cube')"
|
||||
When the object "IfcWallType/Empty" is selected
|
||||
And I press "bim.select_type_objects"
|
||||
Then the object "IfcWall/Cube" is selected
|
||||
|
||||
Scenario: Select similar type
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I add an empty
|
||||
And the object "Empty" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElementType"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWallType"
|
||||
And I press "bim.assign_class"
|
||||
And the variable "type" is "{ifc}.by_type('IfcWallType')[0].id()"
|
||||
And I press "bim.assign_type(relating_type={type}, related_object='IfcWall/Cube')"
|
||||
And I press "bim.assign_type(relating_type={type}, related_object='IfcWall/Cube.001')"
|
||||
When the object "IfcWall/Cube" is selected
|
||||
And I press "bim.select_similar_type"
|
||||
Then the object "IfcWall/Cube" is selected
|
||||
And the object "IfcWall/Cube.001" is selected
|
||||
|
||||
Scenario: Purge unused types
|
||||
Given an empty IFC project
|
||||
And I press "bim.launch_type_manager"
|
||||
And I set "scene.BIMModelProperties.type_class" to "IfcWallType"
|
||||
And I set "scene.BIMModelProperties.type_predefined_type" to "SOLIDWALL"
|
||||
And I set "scene.BIMModelProperties.type_template" to "EMPTY"
|
||||
When I press "bim.add_type"
|
||||
Then the object "IfcWallType/TYPEX" is an "IfcWallType"
|
||||
And the object "IfcWallType/TYPEX" has no data
|
||||
When I press "bim.purge_unused_types"
|
||||
Then the object "IfcWallType/TYPEX" does not exist
|
||||
@@ -0,0 +1,81 @@
|
||||
@unit
|
||||
Feature: Unit
|
||||
|
||||
Scenario: Assign scene units
|
||||
Given an empty IFC project
|
||||
When I press "bim.assign_scene_units"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Assign unit
|
||||
Given an empty IFC project
|
||||
And the variable "unit" is "{ifc}.by_type('IfcSIUnit')[0].id()"
|
||||
When I press "bim.assign_unit(unit={unit})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Unassign unit
|
||||
Given an empty IFC project
|
||||
And the variable "unit" is "{ifc}.by_type('IfcSIUnit')[0].id()"
|
||||
When I press "bim.unassign_unit(unit={unit})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Load units
|
||||
Given an empty IFC project
|
||||
When I press "bim.load_units"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable unit editing UI
|
||||
Given an empty IFC project
|
||||
And I press "bim.load_units"
|
||||
When I press "bim.disable_unit_editing_ui"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Remove unit
|
||||
Given an empty IFC project
|
||||
And the variable "unit" is "{ifc}.by_type('IfcSIUnit')[0].id()"
|
||||
When I press "bim.remove_unit(unit={unit})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add monetary unit
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_monetary_unit"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add SI unit
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_si_unit(unit_type='LENGTHUNIT')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add context dependent unit
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_context_dependent_unit(name='THINGAMAJIGS', unit_type='LENGTHUNIT')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add conversion based unit
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_conversion_based_unit(name='inch')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add conversion based unit with offset
|
||||
Given an empty IFC project
|
||||
When I press "bim.add_conversion_based_unit(name='fahrenheit')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Enable editing unit
|
||||
Given an empty IFC project
|
||||
And the variable "unit" is "{ifc}.by_type('IfcSIUnit')[0].id()"
|
||||
When I press "bim.enable_editing_unit(unit={unit})"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Disable editing unit
|
||||
Given an empty IFC project
|
||||
And the variable "unit" is "{ifc}.by_type('IfcSIUnit')[0].id()"
|
||||
And I press "bim.enable_editing_unit(unit={unit})"
|
||||
When I press "bim.disable_editing_unit"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Edit unit
|
||||
Given an empty IFC project
|
||||
And the variable "unit" is "{ifc}.by_type('IfcSIUnit')[0].id()"
|
||||
And I press "bim.enable_editing_unit(unit={unit})"
|
||||
When I press "bim.edit_unit(unit={unit})"
|
||||
Then nothing happens
|
||||
@@ -0,0 +1,162 @@
|
||||
@void
|
||||
Feature: Void
|
||||
Covers voids and fillings.
|
||||
|
||||
Scenario: Add an opening
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I add a cube
|
||||
And the object "IfcWall/Cube" is selected
|
||||
And additionally the object "Cube" is selected
|
||||
When I press "bim.add_opening"
|
||||
Then the object "Cube" does not exist
|
||||
And the object "IfcWall/Cube" is voided by "Cube"
|
||||
|
||||
Scenario: Add an opening using the BIM tool
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.add_potential_opening"
|
||||
And the object "Opening" is selected
|
||||
And additionally the object "IfcWall/Cube" is selected
|
||||
When I press "bim.add_opening"
|
||||
Then the object "Opening" does not exist
|
||||
And the object "IfcWall/Cube" is voided by "Opening"
|
||||
|
||||
Scenario: Show openings
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.add_potential_opening"
|
||||
And the object "Opening" is selected
|
||||
And additionally the object "IfcWall/Cube" is selected
|
||||
And I press "bim.add_opening"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
When I press "bim.show_openings"
|
||||
Then the object "IfcOpeningElement/Opening" is an "IfcOpeningElement"
|
||||
And the object "IfcWall/Cube" is voided by "Opening"
|
||||
|
||||
Scenario: Hide openings
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.add_potential_opening"
|
||||
And the object "Opening" is selected
|
||||
And additionally the object "IfcWall/Cube" is selected
|
||||
And I press "bim.add_opening"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
And I press "bim.show_openings"
|
||||
When I press "bim.hide_openings"
|
||||
Then the object "IfcOpeningElement/Opening" does not exist
|
||||
|
||||
Scenario: Edit openings
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.add_potential_opening"
|
||||
And the object "Opening" is selected
|
||||
And additionally the object "IfcWall/Cube" is selected
|
||||
And I press "bim.add_opening"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
And I press "bim.show_openings"
|
||||
When the object "IfcOpeningElement/Opening" is moved to "1,0,0"
|
||||
And I press "bim.edit_openings"
|
||||
Then the object "IfcOpeningElement/Opening" does not exist
|
||||
And the object "IfcWall/Cube" is voided by "Opening"
|
||||
|
||||
Scenario: Add an opening to Element B with a void that already voids Element A
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I press "bim.assign_class"
|
||||
|
||||
And I press "bim.add_potential_opening"
|
||||
And the object "Opening" is selected
|
||||
And additionally the object "IfcWall/Cube" is selected
|
||||
And I press "bim.add_opening"
|
||||
|
||||
And the object "IfcWall/Cube" is selected
|
||||
And I press "bim.show_openings"
|
||||
|
||||
When the object "IfcOpeningElement/Opening" is selected
|
||||
And additionally the object "IfcWall/Cube.001" is selected
|
||||
And I press "bim.add_opening"
|
||||
|
||||
Then the object "IfcWall/Cube" is not voided by "Opening"
|
||||
And the object "IfcWall/Cube.001" is voided by "Opening"
|
||||
|
||||
Scenario: Remove opening
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.add_potential_opening"
|
||||
And the object "Opening" is selected
|
||||
And additionally the object "IfcWall/Cube" is selected
|
||||
And I press "bim.add_opening"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
And I press "bim.show_openings"
|
||||
When the object "IfcOpeningElement/Opening" is selected
|
||||
And the variable "opening_id" is "IfcStore.get_file().by_type('IfcOpeningElement')[0].id()"
|
||||
And I press "bim.remove_opening(opening_id={opening_id})"
|
||||
Then the object "Opening" is not an IFC element
|
||||
And the object "IfcWall/Cube" is not voided by "Opening"
|
||||
|
||||
Scenario: Remove opening - using deletion
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.add_potential_opening"
|
||||
And the object "Opening" is selected
|
||||
And additionally the object "IfcWall/Cube" is selected
|
||||
And I press "bim.add_opening"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
And I press "bim.show_openings"
|
||||
When the object "IfcOpeningElement/Opening" is selected
|
||||
And I delete the selected objects
|
||||
Then the object "Opening" does not exist
|
||||
And the object "IfcWall/Cube" is not voided by "Opening"
|
||||
|
||||
Scenario: Remove opening - indirectly by deleting its building element
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.add_potential_opening"
|
||||
And the object "Opening" is selected
|
||||
And additionally the object "IfcWall/Cube" is selected
|
||||
And I press "bim.add_opening"
|
||||
And the object "IfcWall/Cube" is selected
|
||||
And I press "bim.show_openings"
|
||||
When the object "IfcWall/Cube" is selected
|
||||
And I delete the selected objects
|
||||
Then the object "Opening" is not an IFC element
|
||||
@@ -0,0 +1,20 @@
|
||||
@web
|
||||
Feature: Web
|
||||
Web interface to complement Blender UI
|
||||
|
||||
Scenario: Start server
|
||||
Given an empty Blender session
|
||||
When I press "bim.connect_websocket_server"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Kill server
|
||||
Given an empty Blender session
|
||||
And I press "bim.connect_websocket_server"
|
||||
When I press "bim.kill_websocket_server"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Open web browser
|
||||
Given an empty Blender session
|
||||
And I press "bim.connect_websocket_server"
|
||||
When I press "bim.open_web_browser"
|
||||
Then nothing happens
|
||||
Reference in New Issue
Block a user