1372826956:AAFe2Py65GSQkfGiRnXuOQ-eD9yXcwMv988

AutoLisp Öğreticisi #1- Autolisp’te Fonksiyonları Yaratma ve Kullanma

Autolisp Fonksiyonu Nedir?

Bir fonksiyon, sizin oluşturduğunuz ya da önceden oluşturulmuş bir “kara kutu” olarak düşünülebilir.

Autolisp’de mevcut bu kara kutular, belirli bir görevi gerçekleştiren bağımsız kod bloklarıdır. Fonksiyonlara verileri (bir sayı, zaman, tarih, metin, liste) şeklinde gönderebilirsiniz.

Sonrasında o fonksiyon ya hata verir ya da size bir cevap geri döndürür. Fonksiyonlar hesap makineleri gibi çalışır.

Veri girişleri üzerinde çok özel bir görevi yerine getirmek üzere önceden programlanmışlardır. Örneğin, bir sayı listesini alan ve bu sayıların ortalamasını veren bir fonksiyonu kolayca yazabiliriz.
Fonksiyonlar Niçin Önemlidir?

İşlevler anlamak ve kullanmak için hayati önem taşırlar; çünkü programlarınızı organize ederler ve sıkıştırırlar.

En önemli özellikleri yeniden kullanılabilir olmalıdır. Örneğin, şayet setlerinin her biri farklı olan, on farklı sayı setinin ortalamasını bulan bir program yazıyorsanız, ana metin içindeki sayıların on kez ortalamasını almak için kodu yeniden yazmak yerine, listelere ait sayıları sayan ortalama olarak isimlendireceğimiz bir fonksiyon yazabilir ve on listeden her birisini tek bir ortalama fonksiyon kodu bloğuna indirgeyerek,  kod yazma miktarını önemli ölçüde azaltabiliriz.

Fonksiyonları kullanmanın diğer avantajı, ortalama gibi bir fonksiyon yarattığınızda ve program kodunun işe yaradığını ispatladığınızda, fonksiyonun dahili olarak nasıl çalıştığını unutabilir ve fonksiyonu dilediğimiz kadar kullanabilmemizdir. Bu tür fonksiyonları kütüphanelerde depolamak da akıllıca olacaktır; böylece ihtiyacımız olduğunda onlara kolayca ulaşabiliriz.

Bir Fonksiyonu Nasıl Yaratabiliriz?

Bir fonksiyon yaratmak için “defun” fonksiyonunu çağırarak işe başlayın; ardından fonksiyonunuza bir isim verin. Bu Autolisp’de bir “komut” oluşturma gibidir; ancak burada c: ön ekini kullanmadığımıza dikkat edin.

“Defun” öncesi ve sonrası parantez içinki tüm kodlar fonksiyonun kendisini oluşturur.

Örneğin ortalama fonksiyonunu oluşturmak için şu şekilde başlıyoruz:

1 (defun ortalama (numlist)
2 ;Ortalamayı hesaplayan program kodu buradan başlar.
3 )  ;Burası fonksiyon tanımının sonudur.

Yalnızca referans olarak her bir satırın başında sayıları kullandığımızı unutmayın. Autolisp’te asla satır numaraları kullanmazsınız.
Satır 1, fonksiyon kodunu tanımlayan “defun” fonksiyonunu çağırırır. “Defun” ifadesinin ikinci parametresi,

fonksiyonu, çağırmak istediğiniz isimdir; örneğimizde biz ortalama ismini kullanacağız. Her şey geçerlidir,

Autolisp içerisinde zaten kullanılan fonksiyonların isimlerini veya önceden kullanılmış olan fonksiyon isimlerini kullanamazsınız. Yani her fonksiyona farklı bir isim vermelisiniz.

Tekrarlayacak olursak, defun kelimesi önündeki parantez ve örneğimizin 3. satırındaki parantezler

fonksiyon olan program kodunun kendine has blokunu içerir. Bu fonksiyon kod bloğunu

Autolisp dosyasının herhangi bir yerinde kullanabilirsiniz; ancak düzgün çalışmasını istiyorsanız, başka bir fonksiyonun içerisine yerleştirmeyin. Unutmayın, bu bağımsız bir birimdir.

Birinci (1) satırdaki üçüncü parametre “(numlist)”, ortalama isimli fonksiyona girdiğimiz verileri (örneğimizde ortalaması bulunacak sayıların listesini) ismini “numlist” olarak adlandırdığımız bir değişken aracılığıyla fonksiyona gönderir.

İkinci (2) satır, ortalamanın gerçek hesaplamasını yapmak için kullanacağımız kodun başlangıç noktasıdır.

numlist isimli değişkendeki değerlerin ortalamasını hesaplamak için gereken kod aşağıdaki gibidir:

1 (defun ortalama (numlist)

2 (setq n (length numlist))
3 (setq sum 0)
4 (setq k 0)
5 (repeat n

6 (setq sum (+ sum (nth k numlist)))
7 (setq k (+ k 1))

8 )
9 (setq avg (/ sum n))

10 )

İkinci satırda önce listedeki sayıların uzunluğunu “n” değişkenine atadığımızı görebilirsiniz.

Autolisp’te hali hazırda bulunan length fonksiyonu, gönderilen listedeki öğelerin sayısını sayar ve sonra o sayıyı geri döndürür.

Satır 3 ve 4, “ sum ” ve “k” değişkenlerinin değerlerini sıfıra (0) ayarlar. Değişken “k“,

numlist” değişkenindeki bir sonraki öğeyi almak için kullanılır.

Listedeki sayıların ortalamasını, listede bulunan sayıların toplamını, içindeki öğelerin sayısına bölünerek hesaplarız.

Buraya kadar, sayıların bir listesini yapacak fonksiyonu yarattık. Oldukça kolay değil mi?

İç kodun son satırı (örneğimizde 6. satır) fonksiyonun son bularak döngüden dışarı çıktığını veya bir cevap geri döndürdüğünü belirtmesi açısından önemlidir.

Bir Fonksiyonu Nasıl Kullanabiliriz?

Artık bir fonksiyon yarattık ve bu fonksiyonun bizim için çalışmaya başlamasının zamanı geldi. Önce saymak istediğimiz sayıların bir listesini oluşturmalıyız.

. Örneğin, varsayalım ki,

Bir su temizleme cihazı pazarlamacısı arkadaşımız haftanın 5 günü satış yapmaya gitti ve her gün sattığı cihaz sayısını biliyoruz. Böylece her biri beş günlük verilere sahip oluruz.

Komut satırına aşsğıdaki kodu yazın:

Command: (setq satis (list 4 6 2 7 6))

Şimdi, üzerinde su temizleme cihazı satış adedi verilerini topladığınız “satis” adlı bir liste değişkeni tanımladık.

Ortalamayı bulmak için, sadece ortalama fonksiyonunu çağırın ve “ satis ” değişkeni listesini aşağıdaki gibi fonksiyona gönderin.

Command: (ortalama satis)

Bu, pazarlamacının günde ortalama 5 adet su soğutucusu sattığı anlamına gelen 5.0 değerini döndürür.

Bir Fonksiyonu Autolisp Programında Nasıl Kullanabiliriz?

Basit. Fonksiyonun sonuçlarını bir değişkene bildirmek haricinde fonksiyonu, komut isteminde yaptığınız gibi çağırırsınız; Aşağıdaki örnek, yukarıda yaptığımız şeyin sadece Autolisp kodunu kullanarak nasıl yapılacağını göstermektedir:

2  (defun c:go ()
2 (setq satis (list 4 6 2 7 6))
3 (setq avg_satis (ortalama satis))
4 (princ (strcat “\nAverage satis to cooler: ” (rtos avg_satis)))
5 (princ)
6 )
7
8 (defun ortalama (numlist / n k sum avg)
9 (setq n (length numlist))
10 (setq sum 0)
11 (setq k 0)
12 (repeat n
13 (setq sum (+ sum (nth k numlist)))
14 (setq k (+ k 1))
15 )
16 (setq avg (/ sum n))
17 )

satis” değişkeninde bulunan listeyi “ortalama” fonksiyonuna gönderip; (“ortalama” fonksiyonun döndürdüğü şey olan) sonucu “avg_satis” isimli yeni değişkende saklayarak geri döndürür. Satır 3, “ortalama” fonksiyonu olarak adlandırdığımız yer olan fonksiyonumuzu çağırdığımız yerdir.

Fonksiyonlar ve Değişken Kavramı

8. satırdaki ortalama fonksiyonunun içine bir şey soktuğumu fark etmiş olabilirsiniz. Bunu, gelecekteki makalede anlatacağım; ancak “/ n k sum avg ” ifadesinin programın 8 satırına eklenmesinin tüm değişkenleri koruduğunu söylemek şimdilik yeterlidir.

Umarım bu ücretsiz eğitim, bir Autolisp fonksiyonunun ne olduğunu, nasıl oluşturulacağını ve nasıl kullanılacağını açıklığa kavuşturmanıza yardımcı olmuştur.

Şayet kafanız karıştı ve kodun tam haline ihtiyaç duyuyorsanız, Autolisp kodunu buraya tıklayarak indirebilirsiniz.

Hakkında Sertan Türkan

AutoCAD Beyni

Bunu da Kontrol edin

Revitte Referans Kesit Oluşturma

Revit’te mevcut bir görünüşe başvuran kesitleri yerleştirebilirsiniz. Referans kesitlerini plan, cephe, kesit, detay ve açıklama …

Bir cevap yazın

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Yardıma mı ihtiyacınız var? Chat with us
Bir görüşme başlatmak için lütfen önce gizlilik politikamızı kabul edin.