AutoLISP Uygulamalarını Otomatik Yüklemek
![]() |
Yazar | Erhan Toker |
| Mesleği | Y. Mimar İTÜ | |
| Autodesk Yetkili Danışmanı | ||
| web | Programcı | |
| SEVİYE |
: | İleri |
| VERSİYON |
: | AutoCAD(TM) 2002 - AutoCAD(TM) 2007 |
| İLGİLİ YAZILAR |
: | AutoLISP: Alet kutusu projesi -2- |
AutoLISP dosyalarının, AutoCAD (TM) ve çizimlerinizin her açılışında otomatik olarak yüklenmesi kullanıcılar için biraz zahmetlidir. Bu amaçla yazının konusunu AutoLISP dosyalarının otomatik olarak yüklenmesi olarak seçtim. Başlamadan önce bazı terimleri açıklamamız gerekecek:
Çok dokümanlı uygulama ( multi document interface ) : Microsoft Word (TM) ve EXCEL (TM) gibi bazı ofis programları ile oluşan birden çok dokümanı aynı program içinde açma mantığı AutoCAD’e 2000 versiyonundan sonra geldi. Bu sayede birinci çizimi kapatmadan başka çizimleri açmak için bir tane daha AutoCAD açmanıza gerek kalmadı. Buna çok dokümanlı arabirim deniliyor.
Uygulama düzeyi ( application level ) : Çok dokümanlı uygulamalarda, dokümanlardan bağımsız olarak en üstte çalışan uygulamalara denilir.
Dokuman düzeyi ( document level ) : Çok dokümanlı uygulamalarda, her doküman için ayrı yüklenen uygulamaların çalışma seviyesidir.
AutoLISP uygulama düzeyinde çalıştırılabilir bir program oluşturmaya izin vermez. Yani bir AutoLISP uygulamasını yüklediğinizde program sadece çalıştığınız çizim için geçerli olur. Çizimi kapatıp yeni bir çizim açtığınızda programı tekrar yüklemeniz gerekir.
Şimdi en baştan başlayarak AutoLISP dosyalarının çizime nasıl yüklendiğine bakalım: Herhangi bir LISP dosyasını çizime yüklemek için ( load … ) fonksiyonunu kullanırız. Örneğin ‘tal_utils.lsp‘ dosyasını yükleyelim:
Command : ( load “tal_utils.lsp” )
Bu şekilde dosyamızı çizimimize yüklemiş oluruz. Yalnız burada dikkat etmemiz gereken şey dosyamızın hangi dizinde durduğudur. Eğer dosyamız AutoCAD dizini altında durmuyorsa, durduğu yerin AutoCAD destek dizinleri listesine tanıtılması gerekir. Bu ayara ‘Tools/Options‘ menüsünden ulaşabilirsiniz ( Şekil 1 ).
Şekil 1 - AutoCAD destek dizini ayarları
Eğer yükleme dizinini bu ayarlara eklemek istemiyorsanız dosya yolunu tam olarak vermek zorundasınız. Bunu yaparken de ‘\‘ yerine ‘/‘ kullanmalısınız.
Command : ( load “c:/talia/lisp/tal_utils.lsp” )
Basitçe bir LISP dosyasını nasıl yüklediğimizi öğrendik. Ama her çizim açtığımızda bu işi yapmak zahmetli ve bu işin bir kolay yolu olmalı. AutoDESK firması da AutoCAD yazılımına otomatik yükleme için belirli mekanizmalar koymuş. Şimdi bu mekanizmaları birlikte inceleyelim:
1 – Otomatik yükleme:
AutoCAD’ de Kendinize ait LISP dosyaların otomatik yüklenmesi söz konusu değil. Ancak iki adet dosya var ki bunlar AutoCAD açıldığında ( acadXXXX.lsp ) ve her çizim açtığınızda ( acadXXXXdoc.lsp ) otomatik olarak yükleniyorlar. Biz de bu dosyaların içinde ( load … ) fonksiyonunu kullanarak kendi uygulamalarımızı yükleyebiliriz. Dosya isimlerindeki XXXX kullandığınız AutoCAD sürümünü gösteriyor. Yani AutoCAD 2007 için dosyalarımızın ismi acad2007.lsp ve acad2007doc.lsp olacak. acad2007.lsp dosyası AutoCAD açılırken bir kez yükleniyor ( uygulama düzeyi ); ancak acad2007doc.lsp dosyası her çizim için tekrar yükleniyor. Dolayısı ile eklentilerimizi bu dosya üzerinde yapacağız. Başlamadan önce dosyanın bir yedeğini almanızı öneririm. Dosyanın özgün halinin en alttaki son kısmı Şekil 2’deki gibidir.
Şekil 2 - acad2007doc.lsp dosyasının özgün hali
Biz eklemelerimizi ‘;; Silent load.‘ satırından öncesine yapacağız ( Şekil 3 ).
Şekil 3 - acad2007doc.lsp dosyasının düzenlenmiş hali
Evet artık programlarımız her çizim açılışında otomatik olarak yüklenecek.
2 – Menü ile birlikte yüklemek:
AutoCAD 2006’ ya kadar menü dosyalarının uzantısı MNU idi. Deneyimli AutoCAD kullanıcıları menü dosyalarının nasıl düzenlendiğini bilirler. AutoCAD 2006 ile birlikte komut butonları ve menülerin düzenlenmesi Windows(TM) standardına göre tekrar ele alındı ve yeni menü dosya uzantısı CUI ( Custom User Interface file ) oldu. Her iki durumda da kullanıcı kendi menüsünü geliştirebiliyor ya da standart AutoCAD menüsüne eklenti yapabiliyor. Eğer kendi menünüzü geliştiriyorsanız kendi verdiğiniz bir ismi örneğin TALIA.MNU veya TALIA.CUI, ya da AutoCAD’in menüsüne eklenti yapıyorsanız ACAD.MNU veya ACAD.CUI ismini kullanıyorsunuz demektir. Ben bu yazıda kendi menümüzü kullandığımızı ve çizime menümüzü doğru olarak yüklediğimizi varsayıyorum. Menü dosyaları da doküman bazlıdır ve bir kez yüklendiklerinde her çizimle birlikte tekrar yüklenirler. menü ismiyle aynı isimli ancak MNL uzantılı bir dosyayı ( talia.mnl ) menünüzle aynı dizine koyarsanız, AutoCAD bu dosyanın içine yazdığınız LISP fonksiyonlarını ve komutlarını menüyle birlikte otomatik olarak yükleyecektir. Şekil 3’te yazıldığı gibi bir satırı bahsettiğim dosyalardan birine eklerseniz LISP dosyalarınız otomatik olarak yüklenecektir.
3 – STARTUP SUITE
Şekil 4 - Uygulama yükleme ekranı
‘Tools/Load Application…‘ menüsünden Şekil 4’te gördüğünüz pencere açılacaktır. Bu pencerenin sağ alt köşesinde başlangıç paketi bulunmaktadır ( Şekil 5 ).
Şekil 5 - Başlangıç paketi içerik ekranı
Bu paketin içine koyduğunuz her uygulama ( LISP / ARX / DBX / NET ) otomatik olarak her çizime yüklenir.
4 – ( autoload … ) fonksiyonu :
Otomatik yüklemeden biraz daha gelişmiş olarak, ihtiyaç halinde yükleme yapmak için kullanılan LISP fonksiyonudur. Bu fonksiyon ile çok yüklü LISP dosyalarının, ihtiyaç olmadıkça bellekte yer kaplamaması amaçlanmıştır.Bu fonksiyonu da gerek acad2007doc.lsp gerek talia.mnl dosyaları içerisinde aşağıdaki şekilde kullanabilirsiniz ( Şekil 6 ):
Şekil 6 - acad2007doc.lsp dosyasının düzenlenmiş hali
Bu tanımlama ile birlikte, çiziminizde ilk defa TTT ve ya PRF komutunu kullandığınızda ‘tal_utils.lsp‘ dosyası otomatik olarak yüklenecektir.
Benzer Yazılar



(6 votes, average: 4.33 out of 5)
27 June 2006, Tuesday 14:12
Sevgili Erhan,
Bu yazı çok yararlı. AutoLISP programını yoğun olarak kullananlar için büyük kolaylık. Ben de bu konuda 90’lı yıllarda “AutoLISP, Günter Scheuermann-Staehler, Carl Hanser Verlag, München, 1989” adlı Almanca bir kitaptan aldığım LO.LSP programını gönderiyorum.
(defun c:lo()
(setq F (getstring))
(load F)
(setq F (eval (read (strcat “c:” F))))
(F) (setq F nil)
)
AutoCAD ortamında
Command: lo XXX
yazılınca XXX.LSP programı otomatik olarak yükleniyor ve çalışmaya başlıyor. Doğal olarak senin yazındaki biçimde dizinleri ayarlamak gerekir.
Umarım ilginizi çeker. Başarılarınızın devamını dilerim.
27 June 2006, Tuesday 15:39
Hocam tabi burada XXX hem dosyanın ismi hem de komutun ismi anladığım kadarı ile. Elleriniz sağlık.
26 March 2007, Monday 16:20
Erhan bey merhabalar. İsmim Murat AYDIN. Üniversite 4. sınıf öğrencisiyim. Bitirme tezi olarak programcılıkla ilgili bir konu aldım. Autolisp ie ilgili hiç bir bilgim yok. Herhangi bir firmanın kataloğunda bulunan bir parçanın Autocad ortamında sipariş numarası veya belirli boyutları girilerek parçanın teknik resminin gelmesi isteniyor. Bu uygulamayı AUTOLİSP ile yapmak mümkün mü acaba? Yada hangi programı kullanmalıyım? Veya buna benzer bir bildiğiniz bir uygulama örnek olması amacıyla var mı? Bu maili nereye göndereceğimi bilemedim. Ondan buraya yazdım. Kusura bakmayın. Yardımlarınız için şimdiden teşekkürler.
27 March 2007, Tuesday 8:37
Bahsettiğiniz şey parametrik tasarıma giriyor. Teorik olarak AutoLISP ile bunu yapmak mümkün. Ancak yapacağınız iş çok ( binlerce ) tekrar eden çizim elemanı, veri tabanı bağlantısı, sistem kaynaklarına ulaşım gibi özellikler gerektiriyorsa elbette C# ya da C++ gerekebilir.
7 May 2007, Monday 18:44
Merhaba Erhan bey. Son zamanlarda lisp proğramına taktım.. Sizin Lisp derslerini de inceledim ama pek bilgim olmadığı için istediğimi yapamadım. yardımcı olabilirseniz memnun olurum. yapmak istediğim Area komutu gibi çalıştırıp alanı hesapladıktan sonra otomatik olarak hesaplanan alanı text ya da blok olarak yazdırmak istiyorum. ve alan değiştiğinde yazmış olduğu textin kendiliğinden değiştirmesi mümkün olur mu?.. yardımlarınız için şimdiden teşekkür ediyorum… saygılar
5 June 2007, Tuesday 10:31
Sayin hocam ben lisp kodlarıyla yazılmış olan bir towers of hanoi programını autocad de çalıştırmak istiyorum fakat bunu başaramadım. Yukarıda anlatıldığı gibi yolları takip ettiğim zaman xxx.lsp successfully loaded yazısı çıkmasına rağmen ekranda herhangi bir değişiklik olmuyor . bu sorunu gidermek için yardımlarınızı bekliyorum. Yardımlarınız için çok teşekkür ederim şimdiden. Saygılarımla…
4 June 2008, Wednesday 11:28
bılgısayarıma mobılya cizimi yuklemek istiyorum
,
6 July 2008, Sunday 15:27
cizimim plan duzleminde 2D gorunsede icerisinde 3D cizgiler var. Pek cok kez karsilasilan bir sorun. Bunu duzeltecek bir lisp yuklemeye calisiyorum ama 2008 LT de load menusu acilmiyor. Yuklemeye baslayamiyorum bile. Ciddi sekilde yardima ihtiyacim var. Suan cizgilere tek tek dokunup Z koordinatini sifirlayarak yol almaya calisacak kadar zor durumdayim. Simdiden tesekkurler.