Orhan Toker
Y. Mimar (İTÜ)
Autodesk Yetkili Danışmanı
Programcı

  DERS.3 AutoLISP Deyimleri, Değişkenleri ve Veri Tipleri
Seviye: Başlangıç

 


  AutoLISP Deyimleri
 

Bir AutoLISP programı alt alta seri halinde deyimlerden oluşur. En basit anlamıyla bir LISP deyimi aşağıdaki gibidir.

(fonksiyon argümanlar)

Her LISP deyimi bir parantez açarak başlar. Bunu fonksiyon ve ona bağlı argümanlar (parametreler) izler ve parantez kapanarak biter. Her deyim kendini kapsayan bir başka deyimin kullanacağı bir dönüş değeri oluşturur. En son yorumlanan deyimin değeri kendini çağıran deyime döner. Örneğin:

(* 2 (+ 5 3))
16

Çarpma fonksiyonun birinci argümanı bir numaradır. İkinci argüman ise bir toplama işleminin sonucudur. Yorumlayıcı önce en içteki parantezlerde bulunan deyimi yani 5 + 3 işlemini yorumlar ve sonuç değerini çarpma işlemini bulunduran deyimin 2. argümanı olarak döner. Eğer kapatmadığınız eksik parantez olursa 16 sonucu yerine aşağıdaki gibi görünür.

(* 2 (+ 5 3)
(_>

Bu durumda hemen eksik kalan parantezi kapatırsanız yorumlayıcı görevine devam eder.

(* 2 (+ 5 3)
(_>
)
16

  AutoLISP Veri Tipleri
 

AutoLISP deyimleri parantezlerin içindeki veri tpilerinin sıralamasına ve niteliklerine göre işlem görür. AutoLISP'i tam anlamıyla kullanmanız için veri tiplerini iyice anlamalısınız.

Integer (Tamsayılar)

İçinde ondalık ayracı olmayan sayılardır. 32 bitlik bu sayılar -2,147,483,647 ile +2,147,483,648 değerleri arasındaki tüm tamsayılardır. Eğer bu aralığın dığında bir tamsayı girecek olursanız yorumlayıcı bunu otomatik olarak reel sayıya çevirecektir. Ancak örneğin, iki geçerli tamsayının toplamı 32 bitlik sistemde olabilecek en büyük tamsayının değerinini geçiyorsa sonuç geçersiz olacaktır. Örnek:

(+ 2147483646 3)
-2147483647

Sonuç negatif tamsayı çıkar.

Real (Reel Sayılar)

AutoLISP te reel sayılar floating point formatında olan noktadan sonra 14 hane hassasiyetli sayılardır. AutoLISP yorumlayıcısı için gerçek sayılara örnek olarak 3.1 -5.4 0.0000013 21,000,000.0 verilebilir.

String (dizi)

İçinde bir dizi alfanümerik karakter bulunduran katarlardır. "Kelime 1" "kitap" "H&B" "?*_i" gibi dizeler AutoLISP yorumlayıcısı için geçerli dizelerdir. \ karakteri AutoLISP dizelerinde kontrol karakeri girmenizi sağlar. Bu kontrol karakterlerinin listesi aşağıdaki gibidir.

AutoLISP control characters

Code

Description

Kod Açıklama

\\

\ karakteri için (princ "\\ahmet") "\ahmet"

\"

" karakteri (princ "\"Deneme\"") ""Deneme""

\e

Escape

\n

Yeni satıra geçmek için
(princ "Bu ilk Satır \nBu ikinci satır")
Bu ilk satır
Bu ikinci satır

\r

ENTER

\t

TAB bir tab sağa geçirir
(princ "Ali\tVeli\tAyşe")
Ali.......Veli........Ayşe

\ nnn

nnn kodundaki ACCII karakteri

Lists (Listeler)

Biribirlerinden bir boşlukla ayrılan parantez içindeki değerler silsilesine liste denir. Biribiri ile ilgili bir çok sayıyı birarada saklamanın en etkili yolu listelerdir. Örneğin bir noktayı (13.45 23.50 0.00) listesinde saklayabiliriz. İleride listelerle ilgi çok daha fazla ayrıntıyı paylaşacağız.

Selection Sets (Seçim setleri)

Bir veya birden fazla Autocad nesnesinin olşturduğu gruplardır. AutoLISP kullanarak seçim setlerine nesne ekleyebilir ya da çıkarabilirsiniz.

Entity Name (Varlık isimleri)

Çizimdeki nesnelere Autocad tarafından verilen numerik etikete varlık ismi denir. Varlık isimleri çizim içindeki nesnelerin veritabanına ulaşmak için kullanılabilir. Seçilen nesneler üzerinde değişik işlemler yapmak için çok çeşitli LISP rutinleri vardır. Bu konuyu ilerideki derslerimizde geniş bir biçimde ele alacağız.

  AutoLISP Değişkenleri (Variables)
 

Her programla dilinde olduğu gibi AutoLISP dilinde de değişkenler vardır. AutoLISP dilinde bir değişkeni önceden tanımlamanız gerekmez. Değişken atandığı anda eşitlenir ve eşitlediğiniz veri tipinde yaratılır. Birkaç değişken yaratalım. AutoLISP değişkeni yaratma, tanımlama ve atama için tek bir fonksiyon kullanılır.

(setq isim "Haluk")

Yukarıdaki değim isim adında bir değişken yaratır, string olarak tanımlar ve "Haluk" değerini bu değişkene atar. AutoLISP bir yorumlayıcı olduğu için değişkenlerin tümü (fonksiyon argümanları hariç) global yani diğer fonksiyonlar tarafından tanınabilirdir. AutoLISP değişkenlerinin tümü global olduğuna göre değişken ismi verirken dikkatli olmalıyız.

(setq intNoktaAdedi 5)
(setq strAd "Orhan" strSoyad "Toker")
(setq lstBaslangicNoktasi (getpoint "\nBir nokta girin"))

Yukarıdaki tüm örneklerde değişkenlere verilecek isimlere dikkat edilmiştir. Autolisp yorumlayıcıda değişken tipleri önceden tanımlanamadığı ve tüm değişkenler global olduğu için, kodlarken değişkeninizin tipine uygun ön ekler koymaya özen gösterirseniz işinizi kolaylaştırmış olursunuz.

  Bir değişkenin değerini izlemek
 

Herhangi bir değişkenininizin değerini o anda öğrenmek istiyorsanız konsol veya komut satırından bunu yapabilirsiniz. İkisi arasında çok az bir fark vardır.

$_strAd ;konsoldan öğrenme
"Orhan"

Command: !strAd ;komut satırından öğrenme
"Orhan"

Gördüğünüz gibi değerini öğrenmek istediğiniz değişkenin adının başına ! işareti koymanız yeterli.

  Önceden tanımlanmış değişkenler
 

AutoLISP'te değişken ismi olarak kullanamayacağınız önceden tanımlı 3 değişken vardır.

PI Pi sabiti
T .True
PAUSE komut duraksaması

  Forcing (zorlama)
 

İki tamsayının bölümünü gerçek sayı elde etmek için

(/ 12 5) ;Forcing yapılmadan
2

(/ 12 5.0); forcing ile
2.4

Bu dersimiz bu kadar. Hoşçakalın.