■上級 6.IF文でループ | AutoCADマクロ屋本舗
IF文を使用したループマクロを作成してみましょう。


例えば、水平な構築線と垂直な構築線を
右クリックする度に切替えるマクロを作成しましょう。


■水平垂直構築線マクロ
1)繰返し「*」付加し、"XLINE"[構築線]コマンド実行
*^C^C_xline;


ここで、"XLINE"[構築線]コマンドの、オプション[水平(H)/垂直(V)]を使用し
右クリックする度に、水平と垂直を切り替える部分を説明します。

"DIESEL関数"の"if"を使用し、ダミーのシステム変数として
"_setenv;to"の値を使用します。

※"to"に特別な意味は有りませんが、使用する変数は統一しておきましょう。


ここで注意しなければならない事が有ります。

初めて"_setenv;to;"を実行した時の、システム変数の値には
数値も文字も、何も無い状態です。

その為、IF文で
$M=$(if,$(getenv,to),0),A,B)
この様に記述し、いきなり"to"の値が"0"かどうかを判断させても
マクロとして動作ません。

これは、DIESEL文字列内の数値を判別している為
何も数値が無い状態では、判断出来ない為です。

その為、"setenv"にて新しく作成されたシステム変数を、コマンド入力で
SETENV 変数名を入力: to
値:0

一度値を入れておけば動作しますが
それではマクロにする意味がありません。

では、この場合どの様にすれば良いかと言うと・・・
"DIESEL関数"の"eq"を使用すれば良いのです。

この"eq"は、【■上級 1.DIESEL関数 [if]】でも述べましたが
数値では無く、文字列として判断する事が可能な関数です。

■マクロ例
$(if,$(eq,A,B),C,D)
文字列Aと文字列Bが同一ならば、Cを実行
文字列Aと文字列Bが同一で無いならば、Dを実行
と、なります。


それでは早速、"eq"を使って水平/垂直の分岐を作成しましょう。


2)"if"と"to"で、構築線のオプション[水平(H)/垂直(V)]を分岐
*^C^C_xline;$M=$(if,$(eq,$(getenv,to),0),v,h);
※初回は"to"の値に何も無い(「to≠0」の為)、"h"が入力されます。
 それ以降は、"to"の値によって分岐させます。



3)構築線の通過点を指定「\」記入
*^C^C_xline;$M=$(if,$(eq,$(getenv,to),0),v,h);\


ここで、今度は
通過点を指定する」か「右クリックで構築線の水平/垂直を切替える
を分岐させます。

・構築線の通過点を指定する = 左クリック
・右クリックで構築線の水平/垂直を切替える =右クリック


システム変数"CMDACTIVE"を使って、この様に分岐させましょう。

ただし、既に「$M=」にて計算開始となっていますので
評価を遅らせる「"(ダブルクォーテーション)」を忘れないように注意しましょう。


4)システム変数"CMDACTIVE"にて分岐
*^C^C_xline;$M=$(if,$(eq,$(getenv,to),0),v,h);\$M="$(if,$(getvar,cmdactive),***左クリック時のマクロ***,***右クリック時のマクロ***)"^M


この時、"XLINE"[構築線]コマンドの特性から
左クリックで通過点を指定した後、1回のEnterでコマンドが終了するので
何もする必要は有りません。

それでは最後に
右クリック時に水平/垂直を切替える部分を作成します。

これは意外と簡単です。

*^C^C_xline;$M=$(if,$(eq,$(getenv,to),0),v,h);\
マクロ先頭部分で、変数"to"にて切替えるので
「to=0」の時、"to"の値を"1"
「to=1」の時、"to"の値を"0"
にすればいいわけなので・・・

"if"を使って、"to"の値を
_setenv;to;$(if,$(getenv,to),0,1);
切替えれば良いのです。


これを作成途中のマクロに組み込むと・・・
*^C^C_xline;$M=$(if,$(eq,$(getenv,to),0),v,h);\$M="$(if,$(getvar,cmdactive),,_setenv;to;$(if,$(getenv,to),0,1))"^M

右クリックをする度に、構築線の水平と垂直が切り替わるマクロの完成です。


この様に"if"や"CMADCTIVE"を使うと
今まで不可能に思えていた動作を、マクロで作成する事が可能です。

又、作り方によっては、別の作り方があると思います。
色々な作り方を試すと良いでしょう。

はじめて学ぶAutoCAD LT 2013 作図・操作ガイド/ソーテック社

¥2,499
Amazon.co.jp