DEFINE Fk_rechne_schnittpunkt LOCAL P LOCAL W LOCAL T LOCAL V1 INQ_SELECTED_ELEM C_LINES ALL { DISPLAY (INQ 14) } OPEN_OUTFILE 1 DEL_OLD 'c:\tmp\schnittpunktliste_1.m' LOOP EXIT_IF ((INQ 14) = 0) LET P (inq 101) LET W (inq 3) LET T (STR P + ' ' + STR W) WRITE_FILE 1 T INQ_NEXT_ELEM END_LOOP CLOSE_FILE 1 COPY_FILE 'c:\tmp\schnittpunktliste_1.m' DEL_OLD 'c:\tmp\schnittpunktliste_2.m' OPEN_INFILE 1 'c:\tmp\schnittpunktliste_1.m' LOOP READ_FILE 1 V1 EXIT_IF (V1 = 'END-OF-FILE') OPEN_INFILE 2 'c:\tmp\schnittpunktliste_2.m' LOOP READ_FILE 2 V2 EXIT_IF (V2 = 'END-OF-FILE') IF (V1 <> V2) LET P1 (VAL (SUBSTR V1 1 (POS V1 ' '))) LET W1 (VAL (SUBSTR V1 (POS V1 ' ') 4)) LET P2 (VAL (SUBSTR V2 1 (POS V2 ' '))) LET W2 (VAL (SUBSTR V2 (POS V2 ' ') 4)) Fk_rechne_schnittpunkt_ber P1 W1 P2 W2 END_IF END_LOOP END_LOOP CLOSE_FILE 1 CLOSE_FILE 2 END_DEFINE DEFINE Fk_rechne_schnittpunkt_ber PARAMETER P1 PARAMETER W1 PARAMETER P2 PARAMETER W2 { LOCAL P1 LOCAL P2 LOCAL W1 LOCAL W2 } LOCAL X1 LOCAL Y1 LOCAL X2 LOCAL Y2 LOCAL S1 LOCAL S2 LOCAL A1 LOCAL A2 LOCAL Xs LOCAL Ys LOCAL Pntxy { READ 'Punkt auf Gerade 1 angeben' P1 READ 'Winkel der Gerade 1 angeben' W1 READ 'Punkt auf Gerade 2 angeben' P2 READ 'Winkel der Gerade 2 angeben' W2 } LET S1 (TAN W1) LET S2 (TAN W2) IF (S1 <> S2) { duerfen nicht parallel sein } LET X1 (X_OF P1) LET Y1 (Y_OF P1) LET X2 (X_OF P2) LET Y2 (Y_OF P2) LET A1 (Y1 - (S1*X1)) LET A2 (Y2 - (S2*X2)) LET Xs ((A2 - A1)/(S1 - S2)) LET Ys (((S1*A2) - (S2*A1))/(S1 - S2)) LET Pntxy (PNT_XY Xs Ys) { DISPLAY (STR Pntxy) } INQ_ELEM Pntxy IF (INQ 403 <> POINT) POINT Pntxy END_IF END_IF END END_DEFINE