・ 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