Salı
AutoLISPAutoLISP Uygulamalarını Otomatik Yüklemek
|
| 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.
Şimdiye kadar 5,593 kere okunmus. Bu hafta: 29 Bu gun: 2 En son: 3 July 2009, 22:47Yazı Etiketleri:
İLGİLİ YAZILAR
POPÜLER
- Beyin kanaması
07/02/2009 10:48 pm
96 Comments - AutoCAD Günlüğü’ne Sorun: Hangi Notebook’u Almalı?
07/02/2009 10:22 am
8 Comments - Başarılı olmanın sırları 1: Planlı olun.
07/02/2009 08:48 am
24 Comments - UCS’yi anlamak 1
07/02/2009 08:33 am
6 Comments - AutoCAD’de Ölçek Kavramı ve Birimleri Anlamak
07/02/2009 12:59 am
57 Comments
ÖNERİLENLER
- Mobilya seçerken dikkat edilmesi gereken püf noktaları
- 3DS Max İle Gerçek Görünümlü Bulut Yapımı
- Halılar hakkında küçük ipuçları
- Gardıropları etkili kullanma yöntemi
- 25 Farklı 3D Tasarım Programı
- Antre mobilyası hakkında bilgi
EN SEVİLENLER
- Atatürk’ün Dış Siyaset Üzerine Sözleri




(5 oy 5.00) - AutoCAD’de Ölçek Kavramı ve Birimleri Anlamak




(4 oy 5.00) - Farenizin Sağ Tuşunu Daha Etkili Kullanın!




(4 oy 5.00) - “Generic Host Process for Win32 Service” Hatası!




(2 oy 5.00) - Autocad 2007′ye ilk Türkçe kitap Gökalp Baykal’dan




(2 oy 5.00)


Haz 27, 2006
Yanıtla
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.
Haz 27, 2006
Yanıtla
Hocam tabi burada XXX hem dosyanın ismi hem de komutun ismi anladığım kadarı ile. Elleriniz sağlık.
Mar 26, 2007
Yanıtla
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.
Mar 27, 2007
Yanıtla
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.
May 7, 2007
Yanıtla
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
Haz 5, 2007
Yanıtla
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…
Haz 4, 2008
Yanıtla
bılgısayarıma mobılya cizimi yuklemek istiyorum
,
Tem 6, 2008
Yanıtla
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.
Oca 27, 2009
Yanıtla
lisp konusuna daha hakim olma yolunda ilerliyorum…
emeğinize sağlık hocam
Nis 2, 2009
Yanıtla
Ne kadar teşekkür etsem azdır ellerine sağlık çok teşekkür ediyorum…