図描きの備忘録

日々の業務の時間短縮。残業しないで帰る事を目指し、悪戦苦闘中。AutoCAD、Lisp、効率化、自動化、合理的、プログラミング、資産運用勉強中

Lisp実践編 - 5 - タイプフィルター

Lisp実践編 - 5

こんにちは!

エカキオです!

今回はフィルターを図形タイプ毎に指定して、高速でフィルターを使いこなすLispになります。


通常であれば「filter」コマンドで

ダイアログを表示

図形タイプを選んで

適用

という流れが必要になりますが、ダイアログは極力省略しコマンドラインで処理することにより、時短が図れます。

一応指定できるフィルターを表にしましたので参照ください。

L
ポリライン P
C
ブロック I
ハッチング H
文字 T
マルチテキスト M
寸法 D
引き出し線 R


ここで、initget関数のもう1つの使い方が出てきます。

(initget 1 "Line Circle 〜")

今までは、指定した文字列のみの入力規制でした。
上のように、アルファベットで並べ、そして一文字を大文字にすることで、その単語全てが入力されたと見なされます。

今回で言うと、

L

Enter

することで、変数「s1」には「"line"」が代入されるということです。

そのままコピーして、好きなコマンド・好きなファイル名にしていただいても構いません。
AutoCAD Lisp 入門 - 1 - 最強の時短ツール「Lisp」とは - 図描きの備忘録


コード

;フィルタータイプ選択
(defun c:qf ( / s1 ss1 l1 )
  	(initget 1 "Line Circle lwPolyline Insert Dimension Text leadeR Hatch Mtext")
  	(setq s1 (getkword "¥nフィルタータイプ選択 線(L) Pライン(P) 円(C) ブロック(I) ハッチング(H) 文字(T) Mテキスト(M) 寸法(D) 引出(R):"))
  	(setq l1 (list (cons 0 s1)))
  	(setq ss1 (ssget l1))
  	(command "pselect" "p" "")
  	(princ)
)

参考記事

AutoCAD LISP 入門 - 4 - ユーザー入力待ち - 図描きの備忘録

AutoCAD Lisp 入門 - 10 - フィルターオブジェクト選択 - 図描きの備忘録

実践編コードの共通事項

最上段には、コメントを入れています。
こちらのLispは何を目的にしているかを一目で判断するためです。
また、「(defun c:※※ ()」の直下には、
(princ "¥n〜")を入れることで、コマンド実行の際も、コマンドの目的がわかりやすくなっています。(たくさん作ってると後々忘れてしまいます。)

※こちらのLispは自己責任でお使い下さい。万が一、AutoCADがフリーズ、強制終了
した場合など不慮の事故が起きた場合も当ブログでは責任を負いかねます。
まずは何もないデータなどで、使用感を確かめてから使用することをお勧めします。

Related Posts Plugin for WordPress, Blogger...