"dist"コマンドによる分岐は、以前 【■上級 5.ダミーで分岐】 で説明しました。
今回は、「オブジェクトを選択」又は「右クリック」による分岐を説明します。
例えば、始めにマクロ実行し、ある数値を設定するとします。
その後、オブジェクト選択する時に、設定値を再度変更する場合等に
右クリックにて、設定値変更状態にさせます。
ダミーコマンドとして、よく使用するのが"オフセット[OFFSET]"コマンドです。
このコマンドの特性を利用します。
※【■中級 8.ダミーでオブジェクト選択】参照
オフセットコマンドを例に、簡単な分岐マクロを作成してみましょう。
1)初めに"nth"開始文を記述します。(※【■特級 2."nth"マクロ基本】 参照)
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),)^M |
2)"SETENV"にて、"オフセット間隔"を指定する変数名"ok"とユーザ入力"\"を記入
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),setenv;ok;\)^M |
3)制御文字"^X"にて、変数の説明文"オフセット間隔"を記入
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),setenv;ok;オフセット間隔^X\)^M |
「setenv;ok;」としなくても、";"にて"setenv"コマンドの記述省略可。
4)ここで"setenv;to;1"へ移行
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),setenv;ok;オフセット間隔^X\;to;1,,)^M |
5)"nth=1"の開始文を記入
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),setenv;ok;オフセット間隔^X\;to;1,,)$(nth,$(getenv,to),,)^M |
6)"offset"コマンド実行し、"オフセット間隔"とユーザ入力"\"を記入
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),setenv;ok;オフセット間隔^X\;to;1,,)$(nth,$(getenv,to),,offset;$(getenv,ok);\,)^M |
7)説明文を記入
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),setenv;ok;オフセット間隔^X\;to;1,,)$(nth,$(getenv,to),,offset;$(getenv,ok);【間隔指定(右クリック)】^X\,)^M |
8)IF文にて、分岐の構文を記述 [注:$M="""( )"""を忘れずに]
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),setenv;ok;オフセット間隔^X\;to;1,,)$(nth,$(getenv,to),,offset;$(getenv,ok);【間隔指定(右クリック)】^X\$M="""$(if,$(getvar,cmdactive),,)""",)^M |
ここで、右クリック時を考察します。
右クリックした場合は、再度"オフセット間隔"を記入させるので
単純に"nth=0(to=0)"の構文へ移行させましょう。
9)"setenv;to;0"を記入
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),setenv;ok;オフセット間隔^X\;to;1,,)$(nth,$(getenv,to),,offset;$(getenv,ok);【間隔指定(右クリック)】^X\$M="""$(if,$(getvar,cmdactive),,setenv;to;0)""",)^M |
続いて、左クリック時(オブジェクト選択時)を
"nth=2(to=2)"の構文へ移行させます。
10)";setenv;to;2"を記入
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),setenv;ok;オフセット間隔^X\;to;1,,)$(nth,$(getenv,to),,offset;$(getenv,ok);【間隔指定(右クリック)】^X\$M="""$(if,$(getvar,cmdactive),;setenv;to;2,setenv;to;0)""",)^M |
11)"nth=2"の開始文を記入
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),setenv;ok;オフセット間隔^X\;to;1,,)$(nth,$(getenv,to),,offset;$(getenv,ok);【間隔指定(右クリック)】^X\$M="""$(if,$(getvar,cmdactive),;setenv;to;2,setenv;to;0)""",)$(nth,$(getenv,to),,,)^M |
12)"SELECT"コマンドにて、オブジェクトを選択したかを判断
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),setenv;ok;オフセット間隔^X\;to;1,,)$(nth,$(getenv,to),,offset;$(getenv,ok);【間隔指定(右クリック)】^X\$M="""$(if,$(getvar,cmdactive),;setenv;to;2,setenv;to;0)""",)$(nth,$(getenv,to),,,setenv;to;1;select;non;@;non;@;;)^M |
13)オフセットコマンドを実行
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),setenv;ok;オフセット間隔^X\;to;1,,)$(nth,$(getenv,to),,offset;$(getenv,ok);【間隔指定(右クリック)】^X\$M="""$(if,$(getvar,cmdactive),;setenv;to;2,setenv;to;0)""",)$(nth,$(getenv,to),,,setenv;to;1;select;non;@;non;@;;offset;;non;@;\)^M |
これで、簡単な"選択と右クリック"の分岐マクロの完成です。
今回作成したマクロは、あくまでも簡易的な例題マクロです。
この分岐は、"nth"を使ったマクロで、大変多く使っています。
使用頻度の高い分岐マクロなので、覚えておきましょう。
これからはじめる AutoCADの本 [AutoCAD/AutoCADLT2006/2007/.../技術評論社

¥2,499
Amazon.co.jp