1372826956:AAFe2Py65GSQkfGiRnXuOQ-eD9yXcwMv988

AutoLİSP NUTSHELL Fonksiyonları [SET & SETQ]

AutoLISP’de bir sembol için bir değer oluşturma işlemi atama olarak adlandırılır. Atama yapmak için ortak yöntem SETQ fonksiyonunu kullanmaktır. Atama, ikinci argümanının değerini, bir simge olması gereken argümanının birinci değeri haline gelmesine neden olur. Sembol, örtük olarak bildirilen bir sözcük olan değişkendir.

SET fonksiyonu, SETQ fonksiyonunun yaptığı gibi ilk argümanı değerlendirmenin haricinde SETQ fonksiyonu gibidir. Bu nedenle, birinci argüman, dinamik bir değişkenin (değeri dinamik olarak oluşturulan değişken) değeri olarak değerlendirilmelidir. Diğer fark, SET fonksiyonu yalnızca iki argüman almasıdır.

Aşağıdaki atamaları inceleyin:

 (setq a var)     a sembolünü var olarak ayarlar. var sembolü tanımlı değildir.

(set a 2)   a sembolünün değerini değerlendirir ve bu değerlendirmenin sonucunu 2 olarak ayarlar.

(princ var)  2 olarak geri döner. var sembolü artık tanımlanmış ve 2 olarak ayarlanmıştır.

SET fonksiyonunu kullanarak atama yapmanın ortak kullanımı; simgeleri çalışma anında tanımlamaktır ve öğe sayısı önceden bilinmiyorsa, bazen liste oluşturma yönteminden daha etkilidir. Bunun bir örneği olarak, aşağıdaki lisp rutini değişken sayıda nokta alır; bu noktaları Y koordinatlarına göre sıralar ve sıralanmış noktaları kullanarak bir çizgi çizer.

(defun c:test ( / j lpt symb)

(setq j 1)

(while (set (read (strcat “point_” (itoa j)))

(getpoint “\nNokta : “)

)

(setq j (1+ j))

)

; Son nokta boş tur “nil”.

(setq j (1- j))

;Noktaları sıralar. Aşağıdaki ” sortpoints” fonksiyonuna bakın.

(sortpoints j)

;(command “_line”) fonksiyonuna aktarılacak noktalar listesini hazırlama

(setq lpt (list “”))

;Listeyi oluşturma ve;sembolleri anında boş “nil” olarak ayarlama

(while (> j 0)(setq

         symb (read (strcat “point_” (itoa j)))

         lpt (cons (eval symb) lpt))

(set symb nil)(setq j (1- j)))

; çizgiyi çizme(command “_line”)(mapcar ‘command lpt)

(princ)

)   

 

;Bu fonksiyon noktaları Y koordinatlarına göre sıralar.

(defun sortpoints (j / i cur_y prev_y cur_symb prev_symb point)(setq i 2)

(while (<= i j)

(setqcur_symb (read (strcat “point_” (itoa i)))

prev_symb (read (strcat “point_” (itoa (1- i))))

cur_y (cadr (eval cur_symb))

prev_y (cadr (eval prev_symb))

)

(if (> cur_y prev_y)(progn

(setq   point (eval prev_symb))

(set    prev_symb (eval cur_symb))

(set    cur_symb point)

(if (/= i 2) (setq i (1- i))))(setq i (1+ i))

)

)

Hakkında Sertan Türkan

AutoCAD Beyni

Bunu da Kontrol edin

2.1.3 – Bodrum Kat – İç Duvarlar

Bodrum katının dış ve iç duvarlarının son düzeni, aşağıdaki bodrum katının çiziminde gördüğünüz gibi olacaktır …

Bir cevap yazın

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