Zobrazit plnou verzi příspěvku: tvorba bloku

Ferdinand
12.02.2009, 08:53
Mám lisp pro vytvoření bloku
(defun...
...
(command "-purge" "_B" "*" "_N")(setq DWG (cadr (fnsplitl (getvar "dwgname"))))(setq DWGC (strcat DWG "_C"))(setq DWGH (strcat DWG "_H"))(setq QS (ssget "X" (list (cons 0 "insert") (cons 2 DWG))))(setq QSC (ssget "X" (list (cons 0 "insert") (cons 2 DWGC))))(setq QSH (ssget "X" (list (cons 0 "insert") (cons 2 DWGH))))(if (tblsearch "block" DWG)  nil  (progn    (command "_-block" DWG "0,0" "_All" "_R" !QSC !QSH "")    (command "_-insert" DWG "0,0" 1 1 0)    (command "_-purge" "_A" "*" "_N")    (command "_zoom" "_e")    (command "_qsave")  ))
...
)
Pokud ten lisp načtu, vytvoří se blok včetně DWGC a DWGH (pokud tam jsou) - což nechci   ; potřebuji čistě blok ze všech entit kromě již hotových bloků DWGC a DWGH.
Další zajímavost je, že při ladění lispu když řádek
(command "-block" DWG "0,0" "_All" "_R" !QSC !QSH "")jsem vložil do p.ř., nic se neprovedlo. Pokud jsem to psal ručně, tak se to provedlo.

pavelstyl
12.02.2009, 08:57
[QUOTE=Ferdinand]
    (command "_-block" DWG "0,0" "_All" "_R" !QSC !QSH "")[/QUOTE]
 
Ty vykřičníky mi tam nějak nesedí. Zkusil bych to bez nich.
 
Pavel Štyl

Ferdinand
12.02.2009, 10:12
To jsem samozřejmě již vyzkoušel. Nakopíruji-li do p.ř.
(command "_-block" DWG "0,0" "_All" "_R" QSC QSH "")
tak to provede, ale pokud píšu ručně na p.ř. celý příkaz -block, tak tam musím psát !QSC..., jinak tu výběrovou množinu neuzná... Jak to má být v lispu?

Vladimír Michl
12.02.2009, 13:07
V LISPU píšete jen název proměnné (symbolu) s výběrovou množinou. Při ručním zadávání příkazu žádný LISP neběží, takže se k hodnotě symbolu musíte dostat funkcí "!".

Ferdinand
12.02.2009, 14:39
Děkuji za objasnění. Takže při použití ! mi vytvořil blok včetně DWGC, DWGH proto, že výrazy !Q... v lispu jsou brány jako nil - vlastně jsem odebíral "nic"... Opraveno, vyzkoušeno, je to OK.