autolisp de nasıl index numarası veririz
örneğin
isim değişkenine,
(setq isim(j) (getint "isim giriniz"))
dedikten sonra
(print isim(2) ) deyip girilen 2. ismi yazmasını istiyorum bunu nasıl basarırım.
Örneğin
(setq i 1)
(while (<= i xaa)
(setq xaag (getint "Aks aralığını giriniz"))
(setq i (1+ i ))
)
komutunda "xaa" değişkeni daha önce girilen değere göre oluşturulmuş olsun ve örneğin değeri 5 olsun "xaag" değişkenine değer girerken programın girilen 5 değeri de kaydederek ileride kullanabilmesini istiyorum.
dediğiniz gibi autolisp i yeni öğreniyorum diğer programlarda bu indis girilerek mümkün acaba lisp de nasıl gerçekleştiririm?
Değerleri saklamak için while döngüsünden önce boş bir liste hazırlamalı ve while içinde değer girildikten sonra bu değeri listeye eklemelisiniz.
Bu şekilde girilen değerler while döngüsü bitince liste olarak saklanır.
İşlem bitince while döngüsünden sonra liste ters çevrilerek ilk değerin başa gelmesi sağlanabilir.
Aşağıdaki kod'da değerler liste adlı değişkende saklandı.
Kod:
(setq i 1)
(setq liste '())
(while (<= i xaa)
(setq xaag (getint "Aks aralığını giriniz"))
(setq liste (cons xaag liste))
(setq i (1+ i ))
)
(setq liste (reverse liste))
Örneğin bu elemanları getpoint komutuyla ilk noktayı belirleyip bu noktayla girilen değeri toplayıp yeni noktalar oluşturmak istiyorum. noktaları çizmek için gerekli komutları biliyorum. benim sorum sadece liste oluşturulduktan sonra girilen elemanları cağırmak için ne yapmalıyız?
Length komutu ile listedeki eleman sayisi ogrenilir.
Bu sayi kadar iister while ile ister repeat ile donguye sokulabilir.
Bir listedeki istenilen elemani ogrenmek icin nth komutu kullanilir.
(nth 0 liste)
bu komut litenin ilk elemanini verir. Sifir sayisi arttirilarak diger elemanlar ogrenilebilir.