17.06.2008 09:39    

ehya
Autolisp nedir?

Asıl anlamda LISP, yapay zeka çalışmalarında kullanılan bir program dilidir. List Processing 'in (Liste işleme) kısaltılmış ifadesidir. AutoLISP ise LISP'in AutoCAD ile kullanılabilecek şekilde uyarlanmış halidir. AutoLISP sayesinde kullanıcının AutoCAD'e yeni komutlar eklemesi kişiselleştirmesi ve ondan artan bir verim elde etmesi mümkündür. Tabii ki yeni komutlar'dan kastedilen, kullanıcının AutoLISP fonksiyonlarını kullanarak hazırladığı program dosyalarını AutoCAD ortamından çağırarak kullanmasıdır. Autocad 2000'den sonra autocad içinde gömülü olarak gelen Visual Lisp editörü lisp kodlamak için kullanılan çok kullanışlı bir programdır. Lisp kodlamaya yeni başlayacak arkadaşlara bu programı öneririm.
Tools --> Autolisp --> Visual Lisp Editor seçeneğinden lisp derleyicisine ulaşabilirsiniz.

AutoLISP dosyalarının ASCII dosyalar yaratabilen bir kelime işlemcide (text editor) hazırlanması ve uzantısının *.LSP olması bir zorunluluktur.

AutoLISP dosyaları aslında fonksiyonlardan meydana gelmektedir. Kullanıcı, bir takım standart fonksiyonları kullanarak veya kendisi çeşitli fonksiyonlar tanımlayarak yapmak istediklerini gerçekleştirir. Gerek standart fonksiyonlar gerekse kullanıcı tanımlı fonksiyonlar, değişkenlere değerler atanması, bu değerlerin AutoLISP tarafından değerlendirilerek sonuçlar elde edilmesi mantığına göre çalışır. AutoLISP programlarda büyük küçük harf ayrımı yapmaz.

Burada < > işaretleri arasında yer alanlar fonksiyona yazılacak değişkenleri .... ise ardışık girişleri temsil eder. , fonksiyona gerekli olan bir değer veya değeri önceden atanmış bir değişken olabilir.


Her lisp deyimi parantezle başlar ve parantezle biter. İç içe yazılan fonsiyonlarda program önce en içteki değerleri yorumlar ardından bi sonraki değerleri yorumlayarak sonuca gider.

Örneğin :

(/ 160 (+ 32 (* 2 4)))


Yukarıdaki örnekte en içteki fonksiyon (* 2 4) fonksiyonudur. Program önce bu değeri sorgular. Sonucu aldıktan sonra bu değeri “32” ile toplar. Bu sonucu da aldıktan sonra en sonraki değere bölerek sonucu verir.

Sonuç : 4

Matematiksel işlemleri bu şekilde en içten en dışa doğru sıralayarak yapabilirsiniz.

Matematiksel işlemler ile ilgili belirtmek istediğim bir nokta ise;
Autolisp yorumlayıcısı iki tam sayının bölümünü elde etmek için yuvarlama yapar.

Örneğin ;

(/ 22 3)
Sonuç : 7


Halbuki bu işlemin sonucu 7.3333 dür.
Bu şekilde sonuç almak için bölecek sayıyı 3.0 şeklinde girerek sonucu tam olarak alabiliriz


Autolisp içinde değişkenleri kullanırken 2 tip örnek vardır. Birincisi reel sayı, diğeri ise dizelerdir.
Autocad bazı değerlerini reel olarak ister bazılarını ise dize olarak ister.
Bunun anlamı şu demek.

(setq deger 10)
(setq yazi “mehmet”)

Yukarıda görüldüğü gibi deger isminde bi girdi oluşturuldu ve girdiye 10 değeri verildi. Yorumlayıcı bunu reel sayı olarak algılar ve herhangi bir kodlama da bu değeri matemaiksel işlemlere sokabilirsiniz. Ancak bu değeri (setq deger “10”) deseydik bu degeri dize olarak algılayıp herhangi bir matematiksel işlemde kullanamayacaktır.
Sayı olmayan sadece metin olarak ifade edilen değerleri her zaman dize olarak tanımlamalısınız.
Örnekte belirtildiği gibi (setq yazi “mehmet”) girdisinde bu “mehmet” ismini dize olarak algılayıp bununla ilgili herhangi bir işleme sokabiliriz. Yapılacak işlemleri ileri ki derslerde daha açıklayıcı olarak anlatacağım.

17.06.2008 10:39    

Harbi65
Sonunda başlangıç yaptın.. Eline sağlık...
Bende dahil bu konuya merakı olan çok kişinin işine yarayacaktır... Umarım devamını da getirirsin...

17.06.2008 10:46    

ehya
Şuan diğer dersleri hazırlamaya çalışıyorum. Tabi aklımdaki komut anlamlarını kağıda dökebilirsem :)

17.06.2008 11:44    

SENDUR
1 sene bu bu programını dersini verdiler okulda bize tam 3 sene sonunda geçtim onuda kopya ile :). okulda iken bu programı veren hocaya ( hüdayim başak) çok hiç iyi bakmazdık. bi program öğrenmiş gelmiş onuda yarım yamalak öğrenmiş gelmiş bize anlatıp anlatıp geçiyor diye çok kızardık. ama şimdi zamanın olsa sıfırdan başlar öğrenirim.

17.06.2008 16:02    

miyatu
bu çalışmaya başlaman beni çok sevindirdi inş. devamıda gelir...

TEŞEKKÜRLER...

18.06.2008 09:25    

tekir06
usta sağolasın.Merak ediyordum.Çok faydalı olacak

21.09.2008 10:03    

mechanicaleng
ellerine sağlık güzel bir çalışma yapmışsın üstad.

11.07.2009 12:57    

hozbelen
Eyvallah üstad yardımların için teşekkürler. Takıldığımız yerlerde rahatsız ederiz.

11.07.2009 17:07    

No_Remorse
ehya güzel bir çalışma olmuş devamını bekliyoruz...
iyi çalışmalar...

11.07.2009 21:59    

ehya
:) Arkadaşlar devamını beklemeyin. Çünkü devamını çoktan hazırlayıp, sitede e-kitap olarak yayına sundum. Ana sayfada "Yeni forum konuları" nın altında linkini görebilirsiniz.

13.07.2009 09:09    

sahin460
ellerine sağlık güzel çalışma olmuş.

12.09.2009 09:37    

smt.sahin
paylaşım için teşekkürler arkadasım.

28.09.2009 14:21    

elektrikci123
teşekkür ederiz

29.09.2009 19:53    

sahin25
emeğinize sağlık!

23.03.2013 20:00    

eksenyapi
iyi akşamlar burdan bi kaç tane lisp aldım ve cok işime yaradı

autocad çizimde herhangi bir ölçüyü seçtiğimde istediğim bir exel tablosunda her hangi bir kutuya kopyalayipirmiyim böyle bir lisp varmı hayat memat meselesi çok lazım şimdiden teşekkürler

27.07.2015 14:28    

ersintora
(/ 160 (+ 32 (* 2 4))) Nasıl oluyor da sonuç 4 çıkıyor, benim devreler yandı.

27.07.2015 14:39    

ehya
ersintora




autolisp yorumlayıcı, parantezleri yorumlarken öncelikle en içtekinden başlar.

(* 2 4) = 8

sonra buna 32 eklemesi gerekir

(+ 32 8) = 40

en son aşama 160'a bölmek kalıyor.

(/ 160 40) = 4

28.07.2015 05:57    

ersintora
Yok hocam o kısmı anladım orda sıkıntı yok 40 ı 160 böldüm.. :(

> 1 <
Copyright © 2004-2022 SQL: 1.552 saniye - Sorgu: 93 - Ortalama: 0.01668 saniye