请教将所有关闭的层内东西清除?
(defun c:dde(/ et ln lay_name ss li)(setq li (entsel "\n请选择指定图层内的任何一个实体<回车直接输入层名>:"))
(if li
(progn
(setq et (entget(nth 0 li)))
(setq lay_name (cdr (assoc 8 et)))
)
(progn
(princ "\n输入层名:")
(while (= ln nil)
(setq lay_name (getstring))
(setq ln (cdr (assoc 2 (tblnext "layer" t))))
(while (and ln (/= ln "%") )
(if (/= ln lay_name)
(setq ln (cdr (assoc 2 (tblnext "layer"))))
(setq ln "%")
;如指定的图层名已存在,则设“%”标志
)
)
(if (/= ln "%") ;错误处理
(princ "\n指定的图层不存在,请重新输入:")
)
)
)
)
(setq ss (ssget "x"(list(cons 8 lay_name))))
(command "-layer" "u" lay_name "")
(command "erase" ss "") ;清除所有实体
(princ "\n清除完毕!")
(princ)
)
本帖最后由 zhynt 于 2011-7-12 16:36 编辑
(defun c:dde (/ et ln lay_name ss li)
(setq first T)
(setq layertab '())
(while (setq lay1 (tblnext "layer" first))
(if (= first T)
(setq first nil)
)
(if (/= lay1 nil)
(progn (setq lay_name (cdr (assoc 2 lay1)))
(setq lay_ent (entget (tblobjname "layer" lay_name)))
;;;判断图层为锁定状态,如果要判断关闭状态用 (if (< (cdr (assoc 62 lay_ent)) 0)
(if (= (cdr (assoc 70 lay_ent)) 4)
(progn (setq ss (ssget "x" (list (cons 8 lay_name))))
(command "-layer" "u" lay_name "")
(command "erase" ss "")
)
)
)
)
) ;清除所有实体
(princ "\n清除完毕!")
)
谢谢二楼,太好用了
页:
[1]