Lisp実践編 - 20
こんにちは!
エカキオです!
今回ご紹介するLispは選択セットを保存して、のちのち、また選択したい時に選択セットを呼び出すことが出来ます。
図面を進めていく上で、ブロックにするほどでもなくて、グループもあまり使わないけど、選択するのが地味に面倒だけど、また選択することがあるだろう選択を登録、
そして後で呼び出すことが出来ないかなー?
と思って作ってみました!
ぜひともご利用ください!
そのままコピーして、好きなコマンド・好きなファイル名にしていただいても構いません。
保存と利用方法はこちら。
AutoCAD Lisp 入門 - 1 - 最強の時短ツール「Lisp」とは - 図描きの備忘録
コード
;選択セット登録 (defun c:SM ( / ja s1 s2 end) (princ "¥n選択セットを登録します。") (initget 1 "r s ") (setq ja(getkword"¥n選択セット 登録(R)/呼出(S) <R>:")) (if (= ja "s") (progn (while (/= end 0) (initget 1) (setq s1 (getint"¥n登録選択セット 1/2/3/4/5:")) (cond ((= s1 1)(if (= savess1 nil)(princ "¥n登録されていません。")(progn(command "pselect" savess1 "" )(setq end 0)))) ((= s1 2)(if (= savess2 nil)(princ "¥n登録されていません。")(progn(command "pselect" savess2 "" )(setq end 0)))) ((= s1 3)(if (= savess3 nil)(princ "¥n登録されていません。")(progn(command "pselect" savess3 "" )(setq end 0)))) ((= s1 4)(if (= savess4 nil)(princ "¥n登録されていません。")(progn(command "pselect" savess4 "" )(setq end 0)))) ((= s1 5)(if (= savess5 nil)(princ "¥n登録されていません。")(progn(command "pselect" savess5 "" )(setq end 0)))) (t (princ "¥n1〜5番を選択。")) );cond );while ) (progn (while (/= end 0) (initget 1) (setq s2 (getint"¥n何番に登録しますか? 1/2/3/4/5:")) (cond ((= s2 1)(setq savess1(ssget))(setq end 0)) ((= s2 2)(setq savess2(ssget))(setq end 0)) ((= s2 3)(setq savess3(ssget))(setq end 0)) ((= s2 4)(setq savess4(ssget))(setq end 0)) ((= s2 5)(setq savess5(ssget))(setq end 0)) (t (princ "¥n1〜5番を選択。")) );cond );while ) ) (princ) )
参考記事
AutoCAD Lisp 入門 - 2 - オブジェクトの情報を抽出 - 図描きの備忘録
AutoCAD Lisp 入門 - 7 - 繰り返し処理 - 図描きの備忘録
AutoCAD Lisp 入門 - 9 - 複数の選択肢の条件式 - 図描きの備忘録
AutoCAD Lisp 入門 - 10 - フィルターオブジェクト選択 - 図描きの備忘録
実践編コードの共通事項
最上段には、コメントを入れています。
こちらのLispは何を目的にしているかを一目で判断するためです。
また、「(defun c:※※ ()」の直下には、
(princ "¥n〜")を入れることで、コマンド実行の際も、コマンドの目的がわかりやすくなっています。(たくさん作ってると後々忘れてしまいます。)
※こちらのLispは自己責任でお使い下さい。万が一、AutoCADがフリーズ、強制終了
した場合など不慮の事故が起きた場合も当ブログでは責任を負いかねます。
まずは何もないデータなどで、使用感を確かめてから使用することをお勧めします。
キーワード
選択セット,保存,呼び出し,select