2021-10-22 11:16:03 +11:00
@model
Feature : Model
Scenario : Add type instance - add from a mesh
Given a n e m p t y I F C p r o j e c t
And I a d d a c u b e
And t h e o b j e c t " C u b e " i s s e l e c t e d
And I s e t " s c e n e . B I M R o o t P r o p e r t i e s . i f c _ p r o d u c t " t o " I f c E l e m e n t T y p e "
And I s e t " s c e n e . B I M R o o t P r o p e r t i e s . i f c _ c l a s s " t o " I f c W a l l T y p e "
And I p r e s s " b i m . a s s i g n _ c l a s s "
2022-07-27 08:11:52 +02:00
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c W a l l T y p e "
2021-10-22 11:16:03 +11:00
And t h e v a r i a b l e " c u b e " i s " { i f c } . b y _ t y p e ( ' I f c W a l l T y p e ' ) [ 0 ] . i d ( ) "
2022-07-27 08:18:34 +02:00
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { c u b e } "
2025-03-10 08:23:50 +11:00
When I p r e s s " b i m . a d d _ o c c u r r e n c e "
2022-01-30 14:46:05 +11:00
Then t h e o b j e c t " I f c W a l l / W a l l " e x i s t s
2021-10-22 11:16:03 +11:00
Scenario : Add type instance - add from an empty
Given a n e m p t y I F C p r o j e c t
And I a d d a n e m p t y
And t h e o b j e c t " E m p t y " i s s e l e c t e d
And I s e t " s c e n e . B I M R o o t P r o p e r t i e s . i f c _ p r o d u c t " t o " I f c E l e m e n t T y p e "
And I s e t " s c e n e . B I M R o o t P r o p e r t i e s . i f c _ c l a s s " t o " I f c W a l l T y p e "
And I p r e s s " b i m . a s s i g n _ c l a s s "
2022-07-27 08:11:52 +02:00
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c W a l l T y p e "
2021-10-22 11:16:03 +11:00
And t h e v a r i a b l e " e m p t y " i s " { i f c } . b y _ t y p e ( ' I f c W a l l T y p e ' ) [ 0 ] . i d ( ) "
2022-07-27 08:18:34 +02:00
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { e m p t y } "
2025-03-10 08:23:50 +11:00
When I p r e s s " b i m . a d d _ o c c u r r e n c e "
2022-01-30 14:46:05 +11:00
Then t h e o b j e c t " I f c W a l l / W a l l " e x i s t s
2021-10-23 21:19:10 +11:00
2021-11-06 20:56:53 +11:00
Scenario : Add type instance - add a mesh where existing instances have changed context
Given a n e m p t y I F C p r o j e c t
And I a d d a c u b e
And t h e o b j e c t " C u b e " i s s e l e c t e d
And I s e t " s c e n e . B I M R o o t P r o p e r t i e s . i f c _ p r o d u c t " t o " I f c E l e m e n t T y p e "
And I s e t " s c e n e . B I M R o o t P r o p e r t i e s . i f c _ c l a s s " t o " I f c W a l l T y p e "
And I p r e s s " b i m . a s s i g n _ c l a s s "
2022-07-27 08:11:52 +02:00
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c W a l l T y p e "
2021-11-06 20:56:53 +11:00
And t h e v a r i a b l e " c u b e " i s " { i f c } . b y _ t y p e ( ' I f c W a l l T y p e ' ) [ 0 ] . i d ( ) "
2022-07-27 08:18:34 +02:00
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { c u b e } "
2025-03-10 08:23:50 +11:00
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2022-01-30 14:46:05 +11:00
And t h e o b j e c t " I f c W a l l / W a l l " d a t a i s a " T e s s e l l a t i o n " r e p r e s e n t a t i o n o f " M o d e l / B o d y / M O D E L _ V I E W "
And t h e o b j e c t " I f c W a l l / W a l l " i s s e l e c t e d
2023-02-04 14:09:35 +11:00
And t h e v a r i a b l e " c o n t e x t " i s " [ c f o r c i n { i f c } . b y _ t y p e ( ' I f c G e o m e t r i c R e p r e s e n t a t i o n S u b C o n t e x t ' ) i f c . C o n t e x t T y p e = = ' P l a n ' a n d c . C o n t e x t I d e n t i f i e r = = ' B o d y ' a n d c . T a r g e t V i e w = = ' P L A N _ V I E W ' ] [ 0 ] . i d ( ) "
2023-03-23 21:50:50 +11:00
And I s e t " a c t i v e _ o b j e c t . B I M G e o m e t r y P r o p e r t i e s . c o n t e x t s " t o " { c o n t e x t } "
2021-11-06 20:56:53 +11:00
And I p r e s s " b i m . a d d _ r e p r e s e n t a t i o n "
2023-02-04 14:09:35 +11:00
And t h e o b j e c t " I f c W a l l / W a l l " d a t a i s a " A n n o t a t i o n 2 D " r e p r e s e n t a t i o n o f " P l a n / B o d y / P L A N _ V I E W "
2025-03-10 08:23:50 +11:00
When I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-02-04 14:09:35 +11:00
Then t h e o b j e c t " I f c W a l l / W a l l " d a t a i s a " A n n o t a t i o n 2 D " r e p r e s e n t a t i o n o f " P l a n / B o d y / P L A N _ V I E W "
And t h e o b j e c t " I f c W a l l / W a l l . 0 0 1 " d a t a i s a " A n n o t a t i o n 2 D " r e p r e s e n t a t i o n o f " P l a n / B o d y / P L A N _ V I E W "
2021-11-06 20:56:53 +11:00
2022-07-26 01:22:22 +02:00
Scenario : Add one type from the Construction Type Browser
Given a n e m p t y I F C p r o j e c t
And I l o a d t h e d e m o c o n s t r u c t i o n l i b r a r y
2022-08-10 13:23:13 +02:00
When I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c C o l u m n T y p e "
2022-08-01 22:04:59 +02:00
And I a d d t h e c o n s t r u c t i o n t y p e
2022-07-26 01:22:22 +02:00
Then t h e o b j e c t " I f c C o l u m n / C o l u m n " e x i s t s
2021-10-23 21:19:10 +11:00
Scenario : Add grid
Given a n e m p t y I F C p r o j e c t
When I p r e s s " m e s h . a d d _ g r i d "
Then t h e o b j e c t " I f c G r i d / G r i d " i s a n " I f c G r i d "
And t h e o b j e c t " I f c G r i d A x i s / A " i s a n " I f c G r i d A x i s "
And t h e o b j e c t " I f c G r i d A x i s / B " i s a n " I f c G r i d A x i s "
And t h e o b j e c t " I f c G r i d A x i s / C " i s a n " I f c G r i d A x i s "
And t h e o b j e c t " I f c G r i d A x i s / 0 1 " i s a n " I f c G r i d A x i s "
And t h e o b j e c t " I f c G r i d A x i s / 0 2 " i s a n " I f c G r i d A x i s "
And t h e o b j e c t " I f c G r i d A x i s / 0 3 " i s a n " I f c G r i d A x i s "
2021-11-04 22:23:26 +11:00
2023-02-22 20:38:02 +11:00
Scenario : Add a wall
Given a n e m p t y I F C p r o j e c t
And I l o a d t h e d e m o c o n s t r u c t i o n l i b r a r y
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c W a l l T y p e "
And t h e v a r i a b l e " e l e m e n t _ t y p e " i s " [ e f o r e i n { i f c } . b y _ t y p e ( ' I f c W a l l T y p e ' ) i f e . N a m e = = ' W A L 1 0 0 ' ] [ 0 ] . i d ( ) "
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { e l e m e n t _ t y p e } "
2025-03-10 08:23:50 +11:00
When I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-02-22 20:38:02 +11:00
Then t h e o b j e c t " I f c W a l l / W a l l " i s a n " I f c W a l l "
And t h e o b j e c t " I f c W a l l / W a l l " d i m e n s i o n s a r e " 1 , 0 . 1 , 3 "
And t h e o b j e c t " I f c W a l l / W a l l " b o t t o m l e f t c o r n e r i s a t " 0 , 0 , 0 "
Scenario : Extend a wall to the cursor
Given a n e m p t y I F C p r o j e c t
And I l o a d t h e d e m o c o n s t r u c t i o n l i b r a r y
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c W a l l T y p e "
And t h e v a r i a b l e " e l e m e n t _ t y p e " i s " [ e f o r e i n { i f c } . b y _ t y p e ( ' I f c W a l l T y p e ' ) i f e . N a m e = = ' W A L 1 0 0 ' ] [ 0 ] . i d ( ) "
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { e l e m e n t _ t y p e } "
2025-03-12 23:04:41 +11:00
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-02-22 20:38:02 +11:00
And t h e o b j e c t " I f c W a l l / W a l l " i s s e l e c t e d
And t h e c u r s o r i s a t " 2 , 0 , 0 "
When I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ E ' ) "
Then t h e o b j e c t " I f c W a l l / W a l l " d i m e n s i o n s a r e " 2 , 0 . 1 , 3 "
And t h e o b j e c t " I f c W a l l / W a l l " b o t t o m l e f t c o r n e r i s a t " 0 , 0 , 0 "
Scenario : Add a wall perpendicular to an existing wall
Given a n e m p t y I F C p r o j e c t
And I l o a d t h e d e m o c o n s t r u c t i o n l i b r a r y
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c W a l l T y p e "
And t h e v a r i a b l e " e l e m e n t _ t y p e " i s " [ e f o r e i n { i f c } . b y _ t y p e ( ' I f c W a l l T y p e ' ) i f e . N a m e = = ' W A L 1 0 0 ' ] [ 0 ] . i d ( ) "
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { e l e m e n t _ t y p e } "
2025-03-12 23:04:41 +11:00
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-02-22 20:38:02 +11:00
And t h e c u r s o r i s a t " 0 . 5 , 0 , 0 "
2025-03-12 23:04:41 +11:00
When I p r e s s " b i m . a d d _ o c c u r r e n c e "
2024-03-27 15:23:46 +05:00
Then t h e o b j e c t " I f c W a l l / W a l l " d i m e n s i o n s a r e " 1 , 0 . 1 , 3 "
And t h e o b j e c t " I f c W a l l / W a l l " b o t t o m l e f t c o r n e r i s a t " 0 , 0 , 0 "
And t h e o b j e c t " I f c W a l l / W a l l . 0 0 1 " d i m e n s i o n s a r e " 1 , 0 . 1 , 3 "
And t h e o b j e c t " I f c W a l l / W a l l . 0 0 1 " b o t t o m l e f t c o r n e r i s a t " 0 . 5 , 0 , 0 "
And t h e o b j e c t " I f c W a l l / W a l l . 0 0 1 " t o p r i g h t c o r n e r i s a t " 0 . 6 , - 1 , 3 "
2023-02-22 20:38:02 +11:00
Scenario : Extend one wall to another
Given a n e m p t y I F C p r o j e c t
And I l o a d t h e d e m o c o n s t r u c t i o n l i b r a r y
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c W a l l T y p e "
And t h e v a r i a b l e " e l e m e n t _ t y p e " i s " [ e f o r e i n { i f c } . b y _ t y p e ( ' I f c W a l l T y p e ' ) i f e . N a m e = = ' W A L 1 0 0 ' ] [ 0 ] . i d ( ) "
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { e l e m e n t _ t y p e } "
2025-03-12 23:04:41 +11:00
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-02-22 20:38:02 +11:00
And t h e c u r s o r i s a t " 0 . 5 , 0 , 0 "
2025-03-12 23:04:41 +11:00
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2024-03-27 15:23:46 +05:00
And t h e o b j e c t " I f c W a l l / W a l l . 0 0 1 " i s m o v e d t o " 0 . 5 , - 1 , 0 "
And t h e o b j e c t " I f c W a l l / W a l l . 0 0 1 " i s s e l e c t e d
And a d d i t i o n a l l y t h e o b j e c t " I f c W a l l / W a l l " i s s e l e c t e d
2023-02-22 20:38:02 +11:00
When I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ E ' ) "
2024-03-27 15:23:46 +05:00
Then t h e o b j e c t " I f c W a l l / W a l l " d i m e n s i o n s a r e " 1 , 0 . 1 , 3 "
And t h e o b j e c t " I f c W a l l / W a l l " b o t t o m l e f t c o r n e r i s a t " 0 , 0 , 0 "
And t h e o b j e c t " I f c W a l l / W a l l . 0 0 1 " d i m e n s i o n s a r e " 2 , 0 . 1 , 3 "
And t h e o b j e c t " I f c W a l l / W a l l . 0 0 1 " b o t t o m l e f t c o r n e r i s a t " 0 . 5 , 0 , 0 "
And t h e o b j e c t " I f c W a l l / W a l l . 0 0 1 " t o p r i g h t c o r n e r i s a t " 0 . 6 , - 2 , 3 "
2023-02-22 20:38:02 +11:00
Scenario : Join two walls with a mitre joint
Given a n e m p t y I F C p r o j e c t
And I l o a d t h e d e m o c o n s t r u c t i o n l i b r a r y
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c W a l l T y p e "
And t h e v a r i a b l e " e l e m e n t _ t y p e " i s " [ e f o r e i n { i f c } . b y _ t y p e ( ' I f c W a l l T y p e ' ) i f e . N a m e = = ' W A L 1 0 0 ' ] [ 0 ] . i d ( ) "
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { e l e m e n t _ t y p e } "
2025-03-12 23:04:41 +11:00
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
And t h e c u r s o r i s a t " 0 . 7 , 0 , 0 "
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2024-03-27 15:23:46 +05:00
And t h e o b j e c t " I f c W a l l / W a l l . 0 0 1 " i s s e l e c t e d
And a d d i t i o n a l l y t h e o b j e c t " I f c W a l l / W a l l " i s s e l e c t e d
2025-03-12 23:04:41 +11:00
When I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ T ' ) "
Then t h e o b j e c t " I f c W a l l / W a l l " d i m e n s i o n s a r e " 0 . 8 , 0 . 1 , 3 "
And t h e o b j e c t " I f c W a l l / W a l l " b o t t o m l e f t c o r n e r i s a t " 0 . 0 , 0 , 0 "
2024-03-27 15:23:46 +05:00
And t h e o b j e c t " I f c W a l l / W a l l . 0 0 1 " d i m e n s i o n s a r e " 1 . 1 , 0 . 1 , 3 "
2025-03-12 23:04:41 +11:00
And t h e o b j e c t " I f c W a l l / W a l l . 0 0 1 " b o t t o m l e f t c o r n e r i s a t " 0 . 7 , 0 . 1 , 0 "
And t h e o b j e c t " I f c W a l l / W a l l . 0 0 1 " t o p r i g h t c o r n e r i s a t " 0 . 8 , - 1 , 3 "
2023-02-22 20:38:02 +11:00
Scenario : Change the height of a wall
Given a n e m p t y I F C p r o j e c t
And I l o a d t h e d e m o c o n s t r u c t i o n l i b r a r y
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c W a l l T y p e "
And t h e v a r i a b l e " e l e m e n t _ t y p e " i s " [ e f o r e i n { i f c } . b y _ t y p e ( ' I f c W a l l T y p e ' ) i f e . N a m e = = ' W A L 1 0 0 ' ] [ 0 ] . i d ( ) "
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { e l e m e n t _ t y p e } "
2025-03-12 23:04:41 +11:00
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-02-22 20:38:02 +11:00
And t h e o b j e c t " I f c W a l l / W a l l " i s s e l e c t e d
2023-05-06 11:05:13 +10:00
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . e x t r u s i o n _ d e p t h " t o " 2 . 0 "
When I p r e s s " b i m . c h a n g e _ e x t r u s i o n _ d e p t h ( d e p t h = 2 . 0 ) "
2023-02-22 20:38:02 +11:00
Then t h e o b j e c t " I f c W a l l / W a l l " d i m e n s i o n s a r e " 1 , 0 . 1 , 2 "
Scenario : Change the length of a wall
Given a n e m p t y I F C p r o j e c t
And I l o a d t h e d e m o c o n s t r u c t i o n l i b r a r y
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c W a l l T y p e "
And t h e v a r i a b l e " e l e m e n t _ t y p e " i s " [ e f o r e i n { i f c } . b y _ t y p e ( ' I f c W a l l T y p e ' ) i f e . N a m e = = ' W A L 1 0 0 ' ] [ 0 ] . i d ( ) "
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { e l e m e n t _ t y p e } "
2025-03-12 23:04:41 +11:00
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-02-22 20:38:02 +11:00
And t h e o b j e c t " I f c W a l l / W a l l " i s s e l e c t e d
2023-05-06 11:05:13 +10:00
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . l e n g t h " t o " 2 . 0 "
When I p r e s s " b i m . c h a n g e _ l a y e r _ l e n g t h ( l e n g t h = 2 . 0 ) "
2023-02-22 20:38:02 +11:00
Then t h e o b j e c t " I f c W a l l / W a l l " d i m e n s i o n s a r e " 2 , 0 . 1 , 3 "
Scenario : Flip a wall
Given a n e m p t y I F C p r o j e c t
And I l o a d t h e d e m o c o n s t r u c t i o n l i b r a r y
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c W a l l T y p e "
And t h e v a r i a b l e " e l e m e n t _ t y p e " i s " [ e f o r e i n { i f c } . b y _ t y p e ( ' I f c W a l l T y p e ' ) i f e . N a m e = = ' W A L 1 0 0 ' ] [ 0 ] . i d ( ) "
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { e l e m e n t _ t y p e } "
2025-03-12 23:04:41 +11:00
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-02-22 20:38:02 +11:00
And t h e o b j e c t " I f c W a l l / W a l l " i s s e l e c t e d
When I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ F ' ) "
Then t h e o b j e c t " I f c W a l l / W a l l " d i m e n s i o n s a r e " 1 , 0 . 1 , 3 "
2025-03-12 23:04:41 +11:00
And t h e o b j e c t " I f c W a l l / W a l l " b o t t o m l e f t c o r n e r i s a t " 0 , 0 , 0 "
And t h e o b j e c t " I f c W a l l / W a l l " t o p r i g h t c o r n e r i s a t " 1 , 0 . 1 , 3 "
2023-02-22 20:38:02 +11:00
Scenario : Split a wall
Given a n e m p t y I F C p r o j e c t
And I l o a d t h e d e m o c o n s t r u c t i o n l i b r a r y
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c W a l l T y p e "
And t h e v a r i a b l e " e l e m e n t _ t y p e " i s " [ e f o r e i n { i f c } . b y _ t y p e ( ' I f c W a l l T y p e ' ) i f e . N a m e = = ' W A L 1 0 0 ' ] [ 0 ] . i d ( ) "
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { e l e m e n t _ t y p e } "
2025-03-12 23:04:41 +11:00
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-02-22 20:38:02 +11:00
And t h e o b j e c t " I f c W a l l / W a l l " i s s e l e c t e d
And t h e c u r s o r i s a t " 0 . 5 , 0 , 0 "
When I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ K ' ) "
Then t h e o b j e c t " I f c W a l l / W a l l " i s a n " I f c W a l l "
And t h e o b j e c t " I f c W a l l / W a l l . 0 0 1 " i s a n " I f c W a l l "
And t h e o b j e c t " I f c W a l l / W a l l " d i m e n s i o n s a r e " 0 . 5 , 0 . 1 , 3 "
And t h e o b j e c t " I f c W a l l / W a l l " b o t t o m l e f t c o r n e r i s a t " 0 , 0 , 0 "
And t h e o b j e c t " I f c W a l l / W a l l " t o p r i g h t c o r n e r i s a t " 0 . 5 , 0 . 1 , 3 "
And t h e o b j e c t " I f c W a l l / W a l l . 0 0 1 " d i m e n s i o n s a r e " 0 . 5 , 0 . 1 , 3 "
And t h e o b j e c t " I f c W a l l / W a l l . 0 0 1 " b o t t o m l e f t c o r n e r i s a t " 0 . 5 , 0 , 0 "
And t h e o b j e c t " I f c W a l l / W a l l . 0 0 1 " t o p r i g h t c o r n e r i s a t " 1 , 0 . 1 , 3 "
Scenario : Rotate a wall by 90 degrees
Given a n e m p t y I F C p r o j e c t
And I l o a d t h e d e m o c o n s t r u c t i o n l i b r a r y
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c W a l l T y p e "
And t h e v a r i a b l e " e l e m e n t _ t y p e " i s " [ e f o r e i n { i f c } . b y _ t y p e ( ' I f c W a l l T y p e ' ) i f e . N a m e = = ' W A L 1 0 0 ' ] [ 0 ] . i d ( ) "
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { e l e m e n t _ t y p e } "
2025-03-12 23:04:41 +11:00
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-02-22 20:38:02 +11:00
And t h e o b j e c t " I f c W a l l / W a l l " i s s e l e c t e d
When I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ R ' ) "
Then t h e o b j e c t " I f c W a l l / W a l l " d i m e n s i o n s a r e " 1 , 0 . 1 , 3 "
And t h e o b j e c t " I f c W a l l / W a l l " b o t t o m l e f t c o r n e r i s a t " 0 , 0 , 0 "
And t h e o b j e c t " I f c W a l l / W a l l " t o p r i g h t c o r n e r i s a t " - 0 . 1 , 1 , 3 "
Scenario : Regenerate a wall - after doing nothing interesting
Given a n e m p t y I F C p r o j e c t
And I l o a d t h e d e m o c o n s t r u c t i o n l i b r a r y
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c W a l l T y p e "
And t h e v a r i a b l e " e l e m e n t _ t y p e " i s " [ e f o r e i n { i f c } . b y _ t y p e ( ' I f c W a l l T y p e ' ) i f e . N a m e = = ' W A L 1 0 0 ' ] [ 0 ] . i d ( ) "
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { e l e m e n t _ t y p e } "
2025-03-12 23:04:41 +11:00
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-02-22 20:38:02 +11:00
And t h e o b j e c t " I f c W a l l / W a l l " i s s e l e c t e d
When I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ G ' ) "
Then t h e o b j e c t " I f c W a l l / W a l l " i s a n " I f c W a l l "
And t h e o b j e c t " I f c W a l l / W a l l " d i m e n s i o n s a r e " 1 , 0 . 1 , 3 "
And t h e o b j e c t " I f c W a l l / W a l l " b o t t o m l e f t c o r n e r i s a t " 0 , 0 , 0 "
2023-02-22 21:50:12 +11:00
2025-04-17 16:28:05 +10:00
Scenario : Insert door into wall
Given a n e m p t y I F C p r o j e c t
And I l o a d t h e d e m o c o n s t r u c t i o n l i b r a r y
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c W a l l T y p e "
And t h e v a r i a b l e " e l e m e n t _ t y p e " i s " [ e f o r e i n { i f c } . b y _ t y p e ( ' I f c W a l l T y p e ' ) i f e . N a m e = = ' W A L 1 0 0 ' ] [ 0 ] . i d ( ) "
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { e l e m e n t _ t y p e } "
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
And t h e o b j e c t " I f c W a l l / W a l l " i s s e l e c t e d
And t h e c u r s o r i s a t " 1 0 , 0 , 0 "
# Extend the wall
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ E ' ) "
When I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c D o o r T y p e "
And t h e v a r i a b l e " e l e m e n t _ t y p e " i s " [ e f o r e i n { i f c } . b y _ t y p e ( ' I f c D o o r T y p e ' ) i f e . N a m e = = ' D T 0 1 ' ] [ 0 ] . i d ( ) "
And t h e c u r s o r i s a t " 7 , 0 , 0 "
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
Then t h e o b j e c t " I f c D o o r / D o o r " i s a t " 7 , 0 , 0 "
And t h e o b j e c t " I f c W a l l / W a l l " i s f i l l e d b y " I f c D o o r / D o o r "
Scenario : Flip a door inserted in a wall
Given a n e m p t y I F C p r o j e c t
And I l o a d t h e d e m o c o n s t r u c t i o n l i b r a r y
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c W a l l T y p e "
And t h e v a r i a b l e " e l e m e n t _ t y p e " i s " [ e f o r e i n { i f c } . b y _ t y p e ( ' I f c W a l l T y p e ' ) i f e . N a m e = = ' W A L 1 0 0 ' ] [ 0 ] . i d ( ) "
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { e l e m e n t _ t y p e } "
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
And t h e o b j e c t " I f c W a l l / W a l l " i s s e l e c t e d
And t h e c u r s o r i s a t " 1 0 , 0 , 0 "
# Extend the wall
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ E ' ) "
# Insert a door
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c D o o r T y p e "
And t h e v a r i a b l e " e l e m e n t _ t y p e " i s " [ e f o r e i n { i f c } . b y _ t y p e ( ' I f c D o o r T y p e ' ) i f e . N a m e = = ' D T 0 1 ' ] [ 0 ] . i d ( ) "
And t h e c u r s o r i s a t " 7 , 0 , 0 "
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
When t h e o b j e c t " I f c D o o r / D o o r " i s s e l e c t e d
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ F ' ) "
Then t h e o b j e c t " I f c D o o r / D o o r " i s a t " 8 . 0 1 , 0 . 1 , 0 "
Scenario : Split a wall which has a flipped door
Given a n e m p t y I F C p r o j e c t
And I l o a d t h e d e m o c o n s t r u c t i o n l i b r a r y
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c W a l l T y p e "
And t h e v a r i a b l e " e l e m e n t _ t y p e " i s " [ e f o r e i n { i f c } . b y _ t y p e ( ' I f c W a l l T y p e ' ) i f e . N a m e = = ' W A L 1 0 0 ' ] [ 0 ] . i d ( ) "
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { e l e m e n t _ t y p e } "
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
And t h e o b j e c t " I f c W a l l / W a l l " i s s e l e c t e d
And t h e c u r s o r i s a t " 1 0 , 0 , 0 "
# Extend the wall
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ E ' ) "
# Insert a door
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c D o o r T y p e "
And t h e v a r i a b l e " e l e m e n t _ t y p e " i s " [ e f o r e i n { i f c } . b y _ t y p e ( ' I f c D o o r T y p e ' ) i f e . N a m e = = ' D T 0 1 ' ] [ 0 ] . i d ( ) "
And t h e c u r s o r i s a t " 7 , 0 , 0 "
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
# Flip the door
And t h e o b j e c t " I f c D o o r / D o o r " i s s e l e c t e d
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ F ' ) "
When t h e c u r s o r i s a t " 5 , 0 , 0 "
And t h e o b j e c t " I f c W a l l / W a l l " i s s e l e c t e d
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ K ' ) "
Then t h e o b j e c t " I f c D o o r / D o o r " i s a t " 8 . 0 1 , 0 . 1 , 0 "
2025-04-21 17:17:09 +10:00
Scenario : Offset walls
2025-04-21 15:38:26 +10:00
Given a n e m p t y I F C p r o j e c t
And I l o a d t h e d e m o c o n s t r u c t i o n l i b r a r y
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c W a l l T y p e "
And t h e v a r i a b l e " e l e m e n t _ t y p e " i s " [ e f o r e i n { i f c } . b y _ t y p e ( ' I f c W a l l T y p e ' ) i f e . N a m e = = ' W A L 1 0 0 ' ] [ 0 ] . i d ( ) "
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { e l e m e n t _ t y p e } "
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2025-04-21 17:17:09 +10:00
When t h e o b j e c t " I f c W a l l / W a l l " i s s e l e c t e d
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . o f f s e t _ t y p e _ v e r t i c a l " t o " E X T E R I O R "
And I p r e s s " b i m . o f f s e t _ w a l l s "
2025-04-21 15:38:26 +10:00
Then t h e o b j e c t " I f c W a l l / W a l l " b o t t o m l e f t c o r n e r i s a t " 0 , 0 , 0 "
And t h e o b j e c t " I f c W a l l / W a l l " t o p r i g h t c o r n e r i s a t " 1 , 0 . 1 , 3 "
2025-04-21 17:17:09 +10:00
When I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . o f f s e t _ t y p e _ v e r t i c a l " t o " I N T E R I O R "
And I p r e s s " b i m . o f f s e t _ w a l l s "
Then t h e o b j e c t " I f c W a l l / W a l l " b o t t o m l e f t c o r n e r i s a t " 0 , - 0 . 1 , 0 "
And t h e o b j e c t " I f c W a l l / W a l l " t o p r i g h t c o r n e r i s a t " 1 , 0 , 3 "
When I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . o f f s e t _ t y p e _ v e r t i c a l " t o " C E N T E R "
And I p r e s s " b i m . o f f s e t _ w a l l s "
Then t h e o b j e c t " I f c W a l l / W a l l " b o t t o m l e f t c o r n e r i s a t " 0 , - 0 . 0 5 , 0 "
And t h e o b j e c t " I f c W a l l / W a l l " t o p r i g h t c o r n e r i s a t " 1 , 0 . 0 5 , 3 "
2025-04-21 15:38:26 +10:00
2025-04-21 17:17:09 +10:00
Scenario : Align walls
2025-04-21 15:38:26 +10:00
Given a n e m p t y I F C p r o j e c t
And I l o a d t h e d e m o c o n s t r u c t i o n l i b r a r y
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c W a l l T y p e "
And t h e v a r i a b l e " e l e m e n t _ t y p e " i s " [ e f o r e i n { i f c } . b y _ t y p e ( ' I f c W a l l T y p e ' ) i f e . N a m e = = ' W A L 1 0 0 ' ] [ 0 ] . i d ( ) "
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { e l e m e n t _ t y p e } "
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
And t h e v a r i a b l e " e l e m e n t _ t y p e " i s " [ e f o r e i n { i f c } . b y _ t y p e ( ' I f c W a l l T y p e ' ) i f e . N a m e = = ' W A L 3 0 0 ' ] [ 0 ] . i d ( ) "
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { e l e m e n t _ t y p e } "
And t h e c u r s o r i s a t " 1 0 , 5 , 0 "
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
When t h e o b j e c t " I f c W a l l / W a l l . 0 0 1 " i s s e l e c t e d
And a d d i t i o n a l l y t h e o b j e c t " I f c W a l l / W a l l " i s s e l e c t e d
2025-04-21 17:17:09 +10:00
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ C ' ) "
Then t h e o b j e c t " I f c W a l l / W a l l " b o t t o m l e f t c o r n e r i s a t " 0 , 0 , 0 "
And t h e o b j e c t " I f c W a l l / W a l l " t o p r i g h t c o r n e r i s a t " 1 , 0 . 1 , 3 "
And t h e o b j e c t " I f c W a l l / W a l l . 0 0 1 " b o t t o m l e f t c o r n e r i s a t " 1 0 , - 0 . 1 , 0 "
And t h e o b j e c t " I f c W a l l / W a l l . 0 0 1 " t o p r i g h t c o r n e r i s a t " 1 1 , 0 . 2 , 3 "
When I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ V ' ) "
2025-04-21 15:38:26 +10:00
Then t h e o b j e c t " I f c W a l l / W a l l " b o t t o m l e f t c o r n e r i s a t " 0 , 0 , 0 "
And t h e o b j e c t " I f c W a l l / W a l l " t o p r i g h t c o r n e r i s a t " 1 , 0 . 1 , 3 "
And t h e o b j e c t " I f c W a l l / W a l l . 0 0 1 " b o t t o m l e f t c o r n e r i s a t " 1 0 , - 0 . 2 , 0 "
And t h e o b j e c t " I f c W a l l / W a l l . 0 0 1 " t o p r i g h t c o r n e r i s a t " 1 1 , 0 . 1 , 3 "
2025-04-21 17:17:09 +10:00
When I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ X ' ) "
2025-04-21 15:38:26 +10:00
Then t h e o b j e c t " I f c W a l l / W a l l " b o t t o m l e f t c o r n e r i s a t " 0 , 0 , 0 "
And t h e o b j e c t " I f c W a l l / W a l l " t o p r i g h t c o r n e r i s a t " 1 , 0 . 1 , 3 "
And t h e o b j e c t " I f c W a l l / W a l l . 0 0 1 " b o t t o m l e f t c o r n e r i s a t " 1 0 , 0 , 0 "
And t h e o b j e c t " I f c W a l l / W a l l . 0 0 1 " t o p r i g h t c o r n e r i s a t " 1 1 , 0 . 3 , 3 "
2025-04-21 17:17:09 +10:00
Scenario : Align walls - centerline fail due to selection criteria
2025-04-21 15:38:26 +10:00
Given a n e m p t y I F C p r o j e c t
And I l o a d t h e d e m o c o n s t r u c t i o n l i b r a r y
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c W a l l T y p e "
And t h e v a r i a b l e " e l e m e n t _ t y p e " i s " [ e f o r e i n { i f c } . b y _ t y p e ( ' I f c W a l l T y p e ' ) i f e . N a m e = = ' W A L 1 0 0 ' ] [ 0 ] . i d ( ) "
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { e l e m e n t _ t y p e } "
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
When t h e o b j e c t " I f c W a l l / W a l l " i s s e l e c t e d
Then I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ C ' ) " a n d e x p e c t e r r o r " E r r o r : A t l e a s t t w o v e r t i c a l l y l a y e r e d e l e m e n t s m u s t b e s e l e c t e d t o m a t c h a l i g n m e n t s . "
2025-04-21 17:17:09 +10:00
Scenario : Align elements
2025-04-21 15:38:26 +10:00
Given a n e m p t y I F C p r o j e c t
And I l o a d t h e d e m o c o n s t r u c t i o n l i b r a r y
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c D o o r T y p e "
And t h e v a r i a b l e " e l e m e n t _ t y p e " i s " [ e f o r e i n { i f c } . b y _ t y p e ( ' I f c D o o r T y p e ' ) i f e . N a m e = = ' D T 0 1 ' ] [ 0 ] . i d ( ) "
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { e l e m e n t _ t y p e } "
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
And t h e c u r s o r i s a t " 1 0 , 5 , 0 "
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
And t h e o b j e c t " I f c D o o r / D o o r . 0 0 1 " i s r o t a t e d b y " 0 , 0 , 9 0 " d e g
When t h e o b j e c t " I f c D o o r / D o o r . 0 0 1 " i s s e l e c t e d
And a d d i t i o n a l l y t h e o b j e c t " I f c D o o r / D o o r " i s s e l e c t e d
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ C ' ) "
Then t h e o b j e c t " I f c D o o r / D o o r " b o t t o m l e f t c o r n e r i s a t " 0 , 0 , 0 "
And t h e o b j e c t " I f c D o o r / D o o r " t o p r i g h t c o r n e r i s a t " 1 . 0 1 , 0 . 1 , 2 . 1 4 5 "
And t h e o b j e c t " I f c D o o r / D o o r . 0 0 1 " b o t t o m l e f t c o r n e r i s a t " 1 0 , - 0 . 4 5 5 , 0 "
And t h e o b j e c t " I f c D o o r / D o o r . 0 0 1 " t o p r i g h t c o r n e r i s a t " 9 . 9 , 0 . 5 5 5 , 2 . 1 4 5 "
2025-04-21 17:17:09 +10:00
When I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ V ' ) "
2025-04-21 15:38:26 +10:00
Then t h e o b j e c t " I f c D o o r / D o o r " b o t t o m l e f t c o r n e r i s a t " 0 , 0 , 0 "
And t h e o b j e c t " I f c D o o r / D o o r " t o p r i g h t c o r n e r i s a t " 1 . 0 1 , 0 . 1 , 2 . 1 4 5 "
And t h e o b j e c t " I f c D o o r / D o o r . 0 0 1 " b o t t o m l e f t c o r n e r i s a t " 1 0 , - 0 . 9 1 0 , 0 "
And t h e o b j e c t " I f c D o o r / D o o r . 0 0 1 " t o p r i g h t c o r n e r i s a t " 9 . 9 , 0 . 1 , 2 . 1 4 5 "
2025-04-21 17:17:09 +10:00
When I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ X ' ) "
2025-04-21 15:38:26 +10:00
Then t h e o b j e c t " I f c D o o r / D o o r " b o t t o m l e f t c o r n e r i s a t " 0 , 0 , 0 "
And t h e o b j e c t " I f c D o o r / D o o r " t o p r i g h t c o r n e r i s a t " 1 . 0 1 , 0 . 1 , 2 . 1 4 5 "
And t h e o b j e c t " I f c D o o r / D o o r . 0 0 1 " b o t t o m l e f t c o r n e r i s a t " 1 0 , 0 , 0 "
And t h e o b j e c t " I f c D o o r / D o o r . 0 0 1 " t o p r i g h t c o r n e r i s a t " 9 . 9 , 1 . 0 1 , 2 . 1 4 5 "
Scenario : Align elements - fail due to selection criteria
Given a n e m p t y I F C p r o j e c t
And I l o a d t h e d e m o c o n s t r u c t i o n l i b r a r y
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c D o o r T y p e "
And t h e v a r i a b l e " e l e m e n t _ t y p e " i s " [ e f o r e i n { i f c } . b y _ t y p e ( ' I f c D o o r T y p e ' ) i f e . N a m e = = ' D T 0 1 ' ] [ 0 ] . i d ( ) "
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { e l e m e n t _ t y p e } "
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
When t h e o b j e c t " I f c D o o r / D o o r " i s s e l e c t e d
Then I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ C ' ) " a n d e x p e c t e r r o r " E r r o r : A t l e a s t t w o o b j e c t s m u s t b e s e l e c t e d t o m a t c h a l i g n m e n t s . "
2023-02-22 21:50:12 +11:00
Scenario : Add a slab
Given a n e m p t y I F C p r o j e c t
And I l o a d t h e d e m o c o n s t r u c t i o n l i b r a r y
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c S l a b T y p e "
2024-07-30 19:31:35 +05:00
And t h e v a r i a b l e " e l e m e n t _ t y p e " i s " [ e f o r e i n { i f c } . b y _ t y p e ( ' I f c S l a b T y p e ' ) i f e . N a m e = = ' F L R 2 0 0 ' ] [ 0 ] . i d ( ) "
2023-02-22 21:50:12 +11:00
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { e l e m e n t _ t y p e } "
2025-03-12 23:04:41 +11:00
When I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-02-22 21:50:12 +11:00
Then t h e o b j e c t " I f c S l a b / S l a b " i s a n " I f c S l a b "
And t h e o b j e c t " I f c S l a b / S l a b " d i m e n s i o n s a r e " 1 , 1 , 0 . 2 "
2025-03-12 23:04:41 +11:00
And t h e o b j e c t " I f c S l a b / S l a b " b o t t o m l e f t c o r n e r i s a t " 0 , 0 , 0 "
And t h e o b j e c t " I f c S l a b / S l a b " t o p r i g h t c o r n e r i s a t " 1 , 1 , 0 . 2 "
2023-02-22 21:50:12 +11:00
Scenario : Enable editing a slab profile
Given a n e m p t y I F C p r o j e c t
And I l o a d t h e d e m o c o n s t r u c t i o n l i b r a r y
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c S l a b T y p e "
2024-07-30 19:31:35 +05:00
And t h e v a r i a b l e " e l e m e n t _ t y p e " i s " [ e f o r e i n { i f c } . b y _ t y p e ( ' I f c S l a b T y p e ' ) i f e . N a m e = = ' F L R 2 0 0 ' ] [ 0 ] . i d ( ) "
2023-02-22 21:50:12 +11:00
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { e l e m e n t _ t y p e } "
2025-03-12 23:04:41 +11:00
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-02-22 21:50:12 +11:00
And t h e o b j e c t " I f c S l a b / S l a b " i s s e l e c t e d
When I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ E ' ) "
Then t h e o b j e c t " I f c S l a b / S l a b " d i m e n s i o n s a r e " 1 , 1 , 0 "
2025-03-12 23:04:41 +11:00
And t h e o b j e c t " I f c S l a b / S l a b " b o t t o m l e f t c o r n e r i s a t " 0 , 0 , 0 "
And t h e o b j e c t " I f c S l a b / S l a b " t o p r i g h t c o r n e r i s a t " 1 , 1 , 0 "
2023-02-22 21:50:12 +11:00
Scenario : Disable editing a slab profile
Given a n e m p t y I F C p r o j e c t
And I l o a d t h e d e m o c o n s t r u c t i o n l i b r a r y
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c S l a b T y p e "
2024-07-30 19:31:35 +05:00
And t h e v a r i a b l e " e l e m e n t _ t y p e " i s " [ e f o r e i n { i f c } . b y _ t y p e ( ' I f c S l a b T y p e ' ) i f e . N a m e = = ' F L R 2 0 0 ' ] [ 0 ] . i d ( ) "
2023-02-22 21:50:12 +11:00
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { e l e m e n t _ t y p e } "
2025-03-12 23:04:41 +11:00
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-02-22 21:50:12 +11:00
And t h e o b j e c t " I f c S l a b / S l a b " i s s e l e c t e d
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ E ' ) "
When I p r e s s " b i m . d i s a b l e _ e d i t i n g _ e x t r u s i o n _ p r o f i l e "
Then t h e o b j e c t " I f c S l a b / S l a b " d i m e n s i o n s a r e " 1 , 1 , 0 . 2 "
2025-03-12 23:04:41 +11:00
And t h e o b j e c t " I f c S l a b / S l a b " b o t t o m l e f t c o r n e r i s a t " 0 , 0 , 0 "
And t h e o b j e c t " I f c S l a b / S l a b " t o p r i g h t c o r n e r i s a t " 1 , 1 , 0 . 2 "
2023-02-22 21:50:12 +11:00
Scenario : Edit a slab profile
Given a n e m p t y I F C p r o j e c t
And I l o a d t h e d e m o c o n s t r u c t i o n l i b r a r y
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c S l a b T y p e "
2024-07-30 19:31:35 +05:00
And t h e v a r i a b l e " e l e m e n t _ t y p e " i s " [ e f o r e i n { i f c } . b y _ t y p e ( ' I f c S l a b T y p e ' ) i f e . N a m e = = ' F L R 2 0 0 ' ] [ 0 ] . i d ( ) "
2023-02-22 21:50:12 +11:00
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { e l e m e n t _ t y p e } "
2025-03-12 23:04:41 +11:00
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-02-22 21:50:12 +11:00
And t h e o b j e c t " I f c S l a b / S l a b " i s s e l e c t e d
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ E ' ) "
When I p r e s s " b i m . e d i t _ e x t r u s i o n _ p r o f i l e "
Then t h e o b j e c t " I f c S l a b / S l a b " d i m e n s i o n s a r e " 1 , 1 , 0 . 2 "
2025-03-12 23:04:41 +11:00
And t h e o b j e c t " I f c S l a b / S l a b " b o t t o m l e f t c o r n e r i s a t " 0 , 0 , 0 "
And t h e o b j e c t " I f c S l a b / S l a b " t o p r i g h t c o r n e r i s a t " 1 , 1 , 0 . 2 "
2023-02-22 21:50:12 +11:00
Scenario : Add a beam
Given a n e m p t y I F C p r o j e c t
And I l o a d t h e d e m o c o n s t r u c t i o n l i b r a r y
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c B e a m T y p e "
And t h e v a r i a b l e " e l e m e n t _ t y p e " i s " [ e f o r e i n { i f c } . b y _ t y p e ( ' I f c B e a m T y p e ' ) i f e . N a m e = = ' B 1 ' ] [ 0 ] . i d ( ) "
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { e l e m e n t _ t y p e } "
2025-03-12 23:04:41 +11:00
When I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-02-22 21:50:12 +11:00
Then t h e o b j e c t " I f c B e a m / B e a m " i s a n " I f c B e a m "
And t h e o b j e c t " I f c B e a m / B e a m " d i m e n s i o n s a r e " 0 . 1 , 0 . 2 , 3 "
And t h e o b j e c t " I f c B e a m / B e a m " b o t t o m l e f t c o r n e r i s a t " 0 , - 0 . 0 5 , - 0 . 1 "
And t h e o b j e c t " I f c B e a m / B e a m " t o p r i g h t c o r n e r i s a t " 3 , 0 . 0 5 , 0 . 1 "
Scenario : Extend a beam to the cursor
Given a n e m p t y I F C p r o j e c t
And I l o a d t h e d e m o c o n s t r u c t i o n l i b r a r y
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c B e a m T y p e "
And t h e v a r i a b l e " e l e m e n t _ t y p e " i s " [ e f o r e i n { i f c } . b y _ t y p e ( ' I f c B e a m T y p e ' ) i f e . N a m e = = ' B 1 ' ] [ 0 ] . i d ( ) "
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { e l e m e n t _ t y p e } "
2025-03-12 23:04:41 +11:00
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-02-22 21:50:12 +11:00
And t h e o b j e c t " I f c B e a m / B e a m " i s s e l e c t e d
And t h e c u r s o r i s a t " 2 , 0 , 0 "
When I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ E ' ) "
Then t h e o b j e c t " I f c B e a m / B e a m " d i m e n s i o n s a r e " 0 . 1 , 0 . 2 , 2 "
And t h e o b j e c t " I f c B e a m / B e a m " b o t t o m l e f t c o r n e r i s a t " 0 , - 0 . 0 5 , - 0 . 1 "
Scenario : Extend one beam to another
Given a n e m p t y I F C p r o j e c t
And I l o a d t h e d e m o c o n s t r u c t i o n l i b r a r y
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c B e a m T y p e "
And t h e v a r i a b l e " e l e m e n t _ t y p e " i s " [ e f o r e i n { i f c } . b y _ t y p e ( ' I f c B e a m T y p e ' ) i f e . N a m e = = ' B 1 ' ] [ 0 ] . i d ( ) "
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { e l e m e n t _ t y p e } "
2025-03-12 23:04:41 +11:00
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-02-22 21:50:12 +11:00
And t h e c u r s o r i s a t " 1 , 1 , 0 "
2025-03-12 23:04:41 +11:00
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-02-22 21:50:12 +11:00
And t h e o b j e c t " I f c B e a m / B e a m . 0 0 1 " i s s e l e c t e d
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ R ' ) "
And t h e o b j e c t " I f c B e a m / B e a m . 0 0 1 " i s s e l e c t e d
And a d d i t i o n a l l y t h e o b j e c t " I f c B e a m / B e a m " i s s e l e c t e d
When I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ E ' ) "
Then t h e o b j e c t " I f c B e a m / B e a m " d i m e n s i o n s a r e " 0 . 1 , 0 . 2 , 3 "
And t h e o b j e c t " I f c B e a m / B e a m " b o t t o m l e f t c o r n e r i s a t " 0 , - 0 . 0 5 , - 0 . 1 "
And t h e o b j e c t " I f c B e a m / B e a m " t o p r i g h t c o r n e r i s a t " 3 , 0 . 0 5 , 0 . 1 "
And t h e o b j e c t " I f c B e a m / B e a m . 0 0 1 " d i m e n s i o n s a r e " 0 . 1 , 0 . 2 , 3 . 9 5 "
And t h e o b j e c t " I f c B e a m / B e a m . 0 0 1 " b o t t o m l e f t c o r n e r i s a t " 1 . 0 5 , 0 . 0 5 , - 0 . 1 "
And t h e o b j e c t " I f c B e a m / B e a m . 0 0 1 " t o p r i g h t c o r n e r i s a t " 0 . 9 5 , 4 , 0 . 1 "
Scenario : Join two beams with a butt joint - first beam has priority
Given a n e m p t y I F C p r o j e c t
And I l o a d t h e d e m o c o n s t r u c t i o n l i b r a r y
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c B e a m T y p e "
And t h e v a r i a b l e " e l e m e n t _ t y p e " i s " [ e f o r e i n { i f c } . b y _ t y p e ( ' I f c B e a m T y p e ' ) i f e . N a m e = = ' B 1 ' ] [ 0 ] . i d ( ) "
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { e l e m e n t _ t y p e } "
2025-03-12 23:04:41 +11:00
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-02-22 21:50:12 +11:00
And t h e c u r s o r i s a t " 1 , 1 , 0 "
2025-03-12 23:04:41 +11:00
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-02-22 21:50:12 +11:00
And t h e o b j e c t " I f c B e a m / B e a m . 0 0 1 " i s s e l e c t e d
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ R ' ) "
And t h e o b j e c t " I f c B e a m / B e a m . 0 0 1 " i s s e l e c t e d
And a d d i t i o n a l l y t h e o b j e c t " I f c B e a m / B e a m " i s s e l e c t e d
When I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ T ' ) "
Then t h e o b j e c t " I f c B e a m / B e a m " d i m e n s i o n s a r e " 0 . 1 , 0 . 2 , 1 . 9 5 "
And t h e o b j e c t " I f c B e a m / B e a m " b o t t o m l e f t c o r n e r i s a t " 1 . 0 5 , - 0 . 0 5 , - 0 . 1 "
And t h e o b j e c t " I f c B e a m / B e a m " t o p r i g h t c o r n e r i s a t " 3 , 0 . 0 5 , 0 . 1 "
And t h e o b j e c t " I f c B e a m / B e a m . 0 0 1 " d i m e n s i o n s a r e " 0 . 1 , 0 . 2 , 4 . 0 5 "
And t h e o b j e c t " I f c B e a m / B e a m . 0 0 1 " b o t t o m l e f t c o r n e r i s a t " 1 . 0 5 , - 0 . 0 5 , - 0 . 1 "
And t h e o b j e c t " I f c B e a m / B e a m . 0 0 1 " t o p r i g h t c o r n e r i s a t " 0 . 9 5 , 4 , 0 . 1 "
Scenario : Join two beams with a butt joint - second beam has priority
Given a n e m p t y I F C p r o j e c t
And I l o a d t h e d e m o c o n s t r u c t i o n l i b r a r y
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c B e a m T y p e "
And t h e v a r i a b l e " e l e m e n t _ t y p e " i s " [ e f o r e i n { i f c } . b y _ t y p e ( ' I f c B e a m T y p e ' ) i f e . N a m e = = ' B 1 ' ] [ 0 ] . i d ( ) "
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { e l e m e n t _ t y p e } "
2025-03-12 23:04:41 +11:00
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-02-22 21:50:12 +11:00
And t h e c u r s o r i s a t " 1 , 1 , 0 "
2025-03-12 23:04:41 +11:00
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-02-22 21:50:12 +11:00
And t h e o b j e c t " I f c B e a m / B e a m . 0 0 1 " i s s e l e c t e d
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ R ' ) "
And t h e o b j e c t " I f c B e a m / B e a m " i s s e l e c t e d
And a d d i t i o n a l l y t h e o b j e c t " I f c B e a m / B e a m . 0 0 1 " i s s e l e c t e d
When I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ T ' ) "
Then t h e o b j e c t " I f c B e a m / B e a m " d i m e n s i o n s a r e " 0 . 1 , 0 . 2 , 2 . 0 5 "
And t h e o b j e c t " I f c B e a m / B e a m " b o t t o m l e f t c o r n e r i s a t " 0 . 9 5 , - 0 . 0 5 , - 0 . 1 "
And t h e o b j e c t " I f c B e a m / B e a m " t o p r i g h t c o r n e r i s a t " 3 , 0 . 0 5 , 0 . 1 "
And t h e o b j e c t " I f c B e a m / B e a m . 0 0 1 " d i m e n s i o n s a r e " 0 . 1 , 0 . 2 , 3 . 9 5 "
And t h e o b j e c t " I f c B e a m / B e a m . 0 0 1 " b o t t o m l e f t c o r n e r i s a t " 1 . 0 5 , 0 . 0 5 , - 0 . 1 "
And t h e o b j e c t " I f c B e a m / B e a m . 0 0 1 " t o p r i g h t c o r n e r i s a t " 0 . 9 5 , 4 , 0 . 1 "
Scenario : Join two beams with a mitre joint
Given a n e m p t y I F C p r o j e c t
And I l o a d t h e d e m o c o n s t r u c t i o n l i b r a r y
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c B e a m T y p e "
And t h e v a r i a b l e " e l e m e n t _ t y p e " i s " [ e f o r e i n { i f c } . b y _ t y p e ( ' I f c B e a m T y p e ' ) i f e . N a m e = = ' B 1 ' ] [ 0 ] . i d ( ) "
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { e l e m e n t _ t y p e } "
2025-03-12 23:04:41 +11:00
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-02-22 21:50:12 +11:00
And t h e c u r s o r i s a t " 1 , 1 , 0 "
2025-03-12 23:04:41 +11:00
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-02-22 21:50:12 +11:00
And t h e o b j e c t " I f c B e a m / B e a m . 0 0 1 " i s s e l e c t e d
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ R ' ) "
And t h e o b j e c t " I f c B e a m / B e a m " i s s e l e c t e d
And a d d i t i o n a l l y t h e o b j e c t " I f c B e a m / B e a m . 0 0 1 " i s s e l e c t e d
When I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ Y ' ) "
Then t h e o b j e c t " I f c B e a m / B e a m " d i m e n s i o n s a r e " 0 . 1 , 0 . 2 , 2 . 0 5 "
And t h e o b j e c t " I f c B e a m / B e a m " b o t t o m l e f t c o r n e r i s a t " 0 . 9 5 , - 0 . 0 5 , - 0 . 1 "
And t h e o b j e c t " I f c B e a m / B e a m " t o p r i g h t c o r n e r i s a t " 3 , 0 . 0 5 , 0 . 1 "
And t h e o b j e c t " I f c B e a m / B e a m . 0 0 1 " d i m e n s i o n s a r e " 0 . 1 , 0 . 2 , 4 . 0 5 "
And t h e o b j e c t " I f c B e a m / B e a m . 0 0 1 " b o t t o m l e f t c o r n e r i s a t " 1 . 0 5 , - 0 . 0 5 , - 0 . 1 "
And t h e o b j e c t " I f c B e a m / B e a m . 0 0 1 " t o p r i g h t c o r n e r i s a t " 0 . 9 5 , 4 , 0 . 1 "
Scenario : Change the length of a beam
Given a n e m p t y I F C p r o j e c t
And I l o a d t h e d e m o c o n s t r u c t i o n l i b r a r y
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c B e a m T y p e "
And t h e v a r i a b l e " e l e m e n t _ t y p e " i s " [ e f o r e i n { i f c } . b y _ t y p e ( ' I f c B e a m T y p e ' ) i f e . N a m e = = ' B 1 ' ] [ 0 ] . i d ( ) "
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { e l e m e n t _ t y p e } "
2025-03-12 23:04:41 +11:00
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-02-22 21:50:12 +11:00
And t h e o b j e c t " I f c B e a m / B e a m " i s s e l e c t e d
2023-05-06 11:05:13 +10:00
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . e x t r u s i o n _ d e p t h " t o " 2 . 0 "
When I p r e s s " b i m . c h a n g e _ p r o f i l e _ d e p t h ( d e p t h = 2 . 0 ) "
2023-02-22 21:50:12 +11:00
Then t h e o b j e c t " I f c B e a m / B e a m " d i m e n s i o n s a r e " 0 . 1 , 0 . 2 , 2 "
Scenario : Rotate a beam by 90 degrees
Given a n e m p t y I F C p r o j e c t
And I l o a d t h e d e m o c o n s t r u c t i o n l i b r a r y
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c B e a m T y p e "
And t h e v a r i a b l e " e l e m e n t _ t y p e " i s " [ e f o r e i n { i f c } . b y _ t y p e ( ' I f c B e a m T y p e ' ) i f e . N a m e = = ' B 1 ' ] [ 0 ] . i d ( ) "
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { e l e m e n t _ t y p e } "
2025-03-12 23:04:41 +11:00
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-02-22 21:50:12 +11:00
And t h e o b j e c t " I f c B e a m / B e a m " i s s e l e c t e d
When I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ R ' ) "
Then t h e o b j e c t " I f c B e a m / B e a m " d i m e n s i o n s a r e " 0 . 1 , 0 . 2 , 3 "
And t h e o b j e c t " I f c B e a m / B e a m " b o t t o m l e f t c o r n e r i s a t " 0 . 0 5 , 0 , - 0 . 1 "
And t h e o b j e c t " I f c B e a m / B e a m " t o p r i g h t c o r n e r i s a t " - 0 . 0 5 , 3 , 0 . 1 "
Scenario : Regenerate a beam - after doing nothing interesting
Given a n e m p t y I F C p r o j e c t
And I l o a d t h e d e m o c o n s t r u c t i o n l i b r a r y
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c B e a m T y p e "
And t h e v a r i a b l e " e l e m e n t _ t y p e " i s " [ e f o r e i n { i f c } . b y _ t y p e ( ' I f c B e a m T y p e ' ) i f e . N a m e = = ' B 1 ' ] [ 0 ] . i d ( ) "
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { e l e m e n t _ t y p e } "
2025-03-12 23:04:41 +11:00
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-02-22 21:50:12 +11:00
And t h e o b j e c t " I f c B e a m / B e a m " i s s e l e c t e d
When I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ G ' ) "
Then t h e o b j e c t " I f c B e a m / B e a m " d i m e n s i o n s a r e " 0 . 1 , 0 . 2 , 3 "
And t h e o b j e c t " I f c B e a m / B e a m " b o t t o m l e f t c o r n e r i s a t " 0 , - 0 . 0 5 , - 0 . 1 "
And t h e o b j e c t " I f c B e a m / B e a m " t o p r i g h t c o r n e r i s a t " 3 , 0 . 0 5 , 0 . 1 "
2023-02-22 18:19:32 +05:00
Scenario : Undo test - create a wall and couple windows and undo the last window
Given a n e m p t y I F C p r o j e c t
And I l o a d t h e d e m o c o n s t r u c t i o n l i b r a r y
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c W a l l T y p e "
2025-03-12 23:04:41 +11:00
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-02-22 18:19:32 +05:00
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c W i n d o w T y p e "
2025-03-12 23:04:41 +11:00
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-02-22 18:19:32 +05:00
And I p r e p a r e t o u n d o
And t h e o b j e c t " I f c W a l l / W a l l " i s s e l e c t e d
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c W i n d o w T y p e "
2025-03-12 23:04:41 +11:00
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-02-22 18:19:32 +05:00
And I u n d o
Then n o t h i n g h a p p e n s
Scenario : Undo test - create a wall with window opening, flip it and undo
Given a n e m p t y I F C p r o j e c t
And I l o a d t h e d e m o c o n s t r u c t i o n l i b r a r y
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c W a l l T y p e "
2025-03-12 23:04:41 +11:00
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-02-22 18:19:32 +05:00
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c W i n d o w T y p e "
2025-03-12 23:04:41 +11:00
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-02-22 18:19:32 +05:00
And t h e o b j e c t " I f c W a l l / W a l l " i s s e l e c t e d
And I p r e p a r e t o u n d o
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ F ' ) "
And I u n d o
2023-02-23 18:38:20 +05:00
Then n o t h i n g h a p p e n s
2023-08-15 15:25:12 +05:00
Scenario : Create window type based on window modifier, add an occurrence of it and edit it
2023-02-23 18:38:20 +05:00
Given a n e m p t y I F C p r o j e c t
2025-03-12 23:04:41 +11:00
And I t r i g g e r " A d d E l e m e n t "
And I s e t t h e " C l a s s " p r o p e r t y t o " I f c W i n d o w T y p e "
And I s e t t h e " P r e d e f i n e d T y p e " p r o p e r t y t o " W I N D O W "
And I s e t t h e " R e p r e s e n t a t i o n " p r o p e r t y t o " W i n d o w "
When I c l i c k " O K "
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-02-23 18:38:20 +05:00
And I p r e s s " b i m . e n a b l e _ e d i t i n g _ w i n d o w ( ) "
And I p r e s s " b i m . f i n i s h _ e d i t i n g _ w i n d o w ( ) "
2023-03-06 18:36:29 +05:00
Then n o t h i n g h a p p e n s
2023-02-23 18:38:20 +05:00
2023-08-15 15:25:12 +05:00
Scenario : Create door type based on door modifier, add an occurrence of it and edit it
2023-02-23 18:38:20 +05:00
Given a n e m p t y I F C p r o j e c t
2025-03-12 23:04:41 +11:00
And I t r i g g e r " A d d E l e m e n t "
And I s e t t h e " C l a s s " p r o p e r t y t o " I f c D o o r T y p e "
And I s e t t h e " P r e d e f i n e d T y p e " p r o p e r t y t o " D O O R "
And I s e t t h e " R e p r e s e n t a t i o n " p r o p e r t y t o " D o o r "
When I c l i c k " O K "
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-02-23 18:38:20 +05:00
And I p r e s s " b i m . e n a b l e _ e d i t i n g _ d o o r ( ) "
2023-03-06 18:36:29 +05:00
And I p r e s s " b i m . f i n i s h _ e d i t i n g _ d o o r ( ) "
Then n o t h i n g h a p p e n s
Scenario : Create a door, undo and create a new door
Given a n e m p t y I F C p r o j e c t
And I p r e p a r e t o u n d o
And I p r e s s " m e s h . a d d _ d o o r ( ) "
And I u n d o
And I p r e s s " m e s h . a d d _ d o o r ( ) "
Then n o t h i n g h a p p e n s
2023-03-23 21:50:50 +11:00
And t h e o b j e c t " I f c D o o r / I f c D o o r " e x i s t s
2023-10-26 17:19:51 +05:00
Scenario : Create a MEP transition
Given a n e m p t y I F C p r o j e c t
And I c r e a t e d e f a u l t M E P t y p e s
2023-11-16 19:15:06 +05:00
And t h e v a r i a b l e " s e g m e n t _ t y p e s " i s " [ s t r ( e . i d ( ) ) f o r e i n { i f c } . b y _ t y p e ( ' I f c D u c t S e g m e n t T y p e ' ) ] "
2023-11-14 17:18:57 +05:00
2023-11-16 19:15:06 +05:00
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c D u c t S e g m e n t T y p e "
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { s e g m e n t _ t y p e s } [ 0 ] "
2025-03-10 08:23:50 +11:00
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-10-26 17:19:51 +05:00
And I r e n a m e t h e o b j e c t " I f c D u c t S e g m e n t / D u c t S e g m e n t " t o " I f c D u c t S e g m e n t / R e c t S e g m e n t "
2023-11-16 19:15:06 +05:00
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { s e g m e n t _ t y p e s } [ 1 ] "
2025-03-10 08:23:50 +11:00
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-10-26 17:19:51 +05:00
And I r e n a m e t h e o b j e c t " I f c D u c t S e g m e n t / D u c t S e g m e n t " t o " I f c D u c t S e g m e n t / C i r c l e S e g m e n t "
And t h e o b j e c t " I f c D u c t S e g m e n t / R e c t S e g m e n t " i s m o v e d t o " 0 , 0 , 0 "
And t h e o b j e c t " I f c D u c t S e g m e n t / C i r c l e S e g m e n t " i s m o v e d t o " 2 . 5 , 0 , 0 "
And t h e o b j e c t " I f c D u c t S e g m e n t / C i r c l e S e g m e n t " i s s e l e c t e d
And a d d i t i o n a l l y t h e o b j e c t " I f c D u c t S e g m e n t / R e c t S e g m e n t " i s s e l e c t e d
2023-11-14 17:18:57 +05:00
And I p r e s s " b i m . m e p _ a d d _ t r a n s i t i o n "
2023-10-26 17:19:51 +05:00
2023-11-14 17:18:57 +05:00
Then t h e o b j e c t " I f c D u c t F i t t i n g / D u c t F i t t i n g " e x i s t s
And t h e o b j e c t " I f c D u c t F i t t i n g T y p e / T r a n s i t i o n " e x i s t s
And t h e o b j e c t " I f c D u c t S e g m e n t / R e c t S e g m e n t " i s a t " 0 , 0 , 0 "
2023-10-26 17:19:51 +05:00
And t h e o b j e c t " I f c D u c t S e g m e n t / R e c t S e g m e n t " d i m e n s i o n s a r e " 0 . 4 , 0 . 2 , 2 . 3 7 0 0 9 6 "
And t h e o b j e c t " I f c D u c t S e g m e n t / C i r c l e S e g m e n t " i s a t " 3 . 1 2 9 9 , 0 , 0 "
And t h e o b j e c t " I f c D u c t S e g m e n t / C i r c l e S e g m e n t " d i m e n s i o n s a r e " 0 . 1 0 0 0 , 0 . 0 9 9 2 7 , 2 . 3 7 0 0 9 6 "
And t h e o b j e c t " I f c D u c t F i t t i n g / D u c t F i t t i n g " i s a t " 2 . 3 7 0 0 9 6 , 0 . 0 0 0 0 , 0 . 0 0 0 0 "
And t h e o b j e c t " I f c D u c t F i t t i n g / D u c t F i t t i n g " d i m e n s i o n s a r e " 0 . 4 0 0 0 , 0 . 2 0 0 0 , 0 . 7 5 9 8 0 7 "
2023-11-14 17:18:57 +05:00
Scenario : Create a MEP bend between intersecting with different locations
Given a n e m p t y I F C p r o j e c t
And I c r e a t e d e f a u l t M E P t y p e s
2023-11-16 19:15:06 +05:00
And t h e v a r i a b l e " s e g m e n t _ t y p e s " i s " [ s t r ( e . i d ( ) ) f o r e i n { i f c } . b y _ t y p e ( ' I f c D u c t S e g m e n t T y p e ' ) ] "
2023-11-14 17:18:57 +05:00
2023-11-16 19:15:06 +05:00
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c D u c t S e g m e n t T y p e "
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { s e g m e n t _ t y p e s } [ 0 ] "
2023-11-14 17:18:57 +05:00
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . e x t r u s i o n _ d e p t h " t o " 5 . 0 "
2025-03-10 08:23:50 +11:00
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-11-14 17:18:57 +05:00
And I r e n a m e t h e o b j e c t " I f c D u c t S e g m e n t / D u c t S e g m e n t " t o " I f c D u c t S e g m e n t / S e g 1 "
2023-11-16 19:15:06 +05:00
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { s e g m e n t _ t y p e s } [ 0 ] "
2025-03-10 08:23:50 +11:00
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-11-14 17:18:57 +05:00
And I r e n a m e t h e o b j e c t " I f c D u c t S e g m e n t / D u c t S e g m e n t " t o " I f c D u c t S e g m e n t / S e g 2 "
And t h e o b j e c t " I f c D u c t S e g m e n t / S e g 2 " i s r o t a t e d b y " 0 , 0 , 9 0 " d e g
And t h e o b j e c t " I f c D u c t S e g m e n t / S e g 2 " i s m o v e d t o " 6 , 1 , 1 "
And t h e o b j e c t " I f c D u c t S e g m e n t / S e g 1 " i s s e l e c t e d
And a d d i t i o n a l l y t h e o b j e c t " I f c D u c t S e g m e n t / S e g 2 " i s s e l e c t e d
And I p r e s s " b i m . m e p _ a d d _ b e n d "
Then t h e o b j e c t " I f c D u c t F i t t i n g / D u c t F i t t i n g " e x i s t s
And t h e o b j e c t " I f c D u c t F i t t i n g T y p e / B e n d " e x i s t s
And t h e o b j e c t " I f c D u c t S e g m e n t / S e g 1 " i s a t " 0 , 0 , 1 . 0 "
And t h e o b j e c t " I f c D u c t S e g m e n t / S e g 1 " d i m e n s i o n s a r e " 0 . 4 , 0 . 2 , 5 . 5 "
And t h e o b j e c t " I f c D u c t S e g m e n t / S e g 2 " i s a t " 6 . 0 , 0 . 5 , 1 . 0 "
And t h e o b j e c t " I f c D u c t S e g m e n t / S e g 2 " d i m e n s i o n s a r e " 0 . 4 , 0 . 2 , 5 . 5 "
And t h e o b j e c t " I f c D u c t F i t t i n g / D u c t F i t t i n g " i s a t " 6 . 0 , 0 . 5 , 1 . 0 "
And t h e o b j e c t " I f c D u c t F i t t i n g / D u c t F i t t i n g " d i m e n s i o n s a r e " 0 . 7 , 0 . 2 , 0 . 7 "
Scenario : Create a MEP bend between intersecting segments at the same location
Given a n e m p t y I F C p r o j e c t
And I c r e a t e d e f a u l t M E P t y p e s
2023-11-16 19:15:06 +05:00
And t h e v a r i a b l e " s e g m e n t _ t y p e s " i s " [ s t r ( e . i d ( ) ) f o r e i n { i f c } . b y _ t y p e ( ' I f c D u c t S e g m e n t T y p e ' ) ] "
2023-11-14 17:18:57 +05:00
2023-11-16 19:15:06 +05:00
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . i f c _ c l a s s " t o " I f c D u c t S e g m e n t T y p e "
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { s e g m e n t _ t y p e s } [ 0 ] "
2023-11-14 17:18:57 +05:00
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . e x t r u s i o n _ d e p t h " t o " 5 . 0 "
2025-03-10 08:23:50 +11:00
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-11-14 17:18:57 +05:00
And I r e n a m e t h e o b j e c t " I f c D u c t S e g m e n t / D u c t S e g m e n t " t o " I f c D u c t S e g m e n t / S e g 1 "
2023-11-16 19:15:06 +05:00
And I s e t " s c e n e . B I M M o d e l P r o p e r t i e s . r e l a t i n g _ t y p e _ i d " t o " { s e g m e n t _ t y p e s } [ 0 ] "
2025-03-10 08:23:50 +11:00
And I p r e s s " b i m . a d d _ o c c u r r e n c e "
2023-11-14 17:18:57 +05:00
And I r e n a m e t h e o b j e c t " I f c D u c t S e g m e n t / D u c t S e g m e n t " t o " I f c D u c t S e g m e n t / S e g 2 "
And t h e o b j e c t " I f c D u c t S e g m e n t / S e g 2 " i s r o t a t e d b y " 0 , 0 , 9 0 " d e g
And t h e o b j e c t " I f c D u c t S e g m e n t / S e g 1 " i s s e l e c t e d
And a d d i t i o n a l l y t h e o b j e c t " I f c D u c t S e g m e n t / S e g 2 " i s s e l e c t e d
And I p r e s s " b i m . m e p _ a d d _ b e n d "
Then t h e o b j e c t " I f c D u c t F i t t i n g / D u c t F i t t i n g " e x i s t s
And t h e o b j e c t " I f c D u c t F i t t i n g T y p e / B e n d " e x i s t s
And t h e o b j e c t " I f c D u c t S e g m e n t / S e g 1 " i s a t " 0 . 5 , 0 , 1 . 0 "
And t h e o b j e c t " I f c D u c t S e g m e n t / S e g 1 " d i m e n s i o n s a r e " 0 . 4 , 0 . 2 , 4 . 5 "
And t h e o b j e c t " I f c D u c t S e g m e n t / S e g 2 " i s a t " 0 . 0 , 0 . 5 , 1 . 0 "
And t h e o b j e c t " I f c D u c t S e g m e n t / S e g 2 " d i m e n s i o n s a r e " 0 . 4 , 0 . 2 , 4 . 5 "
And t h e o b j e c t " I f c D u c t F i t t i n g / D u c t F i t t i n g " i s a t " 0 . 0 , 0 . 5 , 1 . 0 "
And t h e o b j e c t " I f c D u c t F i t t i n g / D u c t F i t t i n g " d i m e n s i o n s a r e " 0 . 7 , 0 . 2 , 0 . 7 "