31.01.2021 11:51    

huseyinkus
Öncelikle merhabalar;

Herkese hayırlı pazarlar diliyorum. Autolispte array komutunun alternatifleri var mıdır? Varsa da nelerdir?

Benim yapmak istediğim bir nesneyi belirli bir yöne belirli bir adet ve aralık şeklinde çoğaltmak.

Örneğin ben command fonksiyonunu kullanıyordum. İlk önce:

Kod:

(setq sonsecim (ssget "l"))


ile son eklenen çizimi hafızaya alıyordum. Daha sonra:

Kod:

(command "array" sonsecim "" "R" 5 adet 0 aralik)


ile bu problemi çözüyordum.

Ancak entmake ile yaparken ekrana en son eklenen(CİRCLE) çizimini hafızaya almıyor. Bir sonraki nesneyi hafızaya alıyor(TEXT).

Bunun farklı alternatifleri var mıdır? Yardımcı olacaklara şimdiden teşekkür ediyorum.

Not: Ekrana eklenen bütün nesneler (entmake) fonksiyonuyla çizildi.

Saygılarımla.

31.01.2021 12:15    

alumina
Alıntı
huseyinkus :

Oncelikle, (ssget "l") yani "Last" adi ustunde eklenen son nesneyi isleme alir. Hem line hemde cicle nesnesinin isleme alinabilmesi icin ornek;
Kod:

(defun c:qw (/ ss p0)
  (if (setq ss (ssadd)
        p0 (getpoint "\nSpecify point:")) ; Bos secim seti olusturuldu
                                          ;   ve nokta gosterildi..
    (progn
      (setvar 'Cmdecho 0)
      (command "._Undo" "be")

      (entmake (list '(0 . "line") (cons 10 p0)
        (cons 11 (polar p0 0 100.))))

      (setq ss (ssadd (entlast) ss)) ; Line nesnesi (aktif cizime eklenen son nesne)
                                     ;   secim setine eklendi..

      (entmake (list '(0 . "circle") (cons 10 p0) '(40 . 10.)))

      (setq ss (ssadd (entlast) ss)) ; Circle nesnesi (eklenen son nesne circle oldu)
                                     ;   secim setine eklendi..

                                     ; Bu asamadan sonra ss isimli secim setindeki
                                     ;   nesnelerin tumune ayni anda islem yapilabilir..
      (command "._Undo" "e")
      (setvar 'Cmdecho 1)
    )
  ) (prin1)
)

ArrayPolar ve ArrayRectangular islemlerinin AutoLisp te karsiligi yoktur.
Bunun yerine VisualLisp teki "vla-ArrayPolar" ve "vla-ArrayRectangular" fonksiyonlarini inceleyebilirsiniz.

alumina (31.01.2021 12:28 GMT)

31.01.2021 12:28    

huseyinkus
Sağ olun. Tavsiyeniz içinde ayriyeten teşekkür ederim.

31.01.2021 19:32    

Travaci
Kod:

(entmake (list '(0 . "line") (cons 10 p0) (cons 11 (polar p0 0 100.))))

(entmake (list '(0 . "circle") (cons 10 p0) '(40 . 10.)))

(entlast) = Circle

(entnext) = Line

05.02.2021 20:15    

huseyinkus
Teşekkür ederim.

Alıntı
Travaci :
Kod:

(entmake (list '(0 . "line") (cons 10 p0) (cons 11 (polar p0 0 100.))))

(entmake (list '(0 . "circle") (cons 10 p0) '(40 . 10.)))

(entlast) = Circle

(entnext) = Line


> 1 <
Copyright © 2004-2022 SQL: 1.641 saniye - Sorgu: 54 - Ortalama: 0.0304 saniye