Lisp実践編 - 7
こんにちは!
エカキオです!
今回はレイヤ名を入力してフリーズができるLispを紹介します。
また逆に指定したレイヤ名だけを残してその他をフリーズすることも可能です。
選択したオブジェクトをフリーズにするツールは、最近のAutoCADであれば標準で搭載されていると思いますが、
レイヤ名でフリーズするのは、「-layer」コマンドを使って、順を追って入力するほかないと思います。
今回のLispは、コマンド入力後、名前を入力するだけで、指定するレイヤ名をフリーズ(またはそれ以外をフリーズ)することができます。
そして「❇︎」アスタリスクキーを併用することで、接頭語、接尾語指定が出来ます。
「❇︎」アスタリスクキーとは
キーボードで言うと、ひらがな「け」のキーの左上のマークです。
shift押しながら「け」で入力出来ます。
アスタリスクとは、任意の文字列と見なせる、ワイルドカードとも言われます。
具体的に言うと、
layer-❇︎
というのは、
layer-a
layer-b
layer-aiueo
layer-12345
のどれでも指定されます。
つまり、アスタリスクの手前の「layer-」部分を含み、その後はなんでも良いということです。
❇︎-layer
これだと「-layer」の前に付く文字はなんでもよくなり、
❇︎-layer-❇︎
だと「-layer-」が入っていれば前後はなんでも良いということになります。
例で「-」ハイフンをつけていますが、そこはなんでもいいです。
❇︎color
でも
line_❇︎
でも
特に形にルールはありません。
以上のことを踏まえて、
コードを見てみてください。
また今回のように、1つのファイルの中に、2つのLispを書くことも出来ます。
似たようなLisp、関連したLispは1つのデータの中に書き込むことでもいいかもしれません。
この場合、アプリケーションロードのスタートアップに登録するデータは1つでよくなります。
そのままコピーして、好きなコマンド・好きなファイル名にしていただいても構いません。
AutoCAD Lisp 入門 - 1 - 最強の時短ツール「Lisp」とは - 図描きの備忘録
コード
;レイヤー名入力でそれ以外フリーズ (defun c:NF ( / l1) (initget 1) (setq l1 (getstring"¥nフリーズしないレイヤー名を入力(*も可):")) (command "-layer" "f" "*" "t" l1 "") (princ) ) ;レイヤー名入力でフリーズ (defun c:NFF ( / l1) (initget 1) (setq l1 (getstring"¥nフリーズするレイヤー名を入力(*も可):")) (command "-layer" "f" l1 "") (princ) )
参考記事
AutoCAD Lisp 入門 - 3 - よく使うコマンド処理を登録する - 図描きの備忘録
AutoCAD LISP 入門 - 4 - ユーザー入力待ち - 図描きの備忘録
実践編コードの共通事項
最上段には、コメントを入れています。
こちらのLispは何を目的にしているかを一目で判断するためです。
また、「(defun c:※※ ()」の直下には、
(princ "¥n〜")を入れることで、コマンド実行の際も、コマンドの目的がわかりやすくなっています。(たくさん作ってると後々忘れてしまいます。)
※こちらのLispは自己責任でお使い下さい。万が一、AutoCADがフリーズ、強制終了
した場合など不慮の事故が起きた場合も当ブログでは責任を負いかねます。
まずは何もないデータなどで、使用感を確かめてから使用することをお勧めします。
キーワード
画層,レイヤー,フリーズ,layer,freeze