AutoLİSP Programını Döngüleme

AutoLisp, (repeat) ve (while) olmak üzere 2 tür döngü kullanır.

Önce (repeat) döngüsüne bir göz atalım:

·          (repeat)

(repeat) döngüsü basit bir döngüsel yapıdır. Herhangi bir sayıda ifadeyi belirli sayıda yürütür. (Progn) fonksiyonunda olduğu gibi döngünün içerisindeki tüm ifadeler değerlendirilir; ancak bu değerlendirme her döngüde bir kez yapılır.

İşte basit bir örnek:

(defun c:loop ()

               (setq pt (getpoint “\nDöndürme Merkezi : “))

               (setq n  (getint “\nDöngü Sayısı : “))

               (repeat n(command “Rotate” “L” “” pt “20”)

)

(princ)

)

Şimdi, çizim alanının herhangi bir yerine bir çember çizin ve ardından rutini çalıştırın.

Çember kendi etrafında hareket etmelidir.

Döngü sayısını kontrol eden n değişkenin bir tam sayı olması gerektiğini unutmayın.

·         (while)

(While) döngüsü koşullu bir sınama dışında (repeat) döngüsü gibidir. (While) döngüsü koşul sıfır olana kadar bir dizi ifadeyi icra ederek döngüye devam edecektir. İşte bir örnek:

(defun c:loop1 ()

               (while

                               (setq pt (getpoint “\nBir nokta seçin : “))

                               (command “point” pt)

                               )

                               (princ)

 )

Bu örnekte, Enter tuşuna basana kadar noktaları tıklayarak seçmeye devam edersiniz.

(AutoLisp, Enter tuşuna basılmasını sıfır olarak algılar). Enter tuşuna bastığınızda döngü sonlandırılacaktır.

Başka bir örnek:

(defun c:loop2 ()

               (setq ptlist nil)

               (while

                               (setq pt (getpoint “\nBir nokta girin veya işiniz bittiğinde Enter tuşuna basın: “))

                               (setq ptlist (append ptlist (list pt)))

               )

(princ)

)

Bu örnek, nokta sormaya ve seçilen noktayı ptlist olarak adlandırılan bir nokta listesine eklemeye devam eder. Yeni noktayı ptlist listesi ile birleştirmek için (append) fonksiyonunu kullanır. Kullanıcı Enter tuşuna basar vurmaz döngü durur.

Rutini çalıştırın, birkaç nokta seçin ve ptlist listesinin değerini kontrol edin.

Uzun bir nokta listesi içermelidir.

while) fonksiyonu, program yinelemesi için de kullanılabilir.

Bu, bir döngü içinde hesaplanan bir veya daha fazla ifadenin sonuçları elde edilene kadar döngünün devam ettirileceği anlamına gelir. Yinelemenin yaygın bir kullanımı bir sayacı artırmaktır.

Şu örneğe bakın:

(defun c:loop3 ()

               (setq count 0)

               (while (< count 10)

                               (princ count)               (setq count (1+ count))

               )

(princ)

)

Aşağıdaki sonucu elde edersiniz :

012345678910

Şayet döngü sayısını biliyorsanız, (repeat) fonksiyonunu kullanın. Bu, (while) fonksiyonundan daha basittir.

İpucu: Hiç birAutoLisp rutininin otomatik olarak nasıl tekrarlanacağını merak ettiniz mi?

Tüm fonksiyonu veya alt fonksiyonu bir (while) döngüsü içine alın.

Bu yolla, fonksiyon Enter veya Esc tuşuna basılana kadar devam edecektir.

Şimdilik bu kadar yeter, beynim acıyor ……

Aslında sanırım Loop bara gidip 2 duble Chivas içeceğim.

Şerefe …

 

 

Hakkında Sertan Türkan

AutoCAD Beyni

Bunu da Kontrol edin

Revitte Tek Bir Çizim Çizgisi Kullanarak Eğimli Bir Yüzey Yaratma

Çizim modunda, eğimli bir yüzey oluşturmak için tek bir çizim çizgisinin özelliklerini düzenleyin. Bu yöntemi, …

Bir cevap yazın

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.