try this.
please test carefully, not tested.
y-axis must be in front of (-) part in a-axis, z-axis in height to probe.
Sub Main()
'get Diameter from user
Begin Dialog TextBoxSample 16,30,180,96,"enter digfilename"
OKButton 132,20,40,14
Text 8,8,132,8,"Diameter of part:"
TextBox 8,20,100,12,.TextBox1
End Dialog
Dim Dlg1 As TextBoxSample
Dialog Dlg1
diameter = CDbl(Dlg1.TextBox1)
If diameter <=1 Then
MsgBox "Diameter wrong !"
Exit Sub
End If
Call SetDRO(0,0)
Call SetDRO(1,0)
Call SetDRO(2,0)
Xpos = GetParam("XDRO")
Ypos = GetParam("YDRO")
Zpos = GetParam("ZDRO")
Fcurr = GetParam("FeedRate")
SP = 80 ' avanzamento prima palp impostare diametro mm del cerchio da palpare
VSP = "F200" ' velocita avanzamento prima palp
bkSP = 3 ' ritorno dopo palp mm
VbkSP = "F240" ' velocita ritorno
Spp = 5 ' avanzamento seconda palp mm
VSpp = "F40" ' velocita seconda palp
Code "G31 Y" & (GetParam("YDRO")+SP) & (VSP)
While IsMoving()
Wend
Code "G0 Y" & (GetParam("YDRO")-bkSP) & (VbkSP)
While IsMoving()
Wend
Code "G31 Y" & (GetParam("YDRO")+Spp) & VSpp
While IsMoving()
Wend
B=GetParam("YDRO")
Code "G0 Y" & (GetParam("YDRO")-bkSP) & (VbkSP)
While IsMoving()
Wend
'Z up
Code "G0 Z" & Zpos + (2*diameter)
While IsMoving()
Wend
'Y behind part
Code "G0 Y" & Ypos + (2*diameter)
While IsMoving()
Wend
'Z down
Code "G0 Z" & Zpos
While IsMoving()
Wend
Code "G31 Y" & (GetParam("YDRO")-SP) & (VSP)
While IsMoving()
Wend
Code "G0 Y" & (GetParam("YDRO")+bkSP) & (VbkSP)
While IsMoving()
Wend
Code "G31 Y" & (GetParam("YDRO")-Spp) & VSpp
While IsMoving()
Wend
A=GetParam("YDRO")
measuredY = B-A
Code "G0 Y" & (GetParam("YDRO")+bkSP) & (VbkSP)
While IsMoving()
Wend
'Z up
Code "G0 Z" & Zpos + (2*diameter)
While IsMoving()
Wend
Code "G0 Y" & (A+(B-A)/2)
SetParam("FeedRate",Fcurr)
MsgBox ("Measurement Y: " & nFmt(measuredY,3) & " mm")
End Sub