# =================== OCAF ======================
# Naming
#
# Testing purpose: Naming selection mechanism 
#
# Test case: F7 (test special cases of type migration)
# 1.  Create 4 points: $Pnt1 - $Pnt4
# 2.  Create closed line $Lin2
# 3.  Create prism Pr ($Prism)
# 4.  Addbox $B1
# 5.  Translate box $B1 along XYZ
# 6.  $Com1 = Common ($Prism, $B1)
# 7.  Add cylinder $Cyl
# 8.  Translate cylinder $Cyl along XYZ
# 9.  Cut $Cut1 = Cut ($Prism, $Cyl)
# 10. Make  4 selections (Select edges 8,9, 11+, 11)
# 11. Modify $Pnt1
# 12. Recompute 
# ===============================================

erase 
Close D 

NewDocument D BinOcaf
isos 12

#1 - create 4 Pnts
NewCommand D
AddDriver D PntXYZ PntRLT Line3D Attach;
set Pnt1 [AddPoint D 0 0 0];		## add point1
ComputeFun D $Pnt1:1;			## compute function
GetShape D $Pnt1:1:2 P1;		## check result
whatis P1
# referes to result NS
GetReference D $Pnt1;			## check is reference set 

set Pnt2 [AddPoint D 0 200 0];
ComputeFun D $Pnt2:1;
set Pnt3 [AddPoint D 200 200 0];
ComputeFun D $Pnt3:1;
set Pnt4 [AddPoint D 200 0 0];
ComputeFun D $Pnt4:1;
GetShape D $Pnt2:1:2 P2;
GetShape D $Pnt3:1:2 P3;
GetShape D $Pnt4:1:2 P4;

#2 create closed Lin2
NewCommand D
set Lin2 [ AddLine3D D 1 $Pnt1 $Pnt2 $Pnt3 $Pnt4]
ComputeFun D $Lin2:1;
GetShape D $Lin2:1:2 L1;

#3 Prism 
NewCommand D
AddDriver D Prism Box PTxyz
set Prism [AddPrism D $Lin2 300 1]
ComputeFun D $Prism:1
GetShape D $Prism:1:2 Pr
GetReference D $Prism;			## check is reference set 

#4 Add Box
NewCommand D
set B1 [AddBox D 400 140 600];
ComputeFun D $B1:1;
GetShape D $B1:1:2 Box;

#5 Translate Box1
NewCommand D
set FTr1 [PTranslateDXYZ D $B1 -100 -20 -100]
ComputeFun D $FTr1
GetShape D $B1:2:2 Box

#6 add Common
NewCommand D
AddDriver D Comm Cut Fuse
set Com1 [AddCommon D $Prism $B1]
ComputeFun D $Com1
GetShape D $Com1:2 Pr

#7 Add Cylinder
NewCommand D
explode Pr E
AddDriver D Attach Cyl
set Sel1 [AttachShape D Pr_6 ${Prism} ${Prism} 0]; ## set attachment
set Cyl [AddCyl D 70 515 ${Sel1}]
ComputeFun D $Cyl:1
GetShape D $Cyl:1:2 CylS

#8 Translate Cylinder
NewCommand D
set FTr1 [PTranslateDXYZ D $Cyl -100 200 170]
ComputeFun D $FTr1
GetShape D $Cyl:2:2 CylS

#9 Cut 
NewCommand D
set Cut1 [AddCut D $Prism $Cyl]
ComputeFun D $Cut1
GetShape D $Cut1:2 Pr
don Pr

#10 Select edges 8,9, 11 (test special cases of type migration)
explode Pr E
erase Pr_1 Pr_2 Pr_3 Pr_4 Pr_5 Pr_6 Pr_7 Pr_8 Pr_9 Pr_10 Pr_11 Pr_12 Pr_13 Pr_14 Pr_15 Pr_16 Pr_17
display Pr_8 Pr_9
## ==> 8,9
NewCommand D
set Sel8 [AttachShape D Pr_8 ${Prism} ${Prism} 0]; ## should return Compound of two edges 
set Sel9 [AttachShape D Pr_9 ${Prism} ${Prism} 1]; ## should return Compound of two edges
set Sel11 [AttachShape D Pr_11 ${Prism} ${Prism} 1];
set Sel12 [AttachShape D Pr_11 ${Prism} ${Prism} 0];

#11 modify
PntOffset D $Pnt1  40 25 skip

#12 recompute
ComputeFun D $Pnt1:1
ComputeFun D $Lin2:1
ComputeFun D $Prism:1
ComputeFun D $Com1
ComputeFun D $Sel1:1                                    
ComputeFun D $Cyl:1
ComputeFun D $FTr1
ComputeFun D $Cut1
erase
GetShape D $Cut1:2 Pr

ComputeFun D $Sel8:1                                    
ComputeFun D $Sel9:1                                    
ComputeFun D $Sel11:1
ComputeFun D $Sel12:1
NewCommand D

