{**REM** Beschreibung: Wandelt eine Kontur aus Linien,Boegen oder Abrundungen in einen Spline um. Dieser mit einem waehlbaren, horizontalen Versatz. Anwendung nach Datenimport oder um versehentlich konvertierte Spines wiederherzustellen. Aenderung : - Untermakros: 'DEFINE Fk_geo2spline 'DEFINE Fk_geo2spl_kont_lvn 'DEFINE Fk_geo2spl_kont_lv **END_REM**} {2345678901234567890123456789012345678901234567890123456789012345678901234567890123} {********1*********2*********3*********4*********5*********6*********7*********8***} DEFINE Fk_geo2spline LOCAL Pfad LOCAL R0 LOCAL R1 LOCAL R2 LOCAL R3 LOCAL Q1 LOCAL Q2 LOCAL W1 LOCAL W2 LOCAL Wx LOCAL Wa LOCAL Wb LOCAL Ph LOCAL Dx LOCAL Dy LOCAL P1 LOCAL P2 LOCAL P3 LOCAL Mx LOCAL Mv LOCAL S2 LOCAL Ver LOCAL Les LOCAL Daem LOCAL Px LOCAL Py CS_REF_PT 0,0 LET Pfad '.\kontur_list_aus_fk_geo2spline.txt' OPEN_OUTFILE 2 DEL_OLD Pfad CATCH NO_VIEWPORT_RANGE 0.00025 SHOW VERTEX ON LET Daem 0 LET Mv 1 LET S2 '' LOOP READ NUMBER 'Daempfungsfaktor? Default 0. Je hoeher der Wert, desto steifer' DEFAULT 0 Daem READ PNT 'STARTPUNKT ANTIPPEN' P1 READ PNT '1.LINIE nach STARTPUNKT ANTIPPEN' P2 READ NUMBER 'Horizontalen Versatz als Zahl eingeben ' Ver INQ_ELEM P2 EXIT_IF (INQ 403 = LINE) EXIT_IF ((INQ 403 = LINE) OR (INQ 403 = ARC) OR (INQ 403 = FILLET)) BEEP DISPLAY 'NUR Geometrie-elemente zugelassen !' END_LOOP LET R2 P1 WRITE_FILE 2 R2 IF (INQ 403 = LINE) LET W1 0 LET W2 0 LET R1 (INQ 101) LET R2 (INQ 102) LET P3 R2 IF (P1=R2) LET R2 R1 LET R1 P3 END_IF ELSE LET W1 (INQ 4) {Anfangswinkel} LET W2 (INQ 5) {Endwinkel} LET R1 (INQ 102) {Anfangspunkt auf Umfang} LET R2 (INQ 103) {Endpunkt auf Umfang} LET P3 R2 IF (P1=R1) LET Wb (W2 - W1) END_IF IF (P1=R2) LET R2 R1 LET R1 P3 LET Wb (W1 - W2) END_IF LET Mx (INQ 101) {Mittelpunkt} LET R0 (INQ 3) {Radius} END_IF WRITE_FILE 2 R2 Fk_geo2spl_kont_lvn END_DEFINE {********1*********2*********3*********4*********5*********6*********7*********8***} DEFINE Fk_geo2spl_kont_lvn LOOP LET Re R2 LET Dx (X_OF R2 - X_OF R1) LET Dy (Y_OF R2 - Y_OF R1) IF (Dx<>0) LET Ph (ARCTAN (Dy/Dx)) END_IF IF (Dx=0) IF (Dy>0) LET Ph 90 END_IF IF (Dy<0) LET Ph 270 END_IF END_IF IF (Dx>=0) LET Wa (Ph+360) END_IF IF (Dx<0) IF (Dy<=0) LET Wa (Ph+180) END_IF IF (Dy>0) LET Wa (Ph+540) END_IF END_IF IF (INQ 403= LINE) LET P2 (R2+PNT_RA 0.0005 Wa) LET Wb 0 END_IF IF ((INQ 403= FILLET) OR (INQ 403= ARC)) LET Wx (R2 - Mx) {*****} LET P2 (ROT Wx (SGN (Wb)*0.03/R0)) LET P2 (P2+Mx) END_IF INQ_ELEM P2 IF (INQ 403= END) Fk_geo2spl_kont_lv END_IF IF (INQ 403= LINE) LET Q1 (INQ 101) LET Q2 (INQ 102) END_IF IF ((INQ 403= FILLET) OR (INQ 403= ARC)) LET Q1 (INQ 102) {Anfangspunkt auf Umfang} LET Q2 (INQ 103) {Endpunkt auf Umfang} LET W1 (INQ 4) {Anfangswinkel} LET W2 (INQ 5) {Endwinkel} LET Mx (INQ 101) {Mittelpunkt} LET R0 (INQ 3) {Radius} DISPLAY_NO_WAIT 'Berechne Zwischenpunkt auf Bogen' LET Px ((cos ((W1+W2)/2)) * R0) LET Py ((sin ((W1+W2)/2)) * R0) LET Px (Px + (X_OF Mx)) LET Py (Py + (Y_OF Mx)) LET R3 (PNT_XY Px Py) WRITE_FILE 2 R3 END_IF IF (LEN (Q2 - P2)6)) WRITE_FILE 2 R2 END_LOOP IF (R2=P1) WRITE_FILE 2 R2 END_IF SHOW VERTEX OFF REDRAW CLOSE_FILE 2 LET Ver (PNT_XY Ver 0) DISPLAY_NO_WAIT ('SPLINE WIRD MIT EINEM VERSATZ VON '+(STR Ver)+' ERSTELLT') WAIT 2.5 CS_REF_PT Ver SPLINE NATURAL DAMP Daem { PERIODIC NATURAL } OPEN_INFILE 1 Pfad LOOP READ_FILE 1 Les EXIT_IF (Les='END-OF-FILE') (VAL Les) END_LOOP CLOSE_FILE 1 END END CS_REF_PT 0,0 PURGE_FILE Pfad CONFIRM END_DEFINE {********1*********2*********3*********4*********5*********6*********7*********8***} DEFINE Fk_geo2spl_kont_lv LET Mv 1 IF (Dx=0) IF (Dy>0) LET Ph 135 END_IF IF (Dy<0) LET Ph 305 END_IF END_IF LET Wk (Wb*0.5) IF (Dx>=0) LET Wa (Ph+225+Wk) END_IF IF (Dx<0) IF (Dy<=0) LET Wa (Ph+45+Wk) END_IF IF (Dy>0) LET Wa (Ph+405+Wk) END_IF END_IF LOOP LET P2 (R2+PNT_RA 0.0005 Wa) INQ_ELEM P2 EXIT_IF ((INQ 403= LINE) OR (INQ 403= FILLET) OR (INQ 403= ARC) OR (Mv>6)) LET Wa (Wa+45) LET Mv (Mv+1) END_LOOP END END_DEFINE {********1*********2*********3*********4*********5*********6*********7*********8***}