1372826956:AAFe2Py65GSQkfGiRnXuOQ-eD9yXcwMv988

AutoLISP Dersleri #2 – Autolisp Ortamı

sekil-01

AutoCAD’in komut satırına bir aç parantez “(“ sembolü girildiği zaman, AutoLISP çevirici ortamına girilir. AutoCAD aç parantez “(“ sembolünü gördüğü zaman, AutoLISP çeviricisini çalıştırır. Daha sonra çevirici aç parantez “(“ ve kapat parantez “)” sembolleri arasında bulunan komutları çalıştırır.

Veri Tipleri


AutoLISP’te üç temel veri tipi bulunmaktadır: Bunlar fonksiyonlar, semboller ve listelerdir.

Fonksiyon: her listedeki ilk öğedir. Listenin geri kalanı ilk öğe olarak tanımlanan fonksiyon için parametre veya argüman olarak kullanılır. Şayet listedeki ilk öğe bir fonksiyon değilse, kötü Fonksiyon “bad Function” şeklinde bir hata mesajı alırsınız.

Sembol: diğer programlama dillerinde bir değişkeni çağırma olarak adlandırılan işlemin AutoLISP’te karşılığıdır ve bu andan itibaren, bir değişkene “variable” atıfta bulunduğum zaman, aslında bir sembolden bahsettiğimi anlamalısınız. Bununla birlikte, bir sembol normal bir değişkenin saklayabileceğini sadece tek bir değerden çok daha fazlasını depolayabilir. Bir sembol bir liste veya bir fonksiyon tanımı içerebilir. Ayrıca sembol kendisine bağlanmış bir değere de sahiptir. Şayet kendisine bağlanmış bir değer yok ise, bu sembol boş “nil” sembol olarak adlandırılır. Bir programı sonlandıran veya bir hatayı tespit eden semboller haricindeki tüm semboller boş olarak ayarlanmalıdır.

Liste: sembol olmayan tüm her şeydir.

Hatalar


Şayet AutoLISP programı çalışırken bir hata meydana gelirse, işlemci en son fonksiyon ile başlayan satırın başlangıcına geri döner. Bu özellik hata ayıklama için çok kullanışlı bir özelliktir. Yazacağınız her AutoLISP programında kendi hata tespit edici kodunuzu da tanımlamalısınız.

Özel Karakterler


Tüm bilgisayar dillerinde olduğu gibi, AutoLISP’te de bazı koşullarda kullanılamayan bazı karakterler vardır.

  Sembol isimleri aşağıdaki karakterler hariç herhangi bir yazdırılabilir karakteri içerebilirler:

     ( ) . ‘ ” ;

  Bazı karakterler bir sembol ismini veya sayısal sabiti sonlandırırlar; bunlar aşağıdaki karakterlerdir:

( ) ‘ ” ;

  Eksi () işareti negatif tamsayıları veya reel sayıları belirtmek için, kullanılabilir.

  Artı (+) işaretinin pozitif tamsayıları veya reel sayıları belirtmek için kullanılması isteğe bağlıdır.

  Değiştirilmemesi gereken dizgeler çift tırnak (…..) işareti arasına girilirler. Çift tırnak (…..) işareti arasındaki ters bölü (\) karakteri kontrol karakterlerini girmek için kullanılabilir. Kontrol karakterleri aşağıda listelenmiştir:

  \\ normal tek bir ters bölü (\) karakterini verir.

  \” normal çift tırnak (“”) karakterini verir.

  \e ESC karakterini verir.

  \n yeni bir satır karakterini verir.

  \r satırbaşına dönüş karakterini verir.

  \t TAB karakterini verir.

  \nnn oktal kodu nnn olan karakteri verir.

Tek tırnak karakteri quote fonksiyonu yerine kullanılabilir; örneğin:

‘Sertan (quote sertan) ifadeleri eştirler.

LISP içerisindeki her açıklama noktalı virgül (;) karakteri ile başlamak zorundadır:

;Bu bir açıklamadır

Açıklamalar konusu ileride detayları ile anlatılacaktır.

LISP Çeviricileri


LISP işlemcisinin kalbi değerlendiricidir. Değerlendirici lisp kodunun bir satırını alır; o satırı değerlendirir ve bir sonuç geri döndürür. Değerlendirme aşağıdaki şekilde olur:

  Tam sayılar, reel sayılar, dizgeler, dosya belirleyiciler ve fonksiyonlar kendilerine değerlendirilir.

  Semboller o anki geçerli (aktif) değerlerine değerlendirilir.

  Listeler listenin birinci elemanına göre değerlendirilir.

  Şayet listenin birinci elemanı bir ön tanımlı AutoLISP fonksiyonu ise, listenin geri kalan elemanları ön tanımlı fonksiyona sokulurlar ve fonksiyon tarafından değerlendirilirler.

  Şayet listenin birinci elemanı bir listeye değerlendiriyorsa, liste bir fonksiyon tanımı olarak kabul edilir ve fonksiyon listenin geri kalan elemanları fonksiyonun argümanları olarak kullanılarak değerlendirilir.

Fonksiyonların ve değişkenlerin o anki geçerli (aktif) değerleri komut satırında ünlem işareti (!) kullanılarak elde edilebilir.  Şayet elde edilen değer bir fonksiyon ise, fonksiyonun tamamı akarak ekranda görüntülenecektir. Şayet elde edilen değer bir değişken ise, değişkenin o anki geçerli (aktif) değeri geri dönecektir. Bu bir nesnenin o anki geçerli (aktif) değerini kontrol ettiğiniz zaman, normaldir. Kodunuzu hatalar için kontrol ettiğiniz zaman, değişkenin o anki geçerli (aktif) değeri geri döndürülmesi değişkenlerinizin ne elde edeceklerini görmeniz açısından bazen faydalı olacaktır.

Komut Fonksiyonları


AutoLISP içerisinde kendi komut fonksiyonlarınızı yaratabilirsiniz. AutoLISP’te fonksiyonlar yaratmak için, DEFUN fonksiyonu kullanılır. Kendi fonksiyonunuzu yaratırken, yazım şekli aşağıdaki gibidir:

(defun c:Fonksiyon_ismi ( / )(bir şeyler yap))

Fonksiyon başına ve sonuna parantezler konmaksızın AutoCAD içerisinden çağırılabilir. “c:” ifadesi sabit diskinizle herhangi bir şey yapmayacak olup; bu ifade sadece LISP’in fonksiyonun komut satırında tanımlanan bir fonksiyon olması gerektiğini söylemektedir.

Lisp Kütüphaneleri


ACAD.LSP dosyasını kullanarak kendi lisp yordamları kütüphanenizi yaratabilirsiniz. Şayet sisteminizde bir ACAD.LSP dosyası mevcut değilse, bu dosyayı yaratabilir ve içerisine yordamlarınızı ekleyebilirsiniz. Şayet sisteminizde bir ACAD.LSP dosyası hali hazırda mevcutsa, yordamlarınızı bu dosyanın en sonuna ekleyebilir; böylece AutoCAD programını her çalıştırdığınızda yordamlarınızın yüklenmesini sağlayabilirsiniz.

Şayet bir çizime her girdiğiniz zaman, yapılacak belirli işlere sahipseniz, bu yapılacak işleri ACAD.LSP dosyası içerisine ekleyebilir ve ACAD.LSP dosyasının her yüklenişinde bunları otomatik olarak çalıştırabilirsiniz. Bunu yapmak için, “s::startup” fonksiyonu olarak adlandırılan fonksiyonunu çağıran bir fonksiyon tanımlamak zorundasınız. s::startup fonksiyonu ACAD.LSP dosyasının her yüklenişinde çalıştırılır. Her hangi bir lisp fonksiyonu komut satırına (load “lispismi”) yazılarak yüklenebilir. Komut parantezler içerisinde olmak zorunda olup; “.lsp” uzantısı eklenmesi gerekli değildir. Şayet lisp programınız programları yüklemiyorsa, yukarıdaki kuralları sırasıyla uyguladığınıza emin olun ve sonrasında aşağıdaki talimatları uygulayın.

AutoLISP CONFIG komutunda ayarlanmış olan destek dosya araştırma klasör yolunu “support file search path“ araştıracaktır. Şayet AutoCAD AutoLISP programınızı yazmış olduğunuz dosyayı destek dosya araştırma klasör yolunda “support file search path“ bulamazsa, programınızı yükleyemeyecek ve size dosyanın bulunamadığı mesajını verecek ve araştırılan tüm konumları listeleyecektir. Şayet AutoLISP programınızı yazmış olduğunuz dosya AutoCAD’in destek dosya araştırma klasör yolunda “support file search path“ değilse bile, LOAD komutunda AutoLISP’e dosyanızın tam klasör yolunu bildirerek programınızı yükleyebilirsiniz. Örneğin:

(load “c:/acad/sertan/myprog”)

Not: Yukarıdaki örnekte ters bölü (\) karakteri yerine normal bölü (/) karakteri kullandığıma dikkat edin. Çünkü şayet tek bir tane ters bölü (\) karakteri kullanırsanız, AutoLISP ters bölü (\) karakteri doğru olarak yorumlamayacaktır. Makalenin başlarında Özel Karakterler kısmında anlattıklarımı unutmayın. Ayrıca aşağıdaki örnekte görüldüğü üzere, şayet ters bölü (\) karakterini illa ki kullanmak istiyorsanız, doğru kullanım için iki adet ters bölü (\) karakteri yazmanız gerektiğini de unutmayın.

(load “c:\\acad\\sertan\\myprog”)

Hakkında Sertan Türkan

AutoCAD Beyni

Bunu da Kontrol edin

Revitte Altlıklar “Underlay” Hakkında

Revit’te koordinasyon ve inşaat için farklı kotlardaki bileşenlerin ilişkisini anlamanız gerektiğinde Altlıklar “Underlays” yararlıdırlar. Video: …

Bir cevap yazın

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Yardıma mı ihtiyacınız var? Chat with us
Bir görüşme başlatmak için lütfen önce gizlilik politikamızı kabul edin.