Hallo Volker,
hier ist der Code den ich benutze, lässt sich aber nicht 1 zu 1 umsetzen, da ich die eigentlichen 
Antastfunktionen (X/Y) wieder in externen Funktionen gekapselt habe, aber die Berechnung geht
daraus hervor. Ich benutze alledings 4 Punkte (2 an der X-Kante und 2 an der Y-Kante).
'Antasten Werkstück (gedreht)
Public Function TouchG()
	Message "Antasten schraeges Bauteil"
	'Parameter holen
	X = GetUserDro (1055) 'delta der X-Punkte
	Y = GetUserDro (1056) 'delta der Y-Punkte 
	CurrentToolDiameter = GetUserDro (1027)
	'Parameter prüfen
	If X = 0 Then
		MSGBox "Delta X zu klein!",vbOK + vbCritical ,"Fehler !"
		Exit function	
	End If
	If Y = 0 Then
		MSGBox "Delta Y zu klein!",vbOK + vbCritical ,"Fehler !"
		Exit function	
	End If
	
	'PI vorbesetzen -----------------------------------------------
	pi=4*Atn(1)
	'Koordinatendrehung ausschalten
	Code "G69"
	Sleep(200)
	
	'X / Y auf null setzen
    Call SetDro (0,0)
    Call SetDro (1,0)
	Sleep(200)
	'die Y Seite vermessen
	'P1 antasten
	Probe 100,0,0
	'Koordinaten P2
    X1 = GetVar(2000) 
    Y1=0 
	
	'Vorposition P2 anfahren
	Message("Vorposition P2 anfahren")
    Y2 = Y
    Code "G91 G1 X-" &X & "F1800"
	WaitForMove(True)
    Code "G91 G1 Y" &Y2
	WaitForMove(True)
	'P2 antasten
	Probe 100,0,0
	'Koordinaten P2
    X2 = GetVar(2000) 
    'die X Seite vermessen -----------------------------------------------
	'Vorposition P3 anfahren
	Message("Vorposition P3 anfahren")
	X3 = X1 + (CurrentToolDiameter/2) + 10
    Code "G91 G1 X-" &X & "F1800"
	WaitForMove(True)
    Code "G90 G1 Y-30"
	WaitForMove(True)
    Code "G90 G1 X" &X3 
	WaitForMove(True)
	'P3 antasten
	Probe 0,100,0
	'Koordinaten P3
    Y3 = GetVar(2001)  
	'Vorposition P4 anfahren
	Message("Vorposition P4 anfahren")
    X4 = X3 + X
    Code "G91 G1 Y-20 F1800"
	WaitForMove(True)
    Code "G90 G1 X" &X4
	WaitForMove(True)
	
	'P4 antasten
	Probe 0,100,0
	'Koordinaten P4
    Y4 = GetVar(2001) 'get the probe touch location
	'Z auffahren
	Code "G91 G01 Y-0.2 F1800"
	WaitForMove(True)
    Code "G91 G1 Z20"
	WaitForMove(True)
	
	'Brechnung
	t1= (X4-X3)*(Y1-Y3)-(Y4-Y3)*(X1-X3)
	b1= (Y4-Y3)*(X2-X1)-(X4-X3)*(Y2-Y1)
	ua=t1/b1
	'Nullpunkt berechnen
	XH=X1+ua*(X2-X1) ' X Home  distance away
	YH=Y1+ua*(Y2-Y1) ' Y Home  distance away
'	Message("Koordinaten Nullpunkt : X " &XH &" Y " &YH) 
'	Sleep(200)
	
	'Winkel aus der längeren Seite berechnen
	If X>Y Then
		'längere Seite=X
		a=(Y4-Y3)
		b=(X4-X3)
		v=a/b
		NewAngle=Atn(v)*(180/pi)
	Else
		'längere Seite=Y
		a=(X2-X1)
		b=(Y2-Y1)
		v=b/a
		NewAngle=Atn(v)*(180/pi)
		If NewAngle > 0 Then
			NewAngle=NewAngle-90
		Else
			NewAngle=NewAngle+90
		End If
	End If
'	Message("Neuer Winkel : " &NewAngle ) 
'	Sleep(200)
	'zum neuen Nullpunkt fahren
	'Winkel = errechneter Winkel + 45°
	siWi = 2*Pi/360*(NewAngle+45)
	hyWi = SQR((CurrentToolDiameter/2)*(CurrentToolDiameter/2)*2)
	Dx = hyWi * Cos(siWi)
	Dy = hyWi * Sin(siWi)
'	Message("Koordinaten Berechnung : X " &Dx &" Y " &Dy) 
'	Sleep(200)
	'Zu neuen Nullpunkt fahren
    Code "G90 G1 X" &XH+Dx & " Y" &YH+Dy 
	WaitForMove(True)
	
	'neuen Nullpunkt setzen
    Call SetDro (0,0)
    Call SetDro (1,0)
	'Koordinatendrehung setzen
    Call SetOemDro (118,NewAngle)
	
	'Koordinaten ausgeben
'	Message "X1 " &X1 &" Y1 " &Y1 & "   X2 " &X2 &" Y2 " &Y2 & "   X3 " &X3 &" Y3 " &Y3 & "   X4 " &X4 &" Y4 " &Y4 
	
	'wieder auf absolut stellen
	Code "G90"
	Message ""
	
End Function
wenn Du hier im Forum oder bei Google nach Touch Probe oder Edge Finder script suchst findest Du
etliche Beispiele.
Gruß Tom