📄 图层控制.lsp
字号:
;-------------------------------------------------------
;LZYCAD原创之---图层控制
;-------------------------------------------------------
(defun c:cv( / e n)
(setvar "cmdecho" 0)
(setq e (car (entsel "\n将选择对象所在图层设为当前图层,请选择对象:")))
(if e (progn
(setq e (entget e))
(setq n (cdr (assoc 8 e)))
(command"layer" "set" n "")
))
(setvar "cmdecho" 1)
(princ))
(defun c:cx(/ ss ent la)
(setvar "cmdecho" 0)
(princ "\n匹配对象图层或将选择对象的图层修改为当前图层.")
(setq ss (ssget))
(if (and ss (> (sslength ss) 0))
(progn
(setq ent (entsel "\n选择匹配对象:"))
(if ent (setq la (cdr(assoc 8 (entget (car ent)))))
(setq la (getvar "clayer"))
)
(command ".chprop" ss "" "layer" la "")
);progn
);if
(setvar "cmdecho" 1)
(princ))
;;; --------------------------------------------------------------------------
(defun c:lli (/ es en el a fl)
(setvar "cmdecho" 0)
(princ "\n显示选择对象所在图层.")
(setq es (ssget))
(if es (progn
(setq a 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) "")
));if es
(setvar "cmdecho" 1)
(princ))
(defun c:llo (/ ss ct len cl la ct)
(setvar "cmdecho" 0)
(prompt"\n关闭选择对象所在图层.")
(setq ss (ssget))
(if (and ss (> (sslength ss) 0))
(progn
(setq ct 0 len (sslength ss) cl (getvar "clayer"))
(command ".layer")
(while (< ct len)
(setq la (cdr (assoc 8 (entget (ssname ss ct)))))
(if (/= cl la)(command "off" la)
(progn (prompt "\n图层")
(prompt la)
(prompt "为当前图层!")
) ;end of progn
) ;end of if
(if (= old nil)(setq old la)(setq old (strcat old "," la)))
(setq ct (1+ ct))
) ;end of while
(command"")
) ;end of progn
) ;end of if
(setvar "cmdecho" 1)
(princ))
(defun c:llf (/ es en el a fl)
(setvar "cmdecho" 0)
(princ "\n冻结选择对象所在图层.")
(setq es (ssget))
(if es (progn
(setq a 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" "f" (eval fl) "")
));if es
(setvar "cmdecho" 1)
(princ))
(defun c:llk (/ es en el a fl)
(setvar "cmdecho" 0)
(princ "\n锁定选择对象所在图层.")
(setq es (ssget))
(if es (progn
(setq a 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" "lo" (eval fl) "")
));if es
(setvar "cmdecho" 1)
(princ))
;----------------------------------------------
;采用有LYZCAD内部函数,请与LZYCAD配合使用
;需要安装LZYCAD
;----------------------------------------------
(defun c:flk (/ ss ee num nam ent lay laylst lst fl n m)
(setvar "cmdecho" 0)
(prompt "\n反锁定图层,by LZYCAD")
(setq ss (ssget))
(if ss (progn
(setq ee 0 num (sslength ss) laylst nil fl "")
(while (< ee num)
(setq nam (ssname ss ee)
ent (entget nam)
lay (cdr (assoc 8 ent))
laylst (append laylst (list lay))
);setq
(setq ee (1+ ee))
);while
(setq laylst (LZY_del_lst_item laylst 0.01));函数为LYZCAD内部通用函数
(setq lst (LZY_get_tblnext_tblname_list "layer") );函数为LYZCAD内部通用函数
(setq m 0)
(repeat (length laylst)
(setq lst (vl-remove (nth m laylst) lst))
(setq m (1+ m))
);repeat
(setq n 0)
(repeat (length lst)
(if (= n (1- (length lst)))
(setq fl (strcat fl (nth n lst) ))
(setq fl (strcat fl (nth n lst) ","))
);if
(setq n (1+ n))
);repeat
(if lst
(command "layer" "lo" fl "")
(prompt "\n***您选择了全部图层,反锁图层没有***")
);if
));if es
(setvar "cmdecho" 1)
(princ))
(defun c:llu (/ es en el a fl)
(setvar "cmdecho" 0)
(princ "\n解锁选择对象所在图层.")
(setq es (ssget))
(if es (progn
(setq a 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" "u" (eval fl) "")
));if
(setvar "cmdecho" 1)
(princ))
(defun c:oa ()
(setvar "cmdecho" 0)
(prompt "\n图层全部开.")
(command "layer" "on" "*" "")
(setvar "cmdecho" 1)
(princ))
(defun c:ll ()
(setvar "cmdecho" 0)
(prompt "\n图层全部解锁.")
(command "layer" "unlock" "*" "")
(setvar "cmdecho" 1)
(princ))
(defun c:fl ()
(setvar "cmdecho" 0)
(prompt "\n图层全部解冻.")
(command "layer" "thaw" "*" "")
(setvar "cmdecho" 1)
(princ))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -