オブジェクトの画層や色を変更したあと、そのまま次の作業に移りたい場面はよくあります。
しかし通常は、処理後に選択が解除されるため、移動や複写を行う際に再度選択し直す必要があります。
そこで、処理後に「選択を解除するか/保持するか」を選べるようにすると、作業の流れを止めずに操作を続けることができます。
(defun endMode (sel)
(initget "1 2")
(setq mode (getkword
"n終了方法を選択 [選択解除して終了(1)/選択したまま終了(2)] <1>: "))
(if (not mode) (setq mode "1"))
(cond
((= mode "1") (sssetfirst nil nil))
((= mode "2") (sssetfirst nil sel))
)
)
(defun c:GB (/ sel)
(setq sel (ssget))
(if sel
(progn
(command-s "._CHPROP" sel "" "LA" "SEIHIN(B)" "" "")
(endMode sel)
)
)
(princ)
)すぐできる設定手順
- コマンド「GB」を入力
- 画層変更するオブジェクトを選択
- 選択解除して終了 または、選択したまま終了 を選択
仁(じん)画像付きのSTEPは、下で確認できますよ!
Contents
操作手順
STEP


- コマンド「GB」を入力します
- 画層変更するオブジェクトを選択します
- エンターを押します
STEP


- 「選択解除して終了」または、「選択したまま終了」を選択します
※そのままエンターを押せば、「選択解除して終了」で選択解除して終了します
STEP


- 「選択したまま終了」を選択するとオブジェクトの選択を保持できます



そのまま移動やコピーしたいときは、選択保持が便利ですよ!
LISP解説
このLISPでは、処理後に endMode 関数を呼び出し、選択状態を切り替えられるようにしています。
(defun endMode (sel)
(initget "1 2")
(setq mode (getkword
"\n終了方法を選択 [選択解除して終了(1)/選択したまま終了(2)] <1>: "))
(if (not mode) (setq mode "1"))
(cond
((= mode "1") (sssetfirst nil nil))
((= mode "2") (sssetfirst nil sel))
)
)getkword を使って、終了方法を「選択解除」か「選択保持」か選べるようにし、入力内容に応じて処理を分岐しています。
- sssetfirst nil nil→ 選択解除
- sssetfirst nil sel→ 選択を保持
これにより、画層変更後にそのまま移動やコピーなどの作業へスムーズに移ることができます。
(command-s "._CHPROP" sel "" "LA" "SEIHIN(B)" "" "")この処理は、選択したオブジェクトの画層を変更しています。
- sel → 選択したオブジェクト
- “LA” → 画層を変更
- “SEIHIN(B)” → 変更先の画層
選択したオブジェクトを「SEIHIN(B)」の画層に変更する処理です。
まとめ
- 画層変更後の選択を保持・解除できる
- 再選択の手間を減らし、作業をスムーズに続けられる
- 移動やコピーなどの連続作業が効率化する
処理後の選択状態をコントロールすることで、作業の流れを止めずに操作できるようになります。


コメント