例えば、【■上級 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