・ 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