■特級 4.「nth」でマクロ作成 | AutoCADマクロ屋本舗
"nth"を使って、マクロを作成してみましょう。

例えば、【■上級 6.IF文でループ】 で作成した

■水平垂直構築線マクロ
*^C^C_xline;$M=$(if,$(eq,$(getenv,to),0),v,h);\$M="$(if,$(getvar,cmdactive),,_setenv;to;$(if,$(getenv,to),0,1))"^M

を、DIESEL関数"nth"で作成してみましょう。


■水平垂直構築線マクロ[nth版]作成

1)初めに"nth"開始文を記述します。(※【■特級 2.「nth」マクロ基本】参照)
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),)^M


次に、"to=0"時のマクロを記述します。

2)xlineコマンドのオプション"水平(h)"を使用します。
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),xline;h;\,)^M
※これで、マクロ実行直後は、水平構築線から開始します。


次に、IF文で分岐させる部分を記述します。

この時、注意しなければならないコトが有ります。
"nth"内にて、IF文で"cmdactive"等を用いて評価する場合
「$M="(   )"」ダブルクォーテーション1個では、評価を遅らせるコトが出来ません。

その為、必ず「$M="""(   )"""」ダブルクォーテーション3個とするコトが必要です。
その後は、■中級 2.DIESEL評価の遅らせ方と同じです。


3)ダブルクォーテーションを用いて、"cmdactive"によるIF文を記述。
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),xline;h;\"""$M=$(if,$(getvar,cmdactive),;,)""",)^M


この時、左クリックで指定した位置へ「水平構築線記入」、右クリックで
「垂直構築線へ切替」にするので、左クリック後の"to"の値を"0"
右クリック後の"to"の値を"1"と記述します。

4)「setenv;to;」の値を、それぞれ記入。
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),xline;h;\"""$M=$(if,$(getvar,cmdactive),;setenv;to;0,setenv;to;1)""",)^M


5)次に、"to=1(右クリック時)"の時の"nth"構文を記述します。
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),xline;h;\"""$M=$(if,$(getvar,cmdactive),;setenv;to;0,setenv;to;1)""",)$(nth,$(getenv,to),,)^M


次に、"to=1"の時の、マクロを記述します。
6)xlineコマンドのオプション"垂直(v)"を使用します。
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),xline;h;\"""$M=$(if,$(getvar,cmdactive),;setenv;to;0,setenv;to;1)""",)$(nth,$(getenv,to),,xline;v;\)^M


7)水平構築線と同じ様に、IF文を記述します。
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),xline;h;\"""$M=$(if,$(getvar,cmdactive),;setenv;to;0,setenv;to;1)""",)$(nth,$(getenv,to),,xline;v;\"""$M=$(if,$(getvar,cmdactive),;,)""")^M

この時、左クリックで指定した位置へ「垂直構築線記入」、右クリックで
「水平構築線へ切替」にするので、左クリック後の"to"の値を"1"
右クリック後の"to"の値を"0"と記述します。

※注意
水平構築線の時とは、指定する"to"の値が逆になります。


8)「setenv;to;」の値を、それぞれ記入。
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),xline;h;\"""$M=$(if,$(getvar,cmdactive),;setenv;to;0,setenv;to;1)""",)$(nth,$(getenv,to),,xline;v;\"""$M=$(if,$(getvar,cmdactive),;setenv;to;1,setenv;to;0)""")^M


これで、"nth"による、水平/垂直切替 構築線マクロの完成です。

このマクロは、自分が初めて"nth"を使って作成したマクロです。
"nth"を覚えるには、最も分かり易いマクロだと思います。
分かるまで、何度も動作確認してみて下さい。



AutoCADの達人が教えてくれるベストテクニック100 (エクスナレッジムック)/エクスナレッジ

¥3,675
Amazon.co.jp