二个关于关闭图层的LSP,求高手整合下
一个是关闭对象所在层,一个是只显示被选对象所在层,求高手整合成一个命令。(命令方式:选择要关闭的图层(或空格选择不关闭的图层 );;; 关闭对像所在层
(defun lf (ss /c en lay)
(setq c 0)
(while (< c (sslength ss))
(setq en (ssname ss c))
(setq lay (cdr (assoc 8 (entget en))))
(if (not (member lay laylst))
(setq laylst (cons lay laylst))
)
(if (= lay (getvar "clayer"))
(command "-layer" "off" lay "y" "")
(command "-layer" "off" lay "")
)
(setq c (+ 1 c))
)
(princ)
)
;;; 只显示被选对像所在层
(DEFUN lg (Es / ES EN EL A)
(setqA 0 EN "" EL nil FL nil)
(while (/= EN nil)
(setq EN (ssname ES A) EL (cons EN EL) A (1+ A)))
(setq EL (cdr EL) FL (cdr (assoc ' 8 (entget (car EL)))) EL (cdr EL))
(repeat (- A 2)
(setq EN (cdr (assoc ' 8 (entget (car EL))))
FL (strcat EN "," FL) EL (cdr EL)) )
(command "LAYER" "off" "*" "y" "on" (eval FL) "")
(princ)
)
(defun C:Lyr2 ()
(princ "\n选择要关闭的图层(或空格,再选择不关闭的图层 )")
(setq ss (ssget))
(cond
;; 空格选择不关闭的图层
((Null ss) (lg (ssget)))
(T (lf ss))
)
)
Andyhon 发表于 2013-7-27 11:22 static/image/common/back.gif
不对啊,可能是我没表达清楚,你这个好像只一有一个关闭对象所在层的功能,还有一个只显示被选对象所在层 的功能好像没有用上,我再表达下我的意思哈,麻烦大哥再帮我改下,
输入命令空格,提示:选择要关闭的图层(或空格选择不关闭的图层,没有被选中的图层将会关闭 ), 这里是有二个选项的,1,我没有再次敲空格而是直接选择图层上对象,则执行的是:"关闭对象所在层的命令";2.如果我再次敲 空格 则执行的是:"只显示被选对象所在层的命令"(通过多敲一个空格来选择是执行关闭对象所在层.lsp还是只显示被选对象所在层.lsp) 哈哈,我找了个图,仔细认真重新试了下功能,发现Andyhon大哥的是OK的,,是我太粗心了,我敲一下空格提示的是选择对象,我再敲一下空格,还是提示的是选择对象,所以误会了 Andyhon 发表于 2013-7-27 11:22 static/image/common/back.gif
Andyhon大哥你这个是对的,还能不能麻烦改下,命令提示,输入lyr2空格,提示:选择要关闭的图层(或空格选择不关闭的图层,没有被选中的图层将会关闭 ),再敲空格,提示:选择不关闭的图层,没有被选中的图层将会关闭
(defun C:Lyr2 ()
(princ "\n选择要关闭的图层(或空格,再选择不关闭的图层 ): ")
(setq ss (ssget))
(cond
;; 空格 --> 选择不关闭的图层
((Null ss)
(princ "\n那么选择不关闭的图层: ")
(lg (ssget))
)
(T (lf ss))
)
)
cad命令
只显示被选对象所在层 LAYISO 还原 layuniso
这个非常好用 这个非常好用
页:
[1]
2