Code:
;|
Dieses Programm erzeugt einen Ansichtspfeil mit dem Befehl Polylinie; mit Winkelfunktion berechnetProgrammstart mit: APFEIL2
Verwendete Variablen: osn Einstellungen für Ofang sichern
ORTH EINSTELLUNGEN FÜR ORTHO SICHERN
P1 Startpunkt Ansichtspfeil
P2 Endpunkt Ansichtspfeil (Pfeilspitze)
br1_2 1/2 Pfeilbreite
sk Skalierung für Ansichtspfeil
wi Winkel Ansichtspfeil
gra Argument für Winkelumrechnungsfumktion
|;
;;;============== Winkelumrechnung Grad-Bogenmaß =====================
(defun GRABO (GRA)
  (* pi (/ GRA 180.0))
) ;_ end of Defun
;;;========================= Hauptfunktion =============================
(defun C:APFEIL2 (/ BR1_2 ORTH OSN P1 P2 P3 P4 P5 P6 SK WI)
  (setq OSN  (getvar "osmode")          ; Systemeinstellungen sichern (Ofang); 
        ORTH (getvar "orthomode")
  )                                     ; Systemeinstellungen sichern (Ortho); 
  (setvar "osmode" 9)                   ; Ofang Endpunkt und Punkt für Start- u. Endpunktdefinition einschalten
;;;===================================================================
;;;===================== Eingabeabfragen =============================
  (setq P1 t) ;_ Wert auf wahr, damit die Schleife das erste mal duchlaufen wird
  (while P1
    (setq P1 (getpoint "\nStartpunkt (PfeilEnde) für Ansichtspfeil (Space/Enter/R.Klick für ENDE): "))
    (if P1
      (progn
        (setq
          P2 (getpoint P1
                       "\nEndpunkt (Pfeilspitze)für Ansichtspfeil (Space/Enter/R.Klick für ENDE): ? "
             ) ;_ end of getpoint
        ) ;_ end of setq
        (if P2
          (progn
            (initget (+ 2 4))
            (setq SK
                   (getreal
                     "\nPfeil skalieren? Faktor (Space/Enter/R.Klick für KEINE Skalierung): "
                   ) ;_ end of getreal
            ) ;_ end of setq
            (if (not SK)
              (setq SK 1)
            ) ;_ end of if
;;;======== Auswertung der Eingaben / Berechnung der Punkte ==========
            (setvar "osmode" 0) ;_ Ofang ausschalten (wegen evtl. Probleme beim Zeichnen)
            (setq WI    (angle P1 P2) ;_ Winkel ermitteln                   
                  BR1_2 (* (* (sin (GRABO 15)) 30) SK) ;_ 1/2 Pfeilbreite berechnen und zuweisen
                  P3    (polar P1 WI (* 50 SK)) ;_ Eckpunkte des Pfeils berechnen
                  P4    (polar P3 (+ WI (* 1.5 pi)) BR1_2)
                  P2    (polar P4 (+ WI (GRABO 15)) (* 30 SK))
                  P5    (polar P2 (+ WI (GRABO 165)) (* 30 SK))
                  P6    (polar P5 (+ WI (GRABO 270)) BR1_2)
            ) ;_ end of setq
;;;================= Zeichnen des Ansichtspfeils == ==================
            (command "_pline" P1 P3 P4 P2 P5 P6 "")
          ) ;_ end of progn
        ) ;_ end of if
      ) ;_ end of progn
    ) ;_ end of if
  ) ;_ end of while
;;;==================== Rücksetzen Systemeinstellungen =================
  (setvar "osmode" OSN)                 ; Wiederherstellen der ursprünglichen Ofänge
  (setvar "orthomode" ORTH)             ; Wiederherstellen des ursprünglichen Ortho
;;;=====================================================================
  (princ)                               ; Unterdrücken des Rückgabewertes "NIL" der Funktion
)                                       ; Ende der Funktion
(princ "\Pfeil zeichen, Funktion mit \"APFEIL2\" starten.")
(princ) ;_ silent load