;............................................................
;:      DATE : 91-01-01    Kunde:                           :
;:      Schuetz/Schmidt    AutoCAD-Version 11               :
;:      Version 1.0        ab Version 2.6                   :
;:                                                          :
;:      LEXT.LSP           Verl. oder verkrzt Linien       :
;:..........................................................:
;
;Deklaration:
;       elem    Element mit Anpickpunkt         List
;       elin    Elementname                     Str
;       verl    Verlngerung                    Real
;       elpt    Anpickpunkt                     List
;       lip1    Linienanfangspunkt              List
;       lip2    Linienendpunkt                  List
;       Wech    Wahr, wenn Linie gedreht        Boole
;       lipt    temporrer Linienpt.            List
;       linp    neuer Endpunkt                  List
;
(DEFUN vlre (/ elpt lip1 lip2 wech lipt linp) ;Unterprog Linie verl.
        (SETQ elpt (CADR elem)
                        ;Anpickpunkt extrahieren
              lip1 (CDR (ASSOC 10 elin))
                        ;Punkt 1 speichern
              lip2 (CDR (ASSOC 11 elin))
                        ;Punkt 2 speichern
        )
        (IF (< (DISTANCE elpt lip1)(DISTANCE elpt lip2))
                        ;wenn Abstand Anpickpunkt zu P1
                        ;kleiner als Anpickpunkt zu P2
                (SETQ lipt lip1
                      lip1 lip2
                      lip2 lipt
                      wech T
                )
                        ;Linie drehen, dies ist notwendig, da
                        ;danach Linie von P1 nach neuem Pt
        )
        (SETQ linp (POLAR lip1 (ANGLE lip1 lip2)
                   (+ (DISTANCE lip1 lip2) verl))
                        ;Lnge der neuen Linie speichern
              elin (IF wech
                        ;wenn gewechselt wurde
                    (SUBST (CONS 10 linp)(ASSOC 10 elin) elin)
                        ;dann Anfangspunkt wechseln
                    (SUBST (CONS 11 linp)(ASSOC 11 elin) elin)
                        ;sonst Endpunkt wechseln
                  )
        )
        (ENTMOD elin)
                        ;auf Datenbank zurckschreiben
)

(DEFUN C:lext (/ elem elin verl) ;Hauptprog. Linie verl.
    (SETQ elem (ENTSEL "Linie an der zu verlaengernden Seite waehlen: "))
                        ;Element whlen
    (IF elem
                        ;wenn Element gewhlt
        (IF (= (CDR (ASSOC 0 (SETQ elin (ENTGET (CAR elem))))) "LINE")
                        ;dann, wenn Element eine Linie
              (IF (SETQ verl (GETREAL "\nVerlaengerung: "))
                        ;dann, Verlngerung abfragen, wenn Verl.
                (vlre)
                        ;dann Rechenprogramm aufrufen
                (PRINC "*Abbruch*\n")
                        ;sonst Abbruchmeldung
              )
              (PROMPT "\nElement ist keine Linie! ")
                        ;sonst Meldung, Element ist keine Linie
        )
        (PROMPT "Kein Element gewaehlt! ")
                        ;sonst Meldung, kein Element gewhlt
    )
    (PRINC)
                        ;unterdrcken der Rckgabe
)
