(***************************************************) (* *) (* Makro laden mit INPUT "kontur.m" *) (* Makro starten mit kontur bzw. KONTUR *) (* *) (* Für alle definierten Elemente im Auswahlrahmen *) (* wird die Länge berechnet, diese an das Element *) (* geschrieben und die Gesamtlaenge berechnet. *) (* Makro steht für jedermann zur freien Verwendung *) (* und darf unveraendert weitergegeben werden. *) (* *) (* *) (* keine Haftung bei Fehlern *) (* Ing.-Buero Andreas Baumgartner *) (* www.Andreas-Baumgartner.de *) (* 29.10.2002 *) (* *) (***************************************************) DEFINE Kontur LOCAL L (* Gesamtlaenge *) LOCAL L1 (* L akt. Element *) LOCAL P_ul (* Punkt unten links vom Rahmen *) LOCAL P_or (* P oben rechts *) LOCAL Ap (* Anfangspkt *) LOCAL Ep (* Endpkt *) LOCAL Pe (* Punkt auf Element *) LOCAL R (* Radius *) LOCAL W1 (* Anfangswinkel *) LOCAL W2 (* Endwinkelt *) LOCAL W (* Winkel, gesamt *) LOCAL FA (* akt. Farbe *) LOCAL LA (* akt. L-art *) LOCAL TS (* Textgroesse *) (* Abfrage aktueller Einstellungen *) INQ_ENV 3 LET LA (INQ 301) LET FA (INQ 201) INQ_ENV 12 LET TS (INQ 6) (* setzen von Variablen *) LET L (0) LET L1 (0) READ 'Punkt unten links antippen' P_ul READ 'Punkt oben rechts antippen' RUBBER_BOX P_ul P_or INQ_SELECTED_ELEM SELECT WHITE AND BOX P_ul P_or CONFIRM END (* Rahmen in Phantom wird um ausgewertete Elemente gezeichnet *) INIT_SUBPART "andreas-baumgartner-tmp" END LINE CYAN PHANTOM RECTANGLE P_ul P_or LINE LINEPATTERN LA RGB_COLOR FA END TEXT_SIZE 3.5 TEXT "alle Elemente, die sich komplett innerhalb dieses Rahmens befinden wurden beruecksichtigt" P_ul END TEXT_SIZE TS DISPLAY_NO_WAIT (STR (inq 14) + " Elemente gefunden") WAIT 1 (* Analyse der einzelenen Elementen *) LOOP EXIT_IF (INQ 14=0) IF (INQ 403=LINE) LET Ap (INQ 101) LET Ep (INQ 102) LET Pe (Ap+(0.5*(EP-AP))) LET L1 (ABS (LEN (Ap - Ep))) ELSE_IF (INQ 403=CIRCLE) LET R (INQ 3) LET Pe (INQ 101 + PNT_RA R 45) LET L1 (2*PI*R) ELSE_IF ( (INQ 403=ARC) OR ( INQ 403 = FILLET) ) LET R (INQ 3) LET W1 (INQ 4) LET W2 (INQ 5) LET W (ABS (W1-W2)) LET Pe (INQ 101+PNT_RA R (w1+(0.5*w))) LET AP (INQ 102) LET EP (INQ 103) LET L1 (2*PI*R*W/360) ELSE_IF (INQ 403 = BSPLINE) LET L1 (READ_LTAB 'BSpline_basic_table' TITLE 2) LET Pe (INQ 101) ELSE DISPLAY_NO_WAIT ("unbekanntes Element erwischt: " + STR (INQ 403)) WAIT 0.5 END_IF (* Gesamtlaenge aufaddieren *) LET L (L+L1) (* Beschriftung der einzelenen Elemente *) TEXT_SIZE 1 TEXT (STR ((ROUND (L1*1000))/1000 )) Pe END TEXT_SIZE TS (* Vorbereitung auf die naechste Runde *) LET L1 (0) INQ_NEXT_ELEM END_LOOP EDIT_PART PARENT DISPLAY_NO_WAIT ("Gesamtlaenge: " + str L) WAIT 1 READ NUMBER "Gesamtlaenge ist:" DEFAULT L L END_DEFINE