DEFINE Posis {Setzen von Positionsflaggen: Entweder erstes LinienstÏck gerade mit orthogonakem Fangen oder schraeg; ZURÛCK ist nach dem Absetzen der Zahl moeglich} LOCAL P1 LOCAL P2 LOCAL P3 LOCAL P4 LOCAL P2_speich LOCAL S LOCAL C LOCAL V LOCAL Pf_size LOCAL Pf_art LOCAL Pf_voll LOCAL Farbe LOCAL Linienart LOCAL Token LOCAL He_pos_nr LOCAL Art LOCAL Ang_P2P1 INQ_ENV 12 LET Pf_size (INQ 9) {Pfeilgroesse} LET Pf_art (INQ 604) {Pfeilart} LET Pf_voll (INQ 605) {Fuellen ein/aus} Col_lin_speichern INQ_ENV 6 LET M (INQ 4) READ STRING "Bitte Linienendtyp angeben 'P' fÏr 'Punkt' oder 'o' fÏr 'ohne'" DEFAULT 'P' Art READ NUMBER 'Erste Positionsnummer eingeben' DEFAULT 1 C LET S 5 TEXT_SIZE S TEXT_ADJUST 5 TEXT_FRAME OFF EDIT_PART TRAP_ERROR '.Pos_Nr' IF (CHECK_ERROR=1) INIT_PART '.Pos_Nr' END_IF LOOP READ QUALIFIER PNT COMMAND "Lage der Positionsnummer antippen oder 'ZURÛCK'!" Token EXIT_IF (TYPE Token=COMMAND) IF ((TYPE Token)=PNT) LET P1 Token ELSE_IF ((TYPE Token)=QUALIFIER) IF (Token=UNDO) DELETE TEXTS P1 {der Einfachheit halber wird davon ausgegangen, dass an dieser Stelle nichts anderes liegt} DELETE P4 END LET C (C -1) READ PNT 'Lage der Positionsnummer antippen' P1 END_IF END_IF READ PNT 'Knickpunkt oder Bauteil antippen' RUBBER_LINE P1 P2 {Im Bereich von þ10³ um die Orthogonalen wird der zweite Punkt des ersten Linienabschnittes von der Orthogonalen gefangen. Bei der Option 'weiter' (d.h. ohne Knickpunkt) wird nicht gefangen} LET Ang_P2P1 (ANG(P2-P1)) LET P2_speich P2 IF ((Ang_P2P1 >= -10)AND(Ang_P2P1 <= 10)) LET P2 (PNT_XY(X_OF P2) (Y_OF P1)) ELSE_IF ((Ang_P2P1 >= 80)AND(Ang_P2P1 <= 100)) LET P2 (PNT_XY (X_OF P1) (Y_OF P2)) ELSE_IF ((Ang_P2P1 >= -100)AND(Ang_P2P1 <= -80)) LET P2 (PNT_XY (X_OF P1) (Y_OF P2)) ELSE_IF ((Ang_P2P1 <= -170)OR(Ang_P2P1 >= 170)) LET P2 (PNT_XY(X_OF P2) (Y_OF P1)) END_IF READ STRING PNT "Bauteil oder 'weiter' antippen " RUBBER_LINE P2 P3 LET V ((P2 - P1)/(LEN (P2 - P1))) LET V ((V*S*1.2)/(M)) LET P4 (P1+V) IF (Art='P') LEADER_ARROW 1 DOT_TYPE ELSE LEADER_ARROW NONE END_IF LINE YELLOW SOLID {nur damit in der Statuszeile die passende Farbe zu sehen ist} LEADER_LINE IF ((TYPE P3)=STRING) YELLOW P4 P2_speich ELSE YELLOW P4 P2 P3 END_IF TEXT WHITE LOOP READ NUMBER STRING "Bitte Positionszahl bestÌtigen oder Ìndern (mehrere in ' ' eingeben)" DEFAULT C He_pos_nr IF ((TYPE He_pos_nr)=NUMBER) TEXT (STR (He_pos_nr)) P1 LET C He_pos_nr ELSE_IF ((TYPE He_pos_nr)=STRING) TEXT He_pos_nr P1 END_IF EXIT_IF (((TYPE He_pos_nr)=NUMBER) OR ((TYPE He_pos_nr)=STRING)) END_LOOP LET C (C+1) END LEADER_ARROW Pf_size Pf_art END_LOOP Col_lin_setzen END_DEFINE DEFINE col_lin_speichern {aktuelle Farbe und Linie merken} inq_env 3 let col_speicher (inq 201) let lin_speicher (inq 301) END_DEFINE DEFINE col_lin_setzen {aktuelle Farbe und Linie zurÏcksetzen} color rgb_color col_speicher linepattern lin_speicher END_DEFINE