我編寫的簡單,功能不太全.妳看著用吧
復制下列代碼,創建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)
)