1161
German / Re: Bauteil ausrichten
« on: July 12, 2019, 03:17:53 PM »
hier noch mal ein Version der Funktion TouchG()
ACHTUNG Deltas und Durchmesser wieder entsprechend anpassen
ACHTUNG Deltas und Durchmesser wieder entsprechend anpassen
Code: [Select]
'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(False)
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(False)
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(False)
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(False)
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