




































































































































































































































- aLd Fonksiyonu
- TCad Metraj
- FacadeCAD
- Cephe Kot
- HQ Library
- FreeMUST
- ALS/Pasdoc.A
- Excele Tablo Aktaran Lisp
- Nokta Koordinat Tablosu
- Plana İç Ölçü Verme
- Toplam Alanı Yazan Lisp
- Alan ve Çevre Yazan Lisp
- Koordinat, Alan ve Çevre Tablo Halinde Yazma
- AutoCAD'de Nokta Dökümü
- Hava Kanalı Metraj Fonksiyonu
- Boru Metrajı Fonksiyonu
- OptiCAD
- Özel Çizgi Tipi Oluşturmak
- AutoCAD te Koni Açılımı Nasıl Yapılır?
- PolyLine & Point Objelerinden Aplikasyon Çizelgesi
- Z değerini sıfırlama
- AutoCAD te Polyline üzerine uzunluk yazdırma
- Sıralı numaralandırma
- Yazı içindeki sayıları toplama
- Karmaşık Path ile Loft Uygulaması
- Çoklu Fillet Fonksiyonu
Ölçekli Türk Bayrağı çizen lisp
2) AutoLisp dosyalarının yapısı
admin - 13.10.2004 16:39
Bir LISP dosyası içinde tüm fonksiyonlar bir sol parantez " ( " ile başlar ve bir sağ parantez " )" ile biter. Parantezler kuralına uyuldukça bir fonksiyon içinde başka alt fonksiyonlar da bulunabilir. AutoLISP dosyalarının ilk satırları daima (defun ifadesiyle başlar. Bu AutoLISP'in en temel fonksiyonudur. Defun fonksiyonu kullanılmadan AutoLISP programı yazılamaz. AutoLISP, fonksiyonların veya değişkenlerinin yazılması veya derlenmesi sırasında büyük küçük harf ayrımı yapmaz.
Örnek:
(defun fonk.adı ( )
(sub.fonk1 (sub.fonk2))
) ; parantez sayısına dikkat ediniz.
Yukandaki örnekte görüldüğü gibi fonksiyon (defun ile başlamıştır. Sub.fonk olarak tanımlanan fonksiyonlar ana fonksiyon içinde kullanılan ve işlemleri yapan alt fonksiyonlardır. Bu alt fonksiyonlar genellikle, standart LISP fonksiyonları veya kullanıcıların tanımladığı fonksiyonlardır. Daha önce de belirtildiği gibi LISP dosyalarında dikkat edilmesi gereken en önemli hususlardan bir tanesi parantezlerdir. Özetle diyebilirim ki AutoLISP dosyasında "AÇILMIŞ OLAN PARANTEZ KADAR PARANTEZİN PROGRAM AKIŞINA GÖRE UYGUN YERLERDE KAPATILMASI ZORUNLUDUR."
Yazılan AutoLISP dosyaları AutoCAD ortamına çağrıldığında (bu işlem daha sonra detaylı olarak anlatılacaktır) daha önce de belirtildiği gibi AutoLISP tarafından değerlendirneye alınır. Bu değerlendirme dosya AutoCAD ortamında çalıştırılmaya başlanmadan hemen önce yapılır. AutoLISP değerlendiricisine EVULATOR adı verilir. Değerlendirme esnasında ekranda Command: alanında ; n> ifadesi görülürse (n bir tamsayıdır) n kadar sağ parantezin eksik olduğu anlaşılır.Yani açılan sol parantezler içinde n tanesi sağ parantez kullanılarak kapatılmamıştır. Bu hatayı düzeltebilmek için LISP dosyanıza dönerek n tane sağ parantezi uygun yerlere koymanız gerekir.
Bazen programın başında açılmış olan bir sol parantez programın sonlarına doğru kapatılabilir (Yukarıdaki örnekte olduğu gibi). Tabii ki bu parantezlerin yeri fonksiyonun işlevi ile bağlantılıdır.Fonksiyonlar içindeki ifadeler birden fazla satıra taşabilir ;
(prompt "BU YAZI BIR SATIRDAN FAZLA OLDUĞU İÇİN İKİNCİ SATIRA DA DEVAM EDEBİLİR. ÖNEMLİ OLAN AÇILMIŞ SOL PARANTEZLERİN SAĞ PARANTEZLER İLE KAPATILMASIDIR" )
Defun fonksiyonu ile program yazımına başlandıktan hemen sonra bu fonksiyon bir sağ parantez ile kapatılmaz. (defun ile başlayan ve ardından fonksiyon adının yazıldığı bu fonksiyon içinde, yapılacak işlemleri tanımlayan alt fonksiyonlar yer alır.
Örnek:
(defun toplama ( )
(setq A (getint "BİRİNCİ SAYIYI GİRİNİZ :" ))
(setq B (getint "İKİNCİ SAYIYI GİRİNİZ :" ))
(setq C (+ A B))
princ "nSONUÇ : " )
(princ C)
(princ)
Yukarıdaki örnekte ilk satır fonksiyonun başlangıç satırıdır. İkinci satır ile kullanıcıdan bir sayı girmesi istenir. Girilecek sayı tamsayıdır. Bu sayı A değişkenine atanır. Üçüncü satırda ikinci tamsayı istenir. Bu sayıda B değişkenine atanır. Dördüncü satırda ise girilmiş olan iki tamsayı toplama işlemine sokulur ve sonuç C değişkenine atanır. Beşinci satırda belirtilmiş olan fonksiyon sayesinde üçüncü satırda elde edilmiş olan sonuç ekranın komut alanına yazdırılır. Son satırdaki parantez ile de ilk satırda açılmış olan parantez kapatılır. Bu örnekte AutoLISP'in standart fonksiyonlarından olan setq ve princ fonksiyonlarının nasıl kullanılabileceğini görmüş olduk.
Yazar: cizimokulu.com
İçerik:
Tag: autolisp dosyalarının yapısı, lisp, defun, prompt, setq

Mehmet Şahin Güvercin hocanın kitabını nasıl bulabilirim. Çok aradim ama yok. Lütfen yardım

bana su şekilde bi lips lazım kod. işareti olcak kendim kot vercem sonra tıkladıkca yukseklige gore ilk verdiğim koda ekleyerek sayı yukselecek.yardımcı olurmusunuz acil mesaj atarmısınız

(defun c:toplama()
(setq A(getint " Birinci sayıyı giriniz : "))
(setq B(getint " İkinci sayıyı giriniz : "))
(setq C (+ A B))
(princ " Sonuç : ")
(princ C)
(princ))
ile kod çalışır

ehya ilgin için teşekküler.
(defun toplama()
(seqA (getint (“BİRİNCİ SAYIYI GİRİNİZ:”))
(seqB (getint (“İKİNCİ SAYIYI GİRİNİZ:”))
(seqC (+A B))
(princ (“nSONUÇ : ”))
(princ C)
(princ))
yazdım lispi yükledim.
komut satırına yolama yazdım.
Unknown command "TOPLAMA". Press F1 for help.
uyarısı aldım. hatam nerede....

yukarıdaki örnekte herhangi bir kodlama hatası yok..
lisp kod'unda " işareti unutsanız çalışmayacaktır. Bu konuda dikkat etmelisiniz.

anlatımınız gerçekten iyi bana göre, çalışarak anlamak kitap okumaktan kolay geliyor, ama yukarıda yazdığınızda eksik var bu şekilde yazdığınızda sonucu göstermiyor.parantez yanlış yere konmuş şu şekilde çalıştırabilrsiniz
(defun toplama ( )
(setq A (getint "BİRİNCİ SAYIYI GİRİNİZ :" ))
(setq B (getint "İKİNCİ SAYIYI GİRİNİZ :" ))
(setq C (+ A B))
(princ "SONUÇ : " )
(princ C)
(princ))
yükledikten sonra command: satırına (toplama) yazmanız yeterli
ama komutu parantez içinde yazmak istemiyorsanız küçük bir değişiklik yapın
(defun c:toplama ( )
(setq A (getint "BİRİNCİ SAYIYI GİRİNİZ :" ))
(setq B (getint "İKİNCİ SAYIYI GİRİNİZ :" ))
(setq C (+ A B))
(princ "SONUÇ : " )
(princ C)
(princ))
command: satırına toplama yazarak lisp dosyasını çalıştırabilirsiniz.
Akif BIYIK