AutoLISP

1- AutoLISP’e Giriş

AutoLISP, LISP (List Processor) programlama dilinin, Autodesk tarafından Autocad için özel fonksiyonlar eklenmiş bir alt versiyonudur. Autocad nesnelerini, veri tablolarını ve komutlarını yönetebilen oldukça gelişmiş bir parantez dilidir.

Komutlar dizisi olan fonksiyonlar ile işlemlerimizi yapacağız.

Fonksiyonları 3 bölümde inceleyebiliriz:
OPERATÖRLER – Kullanıcıdan verileri alır ( Sayı, string, nokta, mesafe ve AutoCAD obje/leri ) (ÖRNEK -1-)
İŞLEMCİLER – Verileri manipüle eder (ÖRNEK-2-)
KOMUTLAYICILAR – Autocad’e komut gönderir (ÖRNEK -3-)

*AutoLISP’e bende yeni giriş yapmış bulunuyorum, adım adım öğrendikçe deneyimlerimi ve bilgilerimi paylaşacağım.
NOT: Girilen fonksiyon/değişken/değer isimleri Autodesk’in kendi sitesinde erişebileceğiniz verilerdir. Ayrıca burada birçok hazır fonksiyonlar ile anlatım sizi korkutmasın tek amacım mantığını anlamaya yöneliktir. Zamanla A,B,C,D vb. harflerinden oluşan fonksiyonların tanımları ve örnekleriyle de paylaşım yapacağım.
Visual LISP Editör’üne geçmeden önce Command yani Komut Satırı’nda yapabileceğimiz kısa örnek komutlar ile pratik yapalım. 

————————————————————————————————————————

AutoLISP, fonksiyon içinde farklı fonksiyonları barındırmamıza ve onları kullanmamıza imkan sağlar.

*(fonk1 (fonk2 argümanlar)(fonk3 argümanlar))

*(setqvariable_name1 – değişken” “value1-değer“) [variable_name2 value2 …])  vb. şeklinde iç içe tanımlı kodlar tanımlanabilir ve yazılabilir.

ÖRNEK -1-

(getpoint) fonksiyonu: Kullanıcıdan nokta seçmesini ister.

Komut satırına: (setq a (getpoint “\nReferans kot noktasını seçiniz:”))

Yazarak ekranda herhangi bir noktayı tıkladığınızda (9.96543 9.9335 0.0) vb. bir veri gelecektir. Bu ise x, y ve z koordinatlarının bilgisini içeriyor. X=9.96543 Y=9.9335 Z=0.0

Daha sonra tıklamış olduğunuz noktanın koordinatlarını öğrenmek istiyorsanız başında ünlem (!) işareti ile tanımladığınız ( a ) verisini yazıp ( !a ) şeklinde komut satırına yazıp enter yapın. Karşınıza daha önce tıklamış olduğunuz noktanın koordinatları gelecektir ( a ) yerine başka tanım girebilirsiniz, isteğinize bağlı.

(getreal) fonksiyonu: Kullanıcıdan sayı girmesi ister

Komut satırına: (setq refkot (getreal “\nReferans kot degerini girin:”))

ÖRNEK -2-

(setq a (getpoint “\nA noktasını belirtin : “))

(setq b (getpoint “\nB noktasını belirtin : “))

(setq c (getpoint “\nC noktasını belirtin : “))

(setq b (polar a (/ pi 3) 3))
(setq c (polar b pi 3))

Noktaların uzunluk ve açıya bağlı olarak koordinatlarının belirlendiği ve kenar uzunlukları 3 cm olan 60 derecelik açıya sahip eşkenar bir üçgen çizecektir.

ÖRNEK -3-

Bir diğer örneğimiz ise noktalar arasına çizgi çiz 

(setq a (getpoint “\nİlk noktayı belirtin : “))

(setq b (getpoint “\nİkinci noktayı belirtin : “))

(setq c (getpoint “\nÜçüncü noktayı belirtin : “))

(command “plinea b c “c”)

Belirtilen komutları sırasıyla girince, birinci (a), ikinci nokta (b) ve üçüncü nokta (c) arasında polyline çizer.

ÖRNEK -4-

Birde diyalog penceresi için örnek yapalım : – )

A- (alert “Merhaba ve AutoLISP’e hoş geldiniz!”)

B- (alert (strcat “Merhaba ” “ve ” ” AutoLISP’e hoş geldiniz!”))

A ve B örneklerinde iki farklı komutta aynı diyalog penceresinde ki görüntüyü getirecektir. Tırnak içinde boşluk bırakarak kelimeler arası boşluğu ayarlayabilirsiniz. “Alert” ve “Strcat” fonksiyonları arasında şöyle bir fark var. Alert tek bir diziyi ( tırnak içinde ki veriyi ) yansıtırken Strcat ise birden fazla olan dizileri birincinin sonuna ikinci, ikincinin sonuna üçüncüyü vs. sırasıyla ekleyerek birçok diziyi tek bir diyalog penceresinde görüntülemenize imkan sağlıyor.

Görüldüğü üzere birçok gömülü fonksiyon ile çalışılabilir.

 

C- (defun mesaj (msg mode / )
            (if (= mode 0)
               (prompt (strcat “\n” msg))
                  (alert msg)
     )
      (princ)
   )

Şeklinde yazılmış bir “mesaj” fonksiyonunu iki farklı şekilde ekranda gösterebiliriz.

1- (mesaj “Merhaba ve AutoLISP’e hoş geldiniz!” 0)
2- (mesaj “Merhaba ve AutoLISP’e hoş geldiniz!” 1)

0 değeri ile komut satırına yazdığımız fonksiyon komut satırının hemen üstünde ileti şeklinde görüntülecektir.

1 değerinde ki fonksiyonu komut satırına yazdığınızda ise yukarıda ki A ve B örneklerinde olduğu gibi diyalog penceresinde görüntülecektir. Fonksiyona tanımlı bir değeri daha sonra çağırarak işlemlerimizi kontrol edebiliriz.

Yapılan örneklere dair sorun yaşayanlar olursa bilgilendirebilirler ayrıca fonksiyonları yazmak için Notepad++ editörünü tavsiye ederim.

Bir diğer dersimiz farklı örnekler üzerinden devam edecektir.

İyi çalışmalar.