_

[LISP] warunek na nie wybrano bloku

Forum poświęcone flagowemu produktowi oraz aplikacjom pochodnym Autodesku. To jedyne forum mające w tytule nazwę programu, a to ze względu na jego olbrzymią popularność w Polsce. Można tutaj umieszczać również posty z ogólnie pojętej tematyki "Kreślarskie 2D".

[LISP] warunek na nie wybrano bloku

Postprzez wilda » maja 27, 2017 21:30

Pobieram wartość atrybutu z bloku, ale jeżeli kliknę obok bloku (nie wybiorę bloku) to chcę wartość wpisać ręcznie.
Jak to zapisać na poniższym przykładzie?
Kod: Zaznacz cały
(defun c:pobierzatrybut ()
(setq XYZ (atof (cd:BLK_GetAttValueVLA (car (entsel)) "ATR1")))
(alert (rtos XYZ))
)
wilda
 
Posty: 198
Dołączył(a): gru 18, 2007 21:41

Re: [LISP] warunek na nie wybrano bloku

Postprzez kojacek » maja 27, 2017 21:35

wilda napisał(a):Pobieram wartość atrybutu z bloku, ale jeżeli kliknę obok bloku (nie wybiorę bloku) to chcę wartość wpisać ręcznie.
Jak to zapisać na poniższym przykładzie?
Kod: Zaznacz cały
(defun c:pobierzatrybut ()
(setq XYZ (atof (cd:BLK_GetAttValueVLA (car (entsel)) "ATR1")))
(alert (rtos XYZ))
)


Wszystko źle. Jeżeli nie wybiorę bloku to nie wybiorę bloku. Nie ma innej możliwości. Rozjaśnij nieco o co chodzi.
Avatar użytkownika
kojacek
 
Posty: 5294
Dołączył(a): paź 03, 2005 20:17

Re: [LISP] warunek na nie wybrano bloku

Postprzez wilda » maja 27, 2017 21:59

Jeżeli na monit o wybór obiektu wybiorę blok to zmienna XYZ przyjmie wartość atrybutu, jeżeli
na monit o wybór obiektu kliknę w puste miejsce na rysunku to chcę wówczas podać ręcznie wartość zmiennej XYZ
wilda
 
Posty: 198
Dołączył(a): gru 18, 2007 21:41

Re: [LISP] warunek na nie wybrano bloku

Postprzez wilda » cze 13, 2017 12:52

Cała noc szukania, cały dzień prób ale w końcu się udało (pewnie można lepiej) i działa!
Kod: Zaznacz cały
(setq selection(car (entsel "\n Wybierz blok:")))
(if selection
   (progn
      (setq entlist(entget selection))
         (if(= "INSERT"(cdr(assoc 0 entlist)))                  
            (setq XYZ (atof (cd:BLK_GetAttValueVLA selection "ATR1")))
            (progn   ;jeżeli wybrano inny obiekt niż blok
            (alert "to nie blok")
            (setq XYZ (getreal "podaj XYZ"))
            )
         );if blok
   );progn
   (setq XYZ (getreal "podaj XYZ"))   ;jeżeli nic nie wybrano
);if selection
(alert (rtos XYZ))
wilda
 
Posty: 198
Dołączył(a): gru 18, 2007 21:41


Powrót do AutoCAD

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników