;;; Описание : Отключение всех слоев, кроме текущего ;;; и обратное их включение (улучшенная). ;;; Неактивные до отключения слои остаются выключенными, т.е. включаются только ;;; те слои, которые до отключения были активными. ;;; Если текущий слой был отключен, то, поскольку в операции выключении всех слоев, ;;; включая текущий, большого смысла нет, то эта команда просто блокируется. ;;; Удобнее всего сделать только одну кнопку с макросом, включающим c:layers_off ;;; В зависимости от состояния переключателя (переменная sw_on_off будет принимать ;;; значения nil или 1). Переменная list_layer_off содержит список отключенных ;;; слоев. ;;; Prepared by : Okonechnikov A.N. ;;; ;;; Moscow ;;; Russia ;;;--------------------------------------------------------------------------------- ;;; Last revision : 2/08/2002. (defun c:layers_off (/ setcmd off_lay TBL_DATA layerlist lay i) (if (not sw_on_off) (progn (if (not (minusp (cdr (assoc 62 (entget (tblobjname "LAYER" (getvar "CLAYER")))) ) ) ) (progn (setq off_lay 1 TBL_DATA nil ) (setq setcmd (getvar "cmdecho")) (setvar "cmdecho" 0) (setq layerlist (Get_Tbl_Names "LAYER")) (data_layer) (command "_Layer" "OFF" "*" "NO" "") (setvar "cmdecho" setcmd) (setq sw_on_off 1) (princ) ) ) ) (progn (setq off_lay 1 TBL_DATA nil ) (setq setcmd (getvar "cmdecho")) (setvar "cmdecho" 0) (command "_Layer" "ON" "*" "") (setq i 0) (repeat (length list_layer_off) (setq lay (nth i list_layer_off)) (command "_Layer" "OFF" lay "") (setq i (1+ i)) ) (setvar "cmdecho" setcmd) (setq sw_on_off nil) (princ) ) ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun Get_Tbl_Names (TABLE / DATA TBL_DATA) (while (setq TBL_DATA (tblnext TABLE (null DATA))) (if (not DATA) (setq DATA (list (cdr (assoc 2 TBL_DATA)))) (if (not (eq (cdr (assoc 2 TBL_DATA)) "")) (setq DATA (append DATA (list (cdr (assoc 2 TBL_DATA))))) ) ) ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun data_layer (/ i l_name ent_name) (setq i 0 list_layer_off nil ) (repeat (length layerlist) (setq l_name (nth i layerlist)) (setq ent_name (tblobjname "LAYER" l_name)) (if (minusp (cdr (assoc 62 (entget ent_name)))) (setq list_layer_off (append list_layer_off (list l_name))) ) (setq i (1+ i)) ) )