画層変更後の選択を保持・解除できるLISP

  • URLをコピーしました!

オブジェクトの画層や色を変更したあと、そのまま次の作業に移りたい場面はよくあります。

しかし通常は、処理後に選択が解除されるため、移動や複写を行う際に再度選択し直す必要があります。

そこで、処理後に「選択を解除するか/保持するか」を選べるようにすると、作業の流れを止めずに操作を続けることができます。

(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)」の画層に変更する処理です。

まとめ

  • 画層変更後の選択を保持・解除できる
  • 再選択の手間を減らし、作業をスムーズに続けられる
  • 移動やコピーなどの連続作業が効率化する

処理後の選択状態をコントロールすることで、作業の流れを止めずに操作できるようになります。

関連記事

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

Contents