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 } "
2022-07-27 08:24:50 +02:00
When I p r e s s " b i m . a d d _ c o n s t r _ t y p e _ i n s t a 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 } "
2022-07-27 08:24:50 +02:00
When I p r e s s " b i m . a d d _ c o n s t r _ t y p e _ i n s t a 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 } "
2022-07-27 08:24:50 +02:00
And I p r e s s " b i m . a d d _ c o n s t r _ t y p e _ i n s t a 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 ( ) "
2021-12-10 13:31:23 +11:00
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 . 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 "
2022-07-27 08:24:50 +02:00
When I p r e s s " b i m . a d d _ c o n s t r _ t y p e _ i n s t a 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
Scenario : Pie update container
Given a n e m p t y B l e n d e r s e s s i o n
And I p r e s s " b i m . l o a d _ p r o j e c t ( f i l e p a t h = ' { c w d } / t e s t / f i l e s / b a s i c . i f c ' ) "
Then t h e o b j e c t " I f c S l a b / S l a b " i s i n t h e c o l l e c t i o n " I f c B u i l d i n g S t o r e y / G r o u n d F l o o r "
When t h e o b j e c t " I f c S l a b / S l a b " i s p l a c e d i n t h e c o l l e c t i o n " I f c B u i l d i n g S t o r e y / L e v e l 1 "
And I p r e s s " b i m . p i e _ u p d a t e _ c o n t a i n e r "
Then n o t h i n g h a p p e n s
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 } "
When I p r e s s " b i m . a d d _ c o n s t r _ t y p e _ i n s t a n c e "
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 } "
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ A ' ) "
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 } "
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ A ' ) "
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 _ A ' ) "
Then 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 , 0 , 0 "
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 . 5 , 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 . 6 , - 1 , 3 "
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 } "
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ A ' ) "
And t h e c u r s o r i s a t " 0 . 5 , 0 , 0 "
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ A ' ) "
And t h e o b j e c t " I f c W a l l / W a l l " 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 " 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 . 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 _ E ' ) "
Then 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 , 0 , 0 "
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 " 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 . 5 , 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 . 6 , - 2 , 3 "
Scenario : Join two walls with a butt joint - first wall 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 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 . h o t k e y ( h o t k e y = ' S _ A ' ) "
And t h e c u r s o r i s a t " 0 . 5 , 0 , 0 "
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ A ' ) "
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 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 . 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 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 . 4 , 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 . 6 , 0 , 0 "
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 . 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 . 5 , 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 " 0 . 6 , - 1 , 3 "
Scenario : Join two walls with a butt joint - second wall 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 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 . h o t k e y ( h o t k e y = ' S _ A ' ) "
And t h e c u r s o r i s a t " 0 . 5 , 0 , 0 "
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ A ' ) "
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
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 . 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 " 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 . 5 , 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 . 6 , - 1 , 3 "
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 } "
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ A ' ) "
And t h e c u r s o r i s a t " 0 . 5 , 0 , 0 "
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ A ' ) "
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 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 . 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 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 " d i m e n s i o n s a r e " 1 . 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 . 5 , 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 " 0 . 6 , - 1 , 3 "
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 } "
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ A ' ) "
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 . e x t r u s i o n _ d e p t h " t o " 2 0 0 0 . 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 0 0 . 0 ) "
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 } "
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ A ' ) "
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 . l e n g t h " t o " 2 0 0 0 . 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 0 0 . 0 ) "
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 } "
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ A ' ) "
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 "
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 " 1 , 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 , - 0 . 1 , 3 "
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 } "
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ A ' ) "
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 } "
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ A ' ) "
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 } "
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ A ' ) "
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
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 "
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 1 5 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 } "
When I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ A ' ) "
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 "
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 . 2 "
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 "
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 "
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 1 5 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 . h o t k e y ( h o t k e y = ' S _ A ' ) "
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 "
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 . 2 "
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 "
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 "
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 1 5 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 . h o t k e y ( h o t k e y = ' S _ A ' ) "
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 "
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 . 2 "
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 "
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 "
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 1 5 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 . h o t k e y ( h o t k e y = ' S _ A ' ) "
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 "
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 . 2 "
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 "
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 } "
When I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ A ' ) "
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 } "
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ A ' ) "
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 } "
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ A ' ) "
And t h e c u r s o r i s a t " 1 , 1 , 0 "
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ A ' ) "
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 } "
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ A ' ) "
And t h e c u r s o r i s a t " 1 , 1 , 0 "
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ A ' ) "
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 } "
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ A ' ) "
And t h e c u r s o r i s a t " 1 , 1 , 0 "
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ A ' ) "
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 } "
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ A ' ) "
And t h e c u r s o r i s a t " 1 , 1 , 0 "
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ A ' ) "
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 } "
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ A ' ) "
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 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 0 0 . 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 0 0 . 0 ) "
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 } "
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ A ' ) "
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 } "
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ A ' ) "
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 "
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ A ' ) "
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 "
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ A ' ) "
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 "
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ A ' ) "
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 "
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ A ' ) "
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 "
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ A ' ) "
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
Scenario : Create window type based on window modifier, add an occurence of it and edit it
Given a n e m p t y I F C p r o j e c t
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 . t y p e _ c l a s s " t o " I f c W i n d o w 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 . t y p e _ p r e d e f i n e d _ t y p e " t o " W I N D O W "
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 . t y p e _ t e m p l a t e " t o " W I N D O W "
And I p r e s s " b i m . a d d _ t y p e ( ) "
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ A ' ) "
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 ( ) "
Scenario : Create door type based on door modifier, add an occurence of it and edit it
Given a n e m p t y I F C p r o j e c t
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 . t y p e _ c l a s s " t o " I f c D o o r 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 . t y p e _ p r e d e f i n e d _ t y p e " t o " D O O R "
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 . t y p e _ t e m p l a t e " t o " D O O R "
And I p r e s s " b i m . a d d _ t y p e ( ) "
And I p r e s s " b i m . h o t k e y ( h o t k e y = ' S _ A ' ) "
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 ( ) "
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 ( ) "