画層を作るAutoLISPコマンドを作成します。
通常、画層は画層管理パレットを利用して管理しますが、AutoLISPでも画層を作ったり設定を変更したりできます。
予備知識
コマンドの内容
コマンドLAYER[画層管理]は画層パレットを出すコマンドですが、実はもう一つ、先頭に-(ハイフン)がついた、-LAYER[画層管理] というコマンドがあります。
このハイフンがついた-LAYER[画層管理] では、パレットは出てこなくて、コマンドラインを使って画層を作成したり画層プロパティを変更します。
オプションは、[現在の層の新規作成(M)] [現在の層の変更(S)] [新規作成(N)] [名前変更(R)] [表示(ON)] [非表示(OF)] [色設定(C)] [線種設定(L)] [[印刷(P)] [フリーズ(F)] [フリーズ(F)]などなど、画層管理パレットで設定できることがコマンドラインでも設定できます。
詳しくはヘルプページで確認するか、コマンド実行時に出てくるプロンプト(AutoCADがユーザーに選択などを促すメッセージ)で確認してください。
AutoLISPで操作するときは、どちらのコマンドを使ってもパレットは出てきません。
-LAYER[画層管理]と同じ要領でオプションを使ってで画層管理します。
今回は、
名前 “Jaga-No_Plot” 、線種 “CONTINUOUS” 色 171、印刷 しない
という画層を作成するコマンドを作ります。
AutoLISP プログラム
(defun c:MkLy ()
(command-s "._LAYER"
"N" "Jaga-No_Plot" ;[新規作成(N)]
"L" "CONTINUOUS" "Jaga-No_Plot" ; [線種設定(L)] CONTINUOUS
"C" "171" "Jaga-No_Plot" ; [色設定(C)] 171
"P" "N" "Jaga-No_Plot" ; [印刷(P)] No Plot
"") ;スペースキー(エンター)で終了
(princ));defun
AutoLISP の解説
コマンド名はMkLyです。
AutoLISP関数command-s で、AutoCADコマンド -LAYER[画層管理]を実行します。
AutoLISPで実行するときは、Layerでも-Layer でも、どちらでも画層管理パレットが出てくること無く、同じように動作します。
オプションで[新規作成(N)]を選び、名前を”Jaga-No_Plot”。
[線種設定(L)] を選び、線種名”CONTINUOUS”を入れて、画層名”Jaga-No_Plot”。
同じように、[色設定(C)] 171、[印刷(P)]を続けて設定していきます。
””スペースキー(エンター)を押すまでは、次々にオプションを入れて、1回のコマンド実行で、続けていろんなプロパティを設定することができます。
各オプション、何をどういう順番で入れたらいいのかわからないときは、まず、-LAYERを実行してみて、プロンプトを見ながら画層を作成してみよう。
その後、履歴を見ながらプログラムを作るとといいよ。
カスタマイズ例
すでに同じ名前の画層があるとき、色や線種が上書きされてしまうので、if と tblsearchを使って、もし、”Jaga-No_Plot”が無ければ作成する。という形にできます。
画層を作ることが頻繁にある場合は、自作関数にすると便利です。”画層が無ければ画層を作る”記事はこちら。
まとめ
- 画層管理をするには、パレットだけではなく、コマンドラインで設定できる”-LAYER”コマンドがある。
- AutoLISPで画層管理するときは、このーLAYERコマンドの要領で作る。
- AutoLISPでコマンド実行するときは、パレットを出すLAYERでも、-LAYERでも同じ動作になる。
Comments
お世話になります。拝読しており勉強になります。重宝しております。
誠に申し訳ありませんが、「画層を作るコマンド(下記)」で「線の太さ(0.13mm)」を追加するにはどのように追記すればよろしいでしょうか。
“LW” “0.13mm” “Jaga-No_Plot” でよろしいでしょうか。ご教授願います。
よろしくお願い申し上げます。
(defun c:MkLy ()
(command-s “._LAYER”
“N” “Jaga-No_Plot” ;[新規作成(N)]
“L” “CONTINUOUS” “Jaga-No_Plot” ; [線種設定(L)] CONTINUOUS
“C” “171” “Jaga-No_Plot” ; [色設定(C)] 171
“P” “N” “Jaga-No_Plot” ; [印刷(P)] No Plot
“”) ;スペースキー(エンター)で終了
(princ));defun
ブログ読んでくださりありがとうございます。
参考にして下さる方がいらっしゃると思うとうれしいです。
堂込様のおっしゃる通り、”LW” で追加できます。
ただ、1ユニットの単位についてはファイルの設定によります。(コマンド UNITS で確認できます。)
ですので 線の太さは “0.13” 数値のみでmmは入力しません。
(defun c:MkLy ()
(command-s "._LAYER"
"_N" "Jaga-No_Plot" ; 新規作成(N)
"_L" "CONTINUOUS" "Jaga-No_Plot" ; 線種設定(L) CONTINUOUS
"_C" "171" "Jaga-No_Plot" ; 色設定(C) 171
"_P" "N" "Jaga-No_Plot" ; 印刷(P) No Plot
"_LW" "0.13" "Jaga-No_Plot" ; 線の太さ(LW) 0.13
""
) ; スペースキー(エンター)で終了
(princ)
) ; defun