做了隐藏和显示两个命令.
我编写的简单,功能不太全.你看着用吧
复制下列代码,创建acad.lsp.放在在CAD安装目录第一层文件夹下,可自动加载啊:
;在命令行输入该命令hidsel,然后选择图元,结果没选的被改到隐藏层
(defun C:hidsel(/ all;所有图元
xs;非隐藏图元
yc;隐藏图元
n nam dat)
(setvar "CMDECHO" 0);关闭命令回显
(command "_layer" "n" "临时隐藏图层" "")(command "_layer" "off" "临时隐藏图层" "")
(setvar "CMDECHO" 1)
(setq all (ssget "x"));选择所有
(setq xs (ssget));选择非隐藏图元
(setq n -1 yc all);运算隐藏图元
(repeat (sslength xs)
(setq n (+ n 1))
(setq nam (ssname xs n));返回第N个图元的名称
(setq yc (ssdel nam yc))
)
(setq N -1);隐藏
(repeat (sslength yc)
(setq N (+ n 1))
(setq nam (ssname yc n));返回第N个图元的名称
(setq dat (entget nam));DAT储存第N个图元数据
(entmod (subst (cons 8 "临时隐藏图层") (Assoc 8 dat) dat));将yc集合隐藏
)
(setq all nil xs nil yc nil n nil nam nil dat nil);清除数据占用内存
(princ)
)
;显示所有图元
(defun c:shoal(/ all n nam dat)
(setq all (ssget "x"));选择所有
(setq N -1);隐藏
(repeat (sslength all)
(setq N (+ n 1))
(setq nam (ssname all n));返回第N个图元的名称
(setq dat (entget nam));DAT储存第N个图元数据
(entmod (subst (cons 8 "0") (Assoc 8 dat) dat));将yc集合隐藏
)
(setvar "CMDECHO" 0)
(COMMAND "PURGE" "LA" "临时隐藏图层" "Y" "Y" "")
(setvar "CMDECHO" 1)
(setq all nil n nil nam nil dat nil);清除数据占用内存
(princ)
)