■特級 3.「nth」マクロ検証 | AutoCADマクロ屋本舗
"nth"を使ったマクロを検証してみましょう。

例えば【■初級 3.回転コピー】 で作成した

■回転コピー
^C^C_select;\_copy;p;;\@;_rotate;p;;@;\

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


"nth"を使った、マクロの基本形状は
■特級 2."nth"マクロ基本】でも述べましたが
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),~記述マクロ1~setenv;to;1,)$(nth,$(getenv,to),,~記述マクロ2~setenv;to;0)^M
この形状です。


この記述マクロ1,記述マクロ2に、回転コピーマクロを割り付けてみると
*^C^C$M=_setenv;to;0;$(nth,$(getenv,to),_select;\_copy;p;;\@;_setenv;to;1,)$(nth,$(getenv,to),,_rotate;p;;@;\_setenv;to;0)^M
この様になります。

上記マクロでは
記述マクロ1 = _select;\_copy;p;;\@;
記述マクロ2 = _rotate;p;;@;\
この様に割り付けましたが、違う割り付け方も可能です。

例えば・・・
*^C^C$M=_setenv;to;0;$(nth,$(getenv,to),_select;\_setenv;to;1,)$(nth,$(getenv,to),,_copy;p;;\@;_rotate;p;;@;\_setenv;to;0)^M
この様に割り付けても同じです。

上記マクロでは
記述マクロ1 = _select;\
記述マクロ2 = _copy;p;;\@;_rotate;p;;@;\


ここで、誰もが気になる部分は、「,(カンマ)」の数だと思います。

~記述マクロ~の手前にある「,(カンマ)」は、システム変数"to"の値を指しています。

"to"=0なら1つ
"to"=1なら2つ


また、"nth"にマクロを割りつけた場合は
$(nth,,0,1,2,3,4,5,6,7)
この形状から、最大8個割り付け可能です。

※注意
ただし!割り付けたマクロの長さは制限されます。
"nth"内に記述したマクロが長過ぎる場合、動作しません。



以上の事から、回転コピーマクロを以下の様に割り付ける事が可能です。
*^C^C$M=_setenv;to;0;$(nth,$(getenv,to),_select;\_setenv;to;1,,)$(nth,$(getenv,to),,_copy;p;;\@;setenv;to;2,)$(nth,$(getenv,to),,,_rotate;p;;@;\_setenv;to;0)^M

上記マクロでは
記述マクロ1 = _select;\
記述マクロ2 = _copy;p;;\@;
記述マクロ3 = _rotate;p;;@;\


ここで、"nth"で区切られた最後の部分
_setenv;to;1,,) や setenv;to;2,) の「,(カンマ)」の数にも注意!!
この「,(カンマ)」は、"nth"の残りの数と覚えておくと良いでしょう。

前後の「,(カンマ)」は、表記しないと動作しないので
付け忘れの無い様に注意しましょう。


尚、今回作成した"nth"による回転コピーマクロは
あくまでも検証の為のみに作成したもので
実際使用するマクロとして"nth"にする必要は、全くありません。^^;



速攻解決AutoCAD LT逆引きリファレンス―2013/2012/2011/2010/200.../ソシム

¥3,675
Amazon.co.jp