Ok İşareti

Tanım

Bu komutla çizim alanında istenilen iki nokta arasına genişliği verilen ok işaretinin çizilmesi sağlanır.

Program

(defun c:ok ()
      (setq osm (getvar "osmode")) ; 1
      (terpri)
      (setq en (getreal "ok işaretinin genişliğini giriniz :")) ; 2
      (terpri)
      (setq okn1 (getpoint "ok işaretinin başlangıç noktasını giriniz"))
      (terpri)
      (setq okn2 (getpoint "ok işaretinin bitiş noktasını giriniz"))
      (setq mesafe (distance okn1 okn2)) ; 3
      (setq açı (angle okn1 okn2)) ; 4
      (setq n1 (polar okn1 (- açı (/ pi 2)) (* 0.5 en))) ; 5
      (setq n2 (polar n1 açı (- mesafe (* 1.5 en)))) ; 6
      (setq n3 (polar n2 (- açı (/ pi 2)) en)) ; 7
      (setq n4 (polar okn1 (+ açı (/ pi 2)) (* 0.5 en)))
      (setq n5 (polar n4 açı (- mesafe (* 1.5 en))))
      (setq n6 (polar n5 (+ açı (/ pi 2)) en))
      (command "osmode" 0)
      (command "pline" n1 n2 n3 okn2 n6 n5 n4 "close") ; 8
      (setvar "osmode" osm)
)


Açıklamalar

1 Ok işaretini genişliği olarak kullanılacak en değişkenine getreal fonksiyonu ile bir değerin atanması sağlanmıştır.
2 getpoint fonksiyonu ile kullanıcıdan okn1 değişkenine başlangıç noktası istenmiştir.
3 mesafe değişkenine distance fonksiyonu ile okn1 okn2 noktaları arasındaki mesafe atanmıştır.
4 açı değişkenine angle fonksiyonu ile okn1 okn2 noktaları arasındaki açı atanmıştır.
5 n1 değişkenine atanmak için polar fonksiyonu ile okn1 noktasından açı açısının (/ pi 2) (45 derece) eksiği (* 0.5 en) mesafesindeki nokta bilgisi hesaplanmıştır.
6 n2 değişkenine atanmak için polar fonksiyonu ile n1 noktasından açı açısında mesafe değerinin (* 1.5 en) eksiği mesafedeki nokta bilgisi hesaplanmıştır.
7 n2 noktasından açı açısının (/ pi 2) eksiği kadar açıda en mesafedeki nokta bilgisi n3 değişkenine atanmıştır.
8 command fonksiyonu ile pline komutu kullanılarak n1 n2 n3 okn2 n6 n5 n4 noktaları arasında sürekli çizgi çizilmiş, close ile n4 n1 noktaları arasının kapatılması sağlanmıştır.


Örnek Lisp Dosyasını İndirin

007-ok.lsp