Koordinat Yazdırma

Tanım

Koord komutu ile girilen noktanın x ve y koordinatlarını çizim ekranına yazdırılabilir.

Program

(defun c:koord ()
      (terpri)
      (setq cmdecho (getvar "cmdecho"))
      (setvar "cmdecho" 0)
      (setq osm (getvar "osmode"))
      (setq T1 "yazi yuksekligi < " ; 1
           T2 "> :"
           T3 (getvar "textsize")
      )
      (setq th (getreal (strcat T1 (rtos T3 2 2) T2)))
      (if (= th nil)
           (setq th t3)
      )
      (while ; 2
           (setq n (getpoint "\n nokta giriniz:"))
           (terpri)
           (setq yn1 (getpoint n "\n yazi noktasi giriniz:"))
           (setq yn21 (polar yn1 (* pi 0.5) (* 1 th)))
           (setq yn22 (polar yn1 (* pi 1.5) (* 1 th)))
           (setq nx (car n)) ; 3
           (setq ny (cadr n)) ; 4
           (setq yazınx (strcat "X= " (rtos nx 2 3))) ; 5
           (setq yazıny (strcat "Y= " (rtos ny 2 3)))
           (setq rad (angle n yn1))
                (if (and (< rad (* pi 1.5)) (>= rad (* pi 0.5))) ; 6
                   (progn (setq yn2 (polar yn1 pi (* 4 th))) ; 7
                     (command "text" "j" "mr" yn21 th 0 yazınx "")
                     (command "text" "j" "mr" yn22 th 0 yazıny "")
                   )
                   (progn (setq yn2 (polar yn1 0 (* 4 th))) ; 8
                     (command "text" "j" "ml" yn21 th 0 yazınx "")
                     (command "text" "j" "ml" yn22 th 0 yazıny "")
                   )
                )
           (command "-osnap" "none")
           (command "pline" n yn1 yn2 "")
           (setq p1 (polar n (+ rad (/ pi 12)) th))
           (setq p2 (polar n (- rad (/ pi 12)) th))
           (command "pline" p1 n p2 "")
           (setvar "osmode" osm)
           (setvar "cmdecho" cmdecho)
      )
)


Açıklamalar

1 Bu guruptaki işlemlerin amacı komut içerisinde kullanılacak text komutu için yazı yüksekliğini ayarlamaktır. Kullanıcıya mevcut yazı yüksekliğini göstererek bir th değişkenine değer girmesi istenmektedir. if fonksiyonu ile th değişkenine girilen değerin nil (tanımsız) olması durumunda mevcut yazı yüksekliğinin yeni yazı yüksekliği olarak tanımlanmaktadır.
2 Bu grupta yapılan işlemlerim tamı while komutu ile n değişkenine tanımsız değer girilene dek tekrarlanacaktır.
3 Bu satırda nokta (x,y,z) bilgisi içeren n değişkeninin ilk elemanı car fonksiyonu ile alınır nx değişkenine atanır
4 Bir üst satırda olduğu gibi n değişkeninin ikinci elemanı cadr fonksiyonu yardımıyla ny değişkenine atanır.
5 rtos fonksiyonu ile nx sayısal değeri ondalık 3 hanesi olacak şekilde metinsel değere dönüşür. Bu değer strcat fonksiyonu ile "X= " metinsel değeri ile birleştirilir. Yeni değer yazınx değerine atanır.
6 Bu grup if fonksiyonu bir sınama yapılmaktadır. rad değişkeninin (* pi 1.5)) den küçük ve (* pi 0.5) den büyük veya eşit olması sınanmaktadır.
7 progn fonksiyonu if fonksiyonu ile yapılan sınamalara göre yapılacak işlemleri gruplandırmada kullanılır. Bir üst satırda yapılan sınamanın sonucu doğru ise bu guruptaki işlemler yapılacaktır.
8 if fonksiyonu ile yapılan sınamanın sonucu yanlış ise bu guruptaki işlemler yapılacaktır.


Örnek Lisp Dosyasını İndirin

009-koord.lsp