Strona 1 z 1

[LISP] wybór tekstu na warstwie

PostNapisane: sty 14, 2022 20:41
przez wilda
Witam
Mam taki problem: Potrzebuję lispa który wybiera na rysunku wszystkie TEXT wstawione w poziomie na wskazanej warstwie (przykład warstwa ABC).
Napisałem coś takiego co działa, ale teraz mam problem z jego zmodyfikowaniu tak by przyjmował warstwę którą wskazuje poprzez wybór obiektu na rysunku.
Kod: Zaznacz cały
(defun c:WYBÓRTEXTPOZ ( / ss1 ss2)
(setq ss1 (ssget "_X" '((-4 . "<AND")(0 . "TEXT") (8 . "ABC")(-4 . "AND>"))))
(if ss1 (progn (sssetfirst nil ss1) (setq ss2 (ssget "_P" '((50 . 0.0)))) ) )
(sssetfirst nil nil)
(if ss2 (sssetfirst nil ss2)
  (progn (princ "\n ...nic nie znaleziono") (princ) )
  )
)

Wybór warstwy robię za pomocą kodu:
Kod: Zaznacz cały
  (and
    (setq wybranyObiekt(entsel "\nWybierz obiekt na warstwie > "))
    (setq listawarstwa (assoc 8(entget(car wybranyObiekt))))   ;(8 . ABC)
    (setq nazwalayer (cdr listawarstwa))   ;ABC
   );; end and


wstawiają zmienną listawarstwa do ssget program nie działa
Kod: Zaznacz cały
(setq ss1 (ssget "_X" '((-4 . "<AND")(0 . "TEXT")(8 . listawarstwa)(-4 . "AND>"))))


jak to zmienić, żeby wykorzystać wybraną warstwę zapisaną w zmiennej do ssget?

Re: [LISP] wybór tekstu na warstwie

PostNapisane: sty 14, 2022 21:16
przez andkal
żeby móc użyć w liscie ssget chociaz jedną zmienną trzeba użyć CONS zamiast kropek

(setq ss1 (ssget "_X" (list(cons -4 "<AND")(cons 0 "TEXT")(cons 8 nazwalayer)(cons -4 "AND>"))))

Re: [LISP] wybór tekstu na warstwie

PostNapisane: sty 14, 2022 22:19
przez wilda
Próbowałem z cons ale tylko (cons 8 nazwalayer).
Teraz działa, dzięki.

Re: [LISP] wybór tekstu na warstwie

PostNapisane: sty 15, 2022 10:11
przez ziele_o2k
wilda napisał(a):Próbowałem z cons ale tylko (cons 8 nazwalayer).
Teraz działa, dzięki.

Dla zrozumienia o co biega polecam:
http://www.lee-mac.com/quote.html

Re: [LISP] wybór tekstu na warstwie

PostNapisane: sty 15, 2022 11:15
przez andkal
Nie działało ponieważ w (cons listawarstwa) zmienna "listawarstwa" mialo by wasrtosc (8 . "ABC") a powinno miec forme STRINGu czyli samo "ABC" czyli to co jest pod zmienna "nazwalayer".
Jeśli chcesz mieć wiecej warstw musialbys utworzyc STRING np "ABC,DEF,GHI"

Re: [LISP] wybór tekstu na warstwie

PostNapisane: sty 19, 2022 22:50
przez wilda
Dzięki za informacje.
Sam tego nie znalazłem i bym nie znalazł, bo nie wiedziałem za bardzo czego szukać.