DEFINE Kasten
{Das Makro zeichnet ein Rechteck entweder von einem Punkt aus mit Eingabe oder Antippen einer Laenge
 oder Hoehe oder bei Eingabe von Laenge und Hoehe um einen Ausrichtpunkt wie bei Texten.
 Dazu ist noch ein ZURUECK eingebaut.}
  LOCAL P_links
  LOCAL Hoehe
  LOCAL Hoehe2
  LOCAL P_oben
  LOCAL Laenge
  LOCAL Laenge2
  LOCAL Flag_L
  LOCAL Flag_H
  LOCAL Ausrpnt
  END
  LET Ausrpnt 5
   CHANGE_ELEM_INFO TRAP_ERROR 'Last*' '' INFOS 'Last*' END
   {evtl. noch vorhandene Infos loeschen}
  LOOP
  LET Flag_L 0
  LET Flag_H 0
   DISPLAY_NO_WAIT (CHECK_ERROR)
   READ PNT QUALIFIER 'Linken unteren Eckpunkt oder EinfÏgepunkt oder ZURUECK antippen'  P_links
   IF ((TYPE P_links)=QUALIFIER) {ZURUECK auswerten}
      IF (P_links=UNDO)
      	 DELETE SELECT INFOS 'Last_l' CONFIRM END
	 {Bei ZURUECK wird das Element mit dem Info 'Last_l' geloescht}
	 Kasten
      ELSE
         CANCEL
      END_IF
   END_IF
    READ 'Laenge eingeben oder Punkt auf der Waagerechten antippen'
    RUBBER_LINE_HORIZONTAL P_links Laenge
    IF ((POS (STR Laenge) ',')=0)
      LET Laenge2 (PNT_XY Laenge 0)
      LET Laenge (PNT_XY (X_OF P_links+Laenge) (Y_OF P_links))
      LET Flag_L 1
    END_IF
    READ 'Hoehe eingeben oder Punkt auf der Senkrechten antippen'
    RUBBER_LINE_VERTICAL P_links Hoehe
    IF ((POS (STR Hoehe) ',')=0)
      LET Hoehe2 (PNT_XY 0 Hoehe)
      LET Hoehe (PNT_XY (X_OF P_links) (Y_OF P_links+Hoehe))
      LET Flag_H 1
    END_IF
    IF ((Flag_L = 1)AND(Flag_H = 1))
    LOOP
       READ NUMBER 'Bitte Nummer des Ausrichtpunktes (1-9) eingeben 'DEFAULT Ausrpnt Ausrpnt
    EXIT_IF ((Ausrpnt<10)AND(Ausrpnt>0))
       BEEP
    END_LOOP
      ADD_CURRENT_INFO 'Last_l'
      {Die Linien werden mit dem INFO 'Last_l' gezeichnet}
       IF (Ausrpnt=1)
          LINE RECTANGLE P_links (P_links+Laenge2+Hoehe2)
       ELSE_IF (Ausrpnt=2)
          LINE RECTANGLE (P_links-(Laenge2/2)) (P_links+(Laenge2/2)+Hoehe2)
       ELSE_IF (Ausrpnt=3)
          LINE RECTANGLE (P_links-Laenge2) (P_links+Hoehe2)
       ELSE_IF (Ausrpnt=4)
          LINE RECTANGLE (P_links-(Hoehe2/2)) (P_links+Laenge2+(Hoehe2/2))
       ELSE_IF (Ausrpnt=5)
          LINE RECTANGLE (P_links-(Laenge2/2)-(Hoehe2/2)) (P_links+(Laenge2/2)+(Hoehe2/2))
       ELSE_IF (Ausrpnt=6)
          LINE RECTANGLE (P_links-Laenge2-(Hoehe2/2)) (P_links+(Hoehe2/2))
       ELSE_IF (Ausrpnt=7)
          LINE RECTANGLE (P_links-Hoehe2) (P_links+Laenge2)
       ELSE_IF (Ausrpnt=8)
          LINE RECTANGLE (P_links-(Laenge2/2)-Hoehe2) (P_links+(Laenge2/2))
       ELSE_IF (Ausrpnt=9)
          LINE RECTANGLE (P_links-Laenge2-Hoehe2) P_links
       END_IF
    ELSE
       ADD_CURRENT_INFO 'Last_l'
       LET P_oben (PNT_XY (X_OF Laenge) (Y_OF Hoehe))
       LINE RECTANGLE P_links P_oben
    END_IF
    END
    CHANGE_CURRENT_INFO 'Last*' '' END
  END_LOOP
END_DEFINE