Rename source dir

This commit is contained in:
Dion Moult
2024-08-13 23:09:50 +10:00
parent cc28f5a92b
commit 25071dfec6
930 changed files with 0 additions and 0 deletions
@@ -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
+233
View File
@@ -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
+461
View File
@@ -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"
+28
View File
@@ -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
+48
View File
@@ -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"
+138
View File
@@ -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"
+60
View File
@@ -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")"
+607
View File
@@ -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"
+308
View File
@@ -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
+37
View File
@@ -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"
+911
View File
@@ -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"
+400
View File
@@ -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
+57
View File
@@ -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
+119
View File
@@ -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"
+128
View File
@@ -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
+120
View File
@@ -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
+208
View File
@@ -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"
+212
View File
@@ -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
+81
View File
@@ -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
+162
View File
@@ -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
+20
View File
@@ -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