Hallo,
hätte da was, habe ich vor drei Wochen gemacht.
x' = (x-u) cos(beta) - (y-v) sin(beta) + u
y' = (x-u) sin(beta) + (y-v) cos(beta) + v
Im Programm stellt sich das folgendermassen dar:
PROC CallStackJoint()
VAR num nVersatzD_R1;
VAR num nVersatzX_R1;
VAR num nVersatzY_R1;
VAR num nVersatzZ_R1;
!Erster Platz
IF diSPS_goPos_1 = high THEN
nJointPlatz:=0;
nVersatzX_R1:= ((nAbstand_R1)*(Cos(315)));
nVersatzY_R1:= ((nAbstand_R1)*(Sin(315)));
nVersatzD_R1:= nAbstand_R1;
!Zweiter Platz
ELSEIF diSPS_goPos_2 = high THEN
nJointPlatz:=1;
nVersatzX_R1:= ((nAbstand_R1)*(Cos(337.5)));
nVersatzY_R1:= ((nAbstand_R1)*(Sin(337.5)));
nVersatzD_R1:= nAbstand_R1;
!Dritter Platz
ELSEIF diSPS_goPos_3 = high THEN
nJointPlatz:=2;
nVersatzX_R1:= ((nAbstand_R1)*(Cos(0)));
nVersatzY_R1:= ((nAbstand_R1)*(Sin(0)));
nVersatzD_R1:= nAbstand_R1;
.
.
.
etc
TEST nJointPlatz
CASE 0,1,2,3,4,5,6,7,8,9,10,11:
wTeil_Bestück.oframe.trans:=[(nVersatzX_R1-nVersatzD_R1),nVersatzY_R1,nVersatzZ_R1];
ENDTEST
Ich hoffe das hilft weiter! Bei mir funtioniert es sehr gut.
Du nimmst ein Werkobjekt auf und hast ja vom Kreis den Mittelpunkt, sowie den Versatz in Winkelgrad von dem Punkt auf dem Kreis.
Hier im Programm wares es von Punkt zu Punkt 22,5 Grad.
MFG
CSH