・ ssget でロック画層のオブジェクトを除外
ERASE コマンドや MOVE
コマンドでオブジェクトを選択するとき、ロック画層のオブジェクトは選択されないらしい
どうせ、ロックされてるんだから処理されないし、気にしたことも無かったけど・・・
画層テーブルからロック画層名のリストを取得して、カンマでつないで文字列にして、ssgetに
<NOT>演算子つけて渡してます
(defun ss_unlk ( / ss lst_lay str_lay) (defun get_lst_lay ( / lay_ed lst_lay) (setq lay_ed (tblnext "layer" t)) (while lay_ed (if (= 4 (logand (cdr (assoc 70 lay_ed)) 4)) (setq lst_lay (cons (cdr (assoc 2 lay_ed)) lst_lay)) ) (setq lay_ed (tblnext "layer")) ) (reverse lst_lay) ) (defun get_str_lay ( lst_lay / str_lay ) (setq str_lay (car lst_lay)) (setq lst_lay (cdr lst_lay)) (foreach n lst_lay (setq str_lay (strcat str_lay "," n))) str_lay ) (if (and (setq lst_lay (get_lst_lay)) (setq str_lay (get_str_lay lst_lay)) ) (setq ss (ssget (list '(-4 . "<NOT") (cons 8 str_lay) '(-4 . "NOT>")))) (setq ss (ssget)) ) )
参考文献:「mura's home」
http://www.mura.sh/bbs/wwwbbs.cgi?print+200608/06080107.txt