Ferdinand
12.02.2009, 08:18
Znova otevírám toto téma. Mám vybranou sekvenci z lispu
(defun...
...
(setq DWG (cadr (fnsplitl (getvar "dwgname"))))(setq DWGC (strcat DWG "_C"))
;;1-podrutina-vl.ent. bloku obrysu -zmena barvy<ype=ByBlock(defun C:zmena_EC (/ 1PZ 1E 1S0 PE62 PE6 NE62 NE6) (setq 1PZ (ssget "_X" (list (cons -4 "<OR") (cons 0 "LWPOLYLINE") (cons 62 6) (cons 6 "center") (cons -4 "OR>") (cons -4 "<OR") (cons 0 "LINE") (cons 62 6) (cons 6 "center") (cons -4 "OR>") ) ) )
;;2-cyklus-zmena vl. ent. bloku obrysu(setq N 0)(while (< N (sslength 1PZ)) (setq 1E (ssname 1PZ N)) (setq 1S0 (entget 1E)) (setq PE62 (assoc 62 1S0)) (setq PE6 (assoc 6 1S0)) (setq NE62 (cons 62 0)) (setq NE6 (cons 6 "ByBlock")) (setq 1S0 (subst NE62 PE62 1S0)) (setq 1S0 (subst NE6 PE6 1S0)) (entmod 1S0) (entupd 1E) (setq N (1+ N))))
;;3-proces-zmena vl. ent. bloku obrysu
(command "_snap" "_OFf")(progn (command "_refedit") (while (> (getvar "cmdactive") 0) (command pause)) (C:zmena_EC) (command "_refclose") (while (> (getvar "cmdactive") 0) (command "_S")))
;;4-blok obrysu -zmena barvy=magenta & ltype=center(if (tblsearch "block" DWGC) (progn (setq 0PZ (ssget "_X" (list (cons 0 "INSERT") (cons 2 DWGC)) ) ) (setq 0E (ssname 0PZ 0)) (setq 0S0 (entget 0E)) (setq P62 (assoc 62 0S0)) (setq P6 (assoc 6 0S0)) (setq N62 (cons 62 6)) (setq N6 (cons 6 "center")) (setq 0S0 (subst N62 P62 0S0)) (setq 0S0 (subst N6 P6 0S0)) (entmod 0S0) (entupd 0E) ) nil)
(command "_qsave")
...
)
Pokud sekvence 1-, 2-, 3-, 4- postupně nakopiruju do p.ř. tak se to provede. Pokud ale to chci aplikovat jako kompaktní volaný lisp, tak to provede jen 1-,2-,3- a qsave, bez chybové hlášky, 4- vynechá.
(defun...
...
(setq DWG (cadr (fnsplitl (getvar "dwgname"))))(setq DWGC (strcat DWG "_C"))
;;1-podrutina-vl.ent. bloku obrysu -zmena barvy<ype=ByBlock(defun C:zmena_EC (/ 1PZ 1E 1S0 PE62 PE6 NE62 NE6) (setq 1PZ (ssget "_X" (list (cons -4 "<OR") (cons 0 "LWPOLYLINE") (cons 62 6) (cons 6 "center") (cons -4 "OR>") (cons -4 "<OR") (cons 0 "LINE") (cons 62 6) (cons 6 "center") (cons -4 "OR>") ) ) )
;;2-cyklus-zmena vl. ent. bloku obrysu(setq N 0)(while (< N (sslength 1PZ)) (setq 1E (ssname 1PZ N)) (setq 1S0 (entget 1E)) (setq PE62 (assoc 62 1S0)) (setq PE6 (assoc 6 1S0)) (setq NE62 (cons 62 0)) (setq NE6 (cons 6 "ByBlock")) (setq 1S0 (subst NE62 PE62 1S0)) (setq 1S0 (subst NE6 PE6 1S0)) (entmod 1S0) (entupd 1E) (setq N (1+ N))))
;;3-proces-zmena vl. ent. bloku obrysu
(command "_snap" "_OFf")(progn (command "_refedit") (while (> (getvar "cmdactive") 0) (command pause)) (C:zmena_EC) (command "_refclose") (while (> (getvar "cmdactive") 0) (command "_S")))
;;4-blok obrysu -zmena barvy=magenta & ltype=center(if (tblsearch "block" DWGC) (progn (setq 0PZ (ssget "_X" (list (cons 0 "INSERT") (cons 2 DWGC)) ) ) (setq 0E (ssname 0PZ 0)) (setq 0S0 (entget 0E)) (setq P62 (assoc 62 0S0)) (setq P6 (assoc 6 0S0)) (setq N62 (cons 62 6)) (setq N6 (cons 6 "center")) (setq 0S0 (subst N62 P62 0S0)) (setq 0S0 (subst N6 P6 0S0)) (entmod 0S0) (entupd 0E) ) nil)
(command "_qsave")
...
)
Pokud sekvence 1-, 2-, 3-, 4- postupně nakopiruju do p.ř. tak se to provede. Pokud ale to chci aplikovat jako kompaktní volaný lisp, tak to provede jen 1-,2-,3- a qsave, bez chybové hlášky, 4- vynechá.