AutoCAD Günlüğü | » AutoLISP Dilinde Program Geliştirme ve Alt Programlar > AutoCAD, AutoLISP, AutoCAD Dersleri, Mekanik Tesisat, Bilgisayar, Yazılım, Özel Yazılım

AutoLISP Dilinde Program Geliştirme ve Alt Programlar


Yazar Prof. Dr. Günay Özmen
Mesleği İ.T.Ü. İnşaat Fakültesi
  Yapı Anabilim Dalı
  Bilsar Yön. Kurulu Bşk.
  Yazar

AutoLISP programlama dili, AutoCAD grafik tasarım programını geliştiren Autodesk firması tarafından yaratılmıştır. Genellikle “Yapay Zeka” tasarımcıları tarafından kullanılmakta olan LISP (List Processing - Liste İşleme) programlama dilinin bir alt grubunu oluşturan bu dil, hem normal bir programlama dilinin ögelerini içerir, hem de AutoCAD komutlarının kullanılmasına olanak sağlar. Böylece grafik tasarımların ve/veya çizimlerin, kullanıcıların istekleri doğrultusunda, otomatik ya da yarı otomatik olarak üretilebilmesi veya gerekli değişikliklerin global ve sistematik bir biçimde yapılması gerçekleştirilebilir. Uygulamada, basit birkaç AutoLISP programı kullanarak, AutoCAD etkinliğinin inanılmaz ölçüde arttırılabildiği gözlenmiştir. AutoLISP dilini etkin olarak kullanabilmek için AutoCAD komutlarının kullanımı hakkında yeterli bir bilgiye sahip olmak gereklidir. BASIC, FORTRAN, PASCAL ve C++ gibi programlama dilleri hakkında bilgi sahibi olmak zorunlu değildir. Ancak bu tür bilgi birikimleri olanların AutoLISP dilini daha etkin olarak kullanabildikleri de bir gerçektir.

Programlama İlkeleri

AutoLISP programlama dili, AutoCAD çizgisel tasarım programına yönelik bir dil olmakla birlikte, yüksek düzeydeki programlama dillerinin hemen tüm özellik ve olanaklarını içermektedir. Bu bakımdan AutoLISP ile program geliştirme sırasında da genel “Programlama İlkeleri”ne uymakta yarar vardır. Bu ilkeler ile ilgili olan ve uyulması gereken kurallar aşağıda sıralanmıştır:

  1. Programlamaya başlamadan önce problem kapsamlı ve ayrıntılı olarak tanımlanmalı ve tüm özel haller saptanmalıdır.
  2. Kodlamaya başlamak için acele etmemeli ve düşünmeye kodlamadan daha fazla zaman ayrılmalıdır.
  3. Dokümantasyon ihmal edilmemeli, program geliştirme çalışmalarının başından itibaren başlatılmalı ve geliştirme çalışmalarının her aşamasında sürdürülmelidir.
  4. Programlar okunaklı ve düzenli olarak kodlanmalıdır. (repeat….), (while…), (if…) ve (progn…) gibi program bloklarının içindeki fonksiyonlar (deyimler) ayrı satırlara ve içeri çekilerek yazılmalıdır. Farklı satırlarda açılıp kapanan parantezler aynı hizaya getirilmelidir.
  5. Program bölümlerinde yeterli sayıda ve anlamlı açıklamalar kullanılmalıdır.
  6. Değişken isimleri ne çok kısa, ne de çok uzun olmalı, değişkenin işlevini belirtecek biçimde ve anlamlı isimler seçilmelidir. Programlarda bir değişkene birden çok işlev yüklememeye dikkat edilmelidir.
  7. Küçük ve mantıksal program birimleri (alt programlar) düzenlemek tercih edilmelidir.
  8. Program parça parça ve ayrıntılı olarak test edilmelidir. Testlerde tüm özel hallerin göz önüne alınmasına dikkat edilmelidir.

Yukarıda 7. maddede belirtilen düzenleme konusu aşağıda ayrıca ayrıntılı olarak incelenecektir.

Program Çalıştırma

Geliştirilen programlar, Command satırından (load…) komutu ile veya çekme menüdeki Tools > Load Application… komutu ile AutoCAD ortamına yüklenir ve Command satırında ismi ile çağrılarak çalıştırılır. Bkz Erhan Toker: MAKALE.2 AutoLISP uygulamalarını otomatik yüklemek. Programların çalıştırılması sırasında çeşitli hatalar ortaya çıkabilir. Bunlardan en sık karşılaşılanları yükleme sırasında görülen;

error: malformed list on input

veya

error: extra right paren on input

mesajlarının belirlediği hatalardır. Bunlardan birincisi eksik kapama parantez(ler)inin, ikincisi ise fazla kapama parantez(ler)inin varlığını belirlemektedir.

Programın çalışması sırasında, geliştirme sırasında gözden kaçmış ya da önceden öngörülmemiş olan bazı durumlar ortaya çıkabilir ve hatalar oluşabilir. Hataların giderilmesi için, çok sayıda ve kapsamlı testler yapılması gerektiği yukarıda belirtilmişti. Unutmamak gerekir ki, özellikle büyükçe programlarda, programın kusursuz olduğunu kanıtlamak hemen hemen imkansız bir iştir. Bu bakımdan testleri olabildiğince kapsamlı tutmak gerekir. Programlarda yapılan her yeni düzenleme veya değişiklikten sonra, üşenmeden ve sabırla tüm testleri yinelemek gerekir.

Genellikle bu testler sırasında bazı ara değerler programda ek olarak

(print …)          veya        (princ …)

fonksiyonları kullanılarak elde edilebilir.

Programda kullanılmış olan bazı değişkenlerin değerlerini AutoCAD ortamında da elde etmek mümkündür. Bunun için Command alanında ! işareti kullanılır. Örneğin

Command: !A

yazılarak programda tanımlanmış olan A değişkeninin değeri, veya

Command: !P

yazılarak da P noktasına ait 3 koordinattan oluşan liste bastırılabilir. İstenirse, tüm AutoLISP fonksiyonları ile bunların birleşmesinden oluşan ifadeler de Command satırında kullanılabilir. Örneğin, PA ve PB programda tanımlanmış geçerli noktalar olmak koşuluyla:

Command: (setq BOY (distance PA PB))

yazılarak PA ve PB arasındaki uzaklık (BOY) elde edilebilir. Programların test aşamasında bu tür uygulamalar çok yararlı olmaktadır.

Alt Programlar

AutoLISP dilinde alt programlar (Kullanıcı tanımlı fonksiyonlar - User defined functions)

(defun isim ([argümanlar] [/ yerel değişkenler]) fonksiyonlar…)

olarak tanımlanır ve ana program içinde

(isim [argümanlar])

olarak kullanılır. Köşeli parantezlerin belirlediği gibi, argümanlar ve/veya yerel değişkenler kullanılmayabilir. Bu konuda ayrıntılı bilgi Orhan Toker - DERS 7: Kendi fonksiyonlarımızı tanımlamak ve fonksiyonları etkili kullanmak [4 Nisan 2006] tarafından verilmişti.

Genel olarak alt programlar ana program içinde birkaç kez yinelenmesi gereken belirli deyim (fonksiyon) veya deyim gruplarının bir kez yazılmasını gerçekleştirmek için kullanılmaktadır. Yineleme sırasında bazı değişkenlere farklı değerler vermek gerekebilir. Bu da alt programlarda argüman(lar) kullanarak gerçekleştirilir. Alt program kullanma sayesinde hem program daha düzenli ve anlaşılır hale gelmekte, hem de bellek ekonomisi sağlanmış olmaktadır. Ancak alt program kullanmanın yararları bununla sınırlı değildir. Alt programların yararlı işlevleri üç grupta toplanabilir:

  1. Ana program içinde birkaç kez yinelenmesi gereken belirli deyimlerin (fonksiyonların) veya deyim gruplarının bir kez yazılmasını gerçekleştirmek,
  2. Ana programı belirli mantıksal parçalara ayırarak yazımı, anlaşılmayı ve test işlemlerini kolaylaştırmak,
  3. Bağımsız “Genel Amaçlı” alt programlar düzenleyerek bunları çeşitli ana programlarda kullanmak.

Bu yazıda 1 ve 2 şıklarında belirtilen işlevler örnekler üzerinde açıklanacak ve bazı özellikler irdelenecektir. Genel amaçlı alt programlar ve bilgi alışverişi konuları ayrı bir yazıda ele alınacaktır.

Örnek : Kutu Açılımı

Şekil 1′de gösterilen dikdörtgenler prizması biçimindeki bir kutunun, değişken A, B ve H boyutları için, yüzey açılımının çizilmesi istenmektedir.

Fig.1
Şekil 1 : Kutu

Kutunun çizilmesi istenen açılımı Şekil 2′de gösterilmiştir.

Fig.2

Şekil 2 : Kutu açılımı

Giriş bilgileri A, B ve H boyutları ile çizim başlangıcını gösteren P1 noktasıdır. Şekil incelendiğinde, ardışık dikdörtgenlerin çizilmesi gerektiği ve ilk dikdörtgen dışındakilerin üç kenarlarının çizilmesinin yeterli olduğu anlaşılır. Altı kez yinelenmesi gereken bu işlem bir alt program yardımı ile kolayca gerçekleştirilebilir. Alt programı oluşturmakta kullanılan üç kollu dikdörtgenin çizim düzeni Şekil 3′de gösterilmiştir.

Fig.3
Şekil 3 : Genelleştirilmiş üç kollu dikdörtgen

Çizimin başlangıcını belirleyen PA noktası ile değişik değerler alabilen DA ve DB boyutları argüman olarak kullanılacaktır. Ayrıca genelleştirmeyi sağlamak için, ALF açısı da argüman olarak seçilmiştir. Alt program aşağıdaki gibi düzenlenmiştir.

Fig.4
Şekil.4

Görüldüğü gibi, argümanlar kullanılarak PB, PC ve PD noktaları elde edilmekte, daha sonra dikdörtgenin üç kolu çizilmektedir. Bu hazırlık çalışmasından sonra, ana program aşağıda gösterildiği gibi düzenlenebilir.

Fig.5
Şekil.5

Görüldüğü gibi, giriş bilgileri okunduktan sonra (uckol…) alt programı ardışık olarak altı kez çağırılıp çizim oluşturulmaktadır. Alt programın çeşitli uygulamalarında aşağıdaki özellikler göz önüne alınmaktadır:

  • İlk çağırmadan sonra PC noktası P2 olarak saklanmaktadır. Bu nokta aşağıdaki

(uckol  P2  B  A  (/  pi  2))

deyiminde üst kapağın çizimi için başlangıç noktası olarak kullanılmaktadır, (Şekil 2).

  • İlk çağırmadan sonra P1-PD arasına sol kenar çizilmektedir.
  • Yan yüzlerin ardışık çizimlerinde, bir önceki çizimde oluşturulan sağ alt köşe (PB) noktası bir sonraki çizimde PA argümanı olarak kullanılmaktadır.
  • Tüm yan yüzlerin oluşturulmasında ALF açısı 0.0 olarak alınmıştır.
  • Üst ve alt yüzlerin çizilmesinde ise ALF açısı, sırası ile, π/2 ve -π/2 olarak kullanılmaktadır.

UCKOL.LSP ve KUTU.LSP programları bağımsız olarak yazılıp ayrı kütükler halinde saklanabilir. AutoCAD ortamında her iki kütüğün yüklenmesi ve daha sonra Command satırında:

Command: kutu

yazılması gerekir. Ancak uygulamada bu tür “Özel amaçlı” alt programların ana program ile aynı LSP kütüğüne yazılması daha pratik olmaktadır. Bu durumda sadece bir LSP kütüğünün yüklenmesi yeterli olur.

Yerel ve Global Değişkenler

Yukarıda belirtildiği gibi, ana programdan alt programlara bilgi aktarılması argümanlar aracılığı ile gerçekleştirilir. Özel bazı durumlarda, ana programda ve alt programlarda üretilen bazı global değişkenler de bilgi aktarmada kullanılabilir.

İlke olarak, alt programların sadece son satırında üretilen değer ana programa aktarılır. Bu değer atom veya liste olabilir. Ancak, özel durumlarda alt programın son satırı herhangi bir değer üretmeyebilir. Yukarıdaki örnekte de son satırda

(command “line” PA PB PC PD “”)

fonksiyonu kullanılarak doğru parçaları çizilmiştir. Buna karşılık alt programda üretilen PB, PC ve PD noktalarının ana programda çeşitli yerlerde kullanılmaları gerekmektedir. Bunu sağlamak için de söz konusu noktalar yerel (local) değil, global değişkenler olarak seçilmişlerdir. Sonuç olarak, alt programlarda üretilen ve ana programlarda kullanılması gereken değişkenlerin de global olmaları gerektiği söylenebilir.

Mantıksal Birimler Olarak Alt Programlar

Yukarıda “Programlama İlkeleri” bölümünde belirtildiği gibi, özellikle büyükçe programların geliştirilmesi sırasında

  • Küçük ve mantıksal program birimleri düzenlenmelidir.
  • Program parça parça ve ayrıntılı olarak test edilmelidir.

Uygulamada bu ilkeleri gerçekleştirmek için bir dizi alt program düzenlenir. Bu alt programlar genellikle argümansız olurlar ve bilgi alışverişi global değişkenler yardımı ile sağlanır. Örneğin 860 satırdan oluşan bir parametrik tasarım programı aşağıda gösterildiği gibi düzenlenmiştir.

Fig.6
Şekil.6

Bu ana programda kullanılan alt programların ayrıntıları burada gösterilmeyecektir. Özetle, giriş bilgisi olarak kolon boyutları, boyuna demir çapları, etriye çap ve aralıkları okunmakta, daha sonra görünüş ve kesitler çizilip demir açılımları düzenlenmektedir. Son olarak da tüm donatıların metrajı çıkarılmaktadır. Alt programlar arasında bilgi alışverişi global değişkenler aracılığı ile sağlanmaktadır.

Benzer Yazılar

1 Star2 Stars3 Stars4 Stars5 Stars (4 votes, average: 5 out of 5)
Loading ... Loading ...

Yorum bırak