Sub Main()
'Toolchange
HomSigX = IsActive(2)
HomSigY = IsActive(5)
HomSigZ = IsActive(8)
Xreferd = GetLED(7)
Yreferd = GetLED(8)
Zreferd = GetLED(9)

If HomSigX Or HomSigY Or HomSigZ = True Then
        MsgBox("Home switch active...please deactivate before tool change.")
        Exit Sub
End If

If Xreferd Or Yreferd Or Zreferd = True Then
        MsgBox("Axis not referenced...please home and set tool first.")
        Exit Sub     
End If

LastFeed=GetOEMDRO(818)

SpindleState = GetOEMLED(11)
If SpindleState = True Then
Call DoOEMButton(110)
End If

SetUserLED(1001,False)
SoftState = GetOEMLED(815)
If SoftState = True Then
DoOEMButton (119)
SetUserLED(1001,1)
End If 

SetUserLED(1002,0)
WorkUnits = GetOEMLED(801)
If WorkUnits = True Then
code "G21"
SetUserLED(1002,1)
End If 
DoOEMButton(104)
While IsMoving()
Sleep 100
Wend

NewTool = GetCurrentTool()
CurrTool = GetOEMDRO(824)

If NewTool = CurrTool Then
MsgBox("Selected tool is already loaded.")
Exit Sub
End If

Select Case CurrTool
 Case 1
   	x = GetUserDRO(1220)
	y = GetUserDRO(1221)
	z = GetUserDRO(1222)
 Case 2
	x = GetUserDRO(1223)
	y = GetUserDRO(1224)
	z = GetUserDRO(1225)
 Case 3
 	x = GetUserDRO(1226)
	y = GetUserDRO(1227)
	z = GetUserDRO(1228)
 Case 4
	x = GetUserDRO(1229)
	y = GetUserDRO(1230)
	z = GetUserDRO(1231)
 Case 5
 	x = GetUserDRO(1232)
	y = GetUserDRO(1233)
	z = GetUserDRO(1234)
 Case 6
 	x = GetUserDRO(1235)
	y = GetUserDRO(1236)
	z = GetUserDRO(1237)
 Case 7
 	x = GetUserDRO(1238)
	y = GetUserDRO(1239)
	z = GetUserDRO(1240)
 Case 8
 	x = GetUserDRO(1241)
	y = GetUserDRO(1242)
	z = GetUserDRO(1243)
 Case 9
 	x = GetUserDRO(1244)
	y = GetUserDRO(1245)
	z = GetUserDRO(1246)
 Case 10
 	x = GetUserDRO(1247)
	y = GetUserDRO(1248)
	z = GetUserDRO(1249)
 Case Else
 	MsgBox("Tool not available. 1-10 only.")
 	Exit Sub
End Select 

pickupfeed = GetUserDRO(1251)

Call DoOEMButton(104)
code "G00" 
code "G53X" & x & "Y" & y
While IsMoving()
Wend
code "G01 F" & pickupfeed 
code "G53Z" & z
While IsMoving()
Wend
Call DoOEMButton(114)
code "G4 P1"
Call DoOEMButton(104)

Select Case NewTool
 Case 1
   	x = GetUserDRO(1220)
	y = GetUserDRO(1221)
	z = GetUserDRO(1222)
 Case 2
	x = GetUserDRO(1223)
	y = GetUserDRO(1224)
	z = GetUserDRO(1225)
 Case 3
 	x = GetUserDRO(1226)
	y = GetUserDRO(1227)
	z = GetUserDRO(1228)
 Case 4
	x = GetUserDRO(1229)
	y = GetUserDRO(1230)
	z = GetUserDRO(1231)
 Case 5
 	x = GetUserDRO(1232)
	y = GetUserDRO(1233)
	z = GetUserDRO(1234)
 Case 6
 	x = GetUserDRO(1235)
	y = GetUserDRO(1236)
	z = GetUserDRO(1237)
 Case 7
 	x = GetUserDRO(1238)
	y = GetUserDRO(1239)
	z = GetUserDRO(1240)
 Case 8
 	x = GetUserDRO(1241)
	y = GetUserDRO(1242)
	z = GetUserDRO(1243)
 Case 9
 	x = GetUserDRO(1244)
	y = GetUserDRO(1245)
	z = GetUserDRO(1246)
 Case 10
 	x = GetUserDRO(1247)
	y = GetUserDRO(1248)
	z = GetUserDRO(1249)
 Case Else
 	MsgBox("Tool not available. 1-10 only.")
 	Exit Sub
End Select 

code "G00" 
code "G53X" & x & "Y" & y
code "G53Z" & z + 20
While IsMoving()
Wend
code "G01 F" & pickupfeed
code "G53Z" & z
While IsMoving()
Wend
Call DoOEMButton(114)
code "G4 P1"
Call DoOEMButton(104)

xTSensPos = GetUserDRO(1200)                 
yTSensPos = GetUserDRO(1201)                
code "G00" 			               
code "G53X" & xTSensPos & "Y" & yTSensPos      
While IsMoving()
Sleep 100
Wend

SensGapPos = GetUserDRO(1203)
code "G00"
code "G53Z" & SensGapPos
While IsMoving()
Sleep 100
Wend

zTSensPos = GetUserDRO(1202)
SensSpeed = GetUserDRO(1204)
code "G31Z" & zTSensPos & "F" & SensSpeed
While IsMoving()
Sleep 100
Wend 

CurrFixture=GetOEMDRO(46)

Select Case CurrFixture
Case 2
     ProgXZero = GetUserDRO(1209)
     ProgYZero = GetUserDRO(1210)
     ZtoProbe = GetUserDRO(1212)
Case 3
     ProgXZero = GetUserDRO(1213)
     ProgYZero = GetUserDRO(1214)
     ZtoProbe = GetUserDRO(1216)
Case Else
     ProgXZero = GetUserDRO(1205)
     ProgYZero = GetUserDRO(1206)
     ZtoProbe = GetUserDRO(1208)
End Select

SetDRO(2,ZtoProbe)

code "G00"
DoOEMButton(104)
While IsMoving()
Sleep 100
Wend

code "G00"
code "G53Y" & ProgYZero & "G53X" & ProgXZero
While IsMoving()
Sleep 100
Wend  

If GetUserLED(1001)= 1 Then
DoOEMButton (119)
SetUserLED(1001,0)
End If 

If GetUserLED(1002)= 1 Then
code "G20"
SetUserLED(1002,0)
End If 

Tool=GetSelectedTool
SetCurrentTool(Tool)

SetOEMDRO(818,LastFeed)

SetOEMDRO(818,LastFeed)

End Sub  
        
   
 

