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