Sub Main()

' 2010 X Axis Pocket Probing Script
' 11/18/17 - Remove GetVar

Dim FRate1, FRate2
Dim DMax, Clearance, EdgeLength, CornerClear
Dim XStart, YStart
Dim PlateOffset, XOffset, YOffset
Dim ZeroYN
Dim ToolNo
Dim ToolD
Dim ProbeD
Dim ProbeLengthX, ProbeLengthY
Dim XNew, XHit1, Xhit2, XEdge, X1, X2
Dim YNew, YHit1, YHit2, YEdge, Y1, Y2

Dim XPos, YPos, EdgeAngle, PocketXLen, PocketYLen, EdgeDelta, XCenter, YCenter

Dim XScale, YScale, ZScale

Dim CurrentAbsInc

Dim CurrentFeed

FRate1 = abs(GetUserDRO(1821))
FRate2 = abs(GetUserDRO(1822))
DMax = abs(GetUserDRO(1823))
PlateOffset = GetUserDRO(1824)
ToolNo = GetCurrentTool()
ToolD = GetToolParam(ToolNo,1)
   If GetUserDRO(1829) = 0 then	
   	ProbeD = ToolD
	Else 
	ProbeD = GetUserDRO(1829)
   End If
Clearance = abs(GetUserDRO(1825))
XOffset = GetUserDRO(1826)
YOffset = GetUserDRO(1827)
EdgeLength = abs(GetUserDRO(1828))
ProbeLengthY = GetOEMDRO(801) + DMax
XStart = GetOEMDRO(800)
YStart = GetOEMDRO(801)

If GetOEMLED(801) Then  ' On = English Measure INCH

CornerClear = 1.5

Else ' Off = Metric Measure MM

CornerClear = 38

End If


If GetOEMLED(1871) Then
ZeroYN=1
Else
ZeroYN=0
End If

CurrentFeed = GetOemDRO(818)  ' Get the current feedrate to return to later

CurrentAbsInc = GetOemLED(48)   ' Get the current G90/G91 state

'Get Axis Scale factors
XScale = GetOEMDRO(59)
YScale = GetOEMDRO(60)
ZScale = GetOEMDRO(61)

'Set All Axis' Scale to 1
Call SetOEMDRO(59,1)
Call SetOEMDRO(60,1)
Call SetOEMDRO(61,1)
Sleep(250)



'Check for Errors

If GetOemLED(16)<>0 Then ' Check for Machine Coordinates
Message "Please change to working coordinates"
Call SetOEMDRO(59,XScale)
Call SetOEMDRO(60,YScale)
Call SetOEMDRO(61,ZScale)
Sleep(250)
Exit Sub ' Exit if in Machine Coordinates
End If

If GetOemLED(825)<>0 Then
Message "Probe Grounded - Check connection and try again"
Call SetOEMDRO(59,XScale)
Call SetOEMDRO(60,YScale)
Call SetOEMDRO(61,ZScale)
Sleep(250)
Exit Sub ' Exit if probe is tripped
End If


Code "G90"
Sleep(125)


	'X Probing
	'//////////////////////////////


	ProbeLengthX = XStart - DMax


	Message "Probing X Pocket....."
	Sleep(250)  'Pause 1/4 second
	Code "F" & FRate1
	Sleep(125)
	Code "G31 X" & ProbeLengthX
	While IsMoving()
	Wend
	XHit1 = GetOEMDRO(800)
	X1 = XHit1 - ProbeD/2 - XOffset 'Tool position at probe hit.


	If FRate2=0 Then
		Code "G0 X" & XStart
		While IsMoving()
		Wend
	Else
		Code "G0 X" & XHit1 + ProbeD/4
		While IsMoving()
		Wend
	End If
		

	If FRate2<>0 Then
		Code "F" & Frate2
		Sleep(150)
		Code "G31 X" & ProbeLengthX
		While IsMoving()
		Wend
		XHit1 = GetOEMDRO(800)
		X1 = XHit1 - ProbeD/2 - XOffset 'Tool position at probe hit.

		Code "G0 X" & XStart
		While IsMoving()
		Wend

	End If


	ProbeLengthX = XStart + DMax

	Code "F" & FRate1
	Sleep(125)
	Code "G31 X" & ProbeLengthX
	While IsMoving()
	Wend
	XHit2 = GetOEMDRO(800)
	X2 = XHit2 + ProbeD/2 + XOffset 'Tool position at probe hit.


	If FRate2=0 Then
		Code "G0 X" & XStart
		While IsMoving()
		Wend
	Else
		Code "G0 X" & XHit2 - ProbeD/4
		While IsMoving()
		Wend
	End If


	If FRate2<>0 Then

		Code "F" & Frate2
		Sleep(150)
		Code "G31 X" & ProbeLengthX
		While IsMoving()
		Wend
		XHit2 = GetOEMDRO(800)
		X2 = XHit2 + ProbeD/2 + XOffset 'Tool position at probe hit.



	End If

	XPos = (X1+X2)/2
	PocketXLen = Cstr(X2-X1)



	If ZeroYN = 1 then
		Code "G0 X" & XPos
		While IsMoving()
		Wend
		SetOEMDRO(800,0)
		Sleep(150)
	Else

		Code "G0 X" & XStart
		While IsMoving()
		Wend	

	End If

	XCenter = Cstr(XPos)

	PathLength = Len(XCenter)
	For X = 2 To PathLength Step 1
	lstring=Mid(XCenter,X,PathLength-X+1)

	If Left(lstring,1) = "." Then
		LabelLength = X+5
		Exit For
	End If

	Next X

	XCenter=Left(XCenter, LabelLength)




	PathLength = Len(PocketXLen)
	For X = 2 To PathLength Step 1
	lstring=Mid(PocketXLen,X,PathLength-X+1)

	If Left(lstring,1) = "." Then
		LabelLength = X+5
		Exit For
	End If

	Next X

	PocketXLen=Left(PocketXLen, LabelLength)

	Message "X Center Found.........."
	Sleep(150)









SetUserLabel (9,XCenter)
SetUserLabel (6,PocketXLen)


Code "F" & CurrentFeed ' Reset to original feed rate


If CurrentAbsInc = 0 Then 'if G91 was in effect before then return to it
Code "G91" 
End If 

Call SetOEMDRO(59,XScale)
Call SetOEMDRO(60,YScale)
Call SetOEMDRO(61,ZScale)
Sleep(250)

Message "X Axis Probing Complete"


If GetOemLED(1872) Then SetUserLED(1870,0)

End Sub

