Çizim Okulu
  • Forum
  • Download
  • Galeri
  • AboneOl
  • Üye Ol veya Giriş Yap

Bölüm indeksi
Makaleler
Sık Sorulan Sorular
Download
İzle Öğren
Eğitim Videoları
AutoCAD Videoları
3ds Max Videoları
AutoCAD Kursu Ders Videoları
AutoCAD Kursu 2 Boyut Dersleri
AutoCAD Kursu 3 Boyut Dersleri
Proje Dökümanları
Çizimler
Mimari Çizimler
Elektrik
Doğalgaz
Harita Çizimleri
Tesisat
Ferforje
Makine
3 Boyut
3ds Max
ArchiCAD
Solidworks
Diğer Çizimler
Lispler
Menüler
Fontlar
FreeMUST
Eğitim Dökümanları
Genel Kategori
Çizim Programları
IES Dökümanları
AutoCAD
AutoLISP
Konu Anlatımları
1) AutoLISP Nedir?
2) AutoLisp dos.
3) Lisp Dosyala.
Autolisp komutl.
Autolisp te tip.
entmake fonksiy.
entmake fonksiy.
entmake fonksiy.
entmake fonksiy.
entmake fonksiy.
Liste Fonksiyon.
entmake fonksiy.
Liste Fonksiyon.
entmake fonksiy.
Liste Fonksiyon.
Örnek Lispler
Sürümler
Menüler
DWF Dosyaları
Programlama
AutoCAD Püfleri
Eğitim
AutoCAD Eğitimi
Karma 3 Boyut Dersleri
Adım Adım AutoCAD Eğitimi
01.Bölüm
02.Bölüm
03.Bölüm
04.Bölüm
05.Bölüm
06.Bölüm
07.Bölüm
08.Bölüm
09.Bölüm
10.Bölüm
11.Bölüm
12.Bölüm
Uygulamalar
Adım Adım 3 Boyut Eğitimi
Kariyer
3ds Max
Attribute lar
AutoCAD Genel
  • AutoCAD
  • AutoLISP
  • AutoCAD Programlama
  • AutoCAD Püfleri-1
  • AutoCAD Püfleri-2
  • AutoCAD Komutları
  • AutoCAD Terimler Sözl.
AutoCAD Eğitimi
  • AutoCAD Eğitim Videoları
  • AutoCAD Eğitimi
  • AutoCAD Dersleri
  • AutoCAD Eğitim Notları
  • AutoCAD 3 Boyut Dersleri
3ds Max
  • 3ds Max Nedir?
  • 3ds Max Model ve Çizim
Özel Yazılımlar
  • 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
Program Ekle
Ziyaretçi: 354, Üye: 0

Detaylar »
> AutoLISP > Konu Anlatımları > 2) AutoLisp dosyalarının yapısı

2) AutoLisp dosyalarının yapısı


admin - 13.10.2004 16:39
AutoLISP Dosyalarının Yapısı:

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

Yorumlar :
akocak   01.04.2021 14:31 #16071  

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

yurtsan   16.09.2014 08:29 #15421  

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

egö   05.10.2010 08:09 #13326  

(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

katmerius   17.07.2010 14:41 #13105  

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....

ehya   17.07.2010 14:16 #13103  

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

katmerius   17.07.2010 14:06 #13102  

program daha test aşamasında bile hata veriyor. sorun nerde?

gölge   29.08.2008 12:44 #8967  

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

Copyright © 2004-2022 | Tüm Hakları Saklıdır | 2449 | Site haritası | İstatistikler | Hakkımızda | Kadromuz | Gizlilik | Reklam | İletişim
SQL: 0.035 saniye - Sorgu: 33 - Ortalama: 0.00105 saniye