■特級 2.「nth」マクロ基本 | AutoCADマクロ屋本舗
"nth"を使って、マクロを作成する上で、ベースとなる形状があります。

■特級 1.「nth」とは】で
$M=$(nth,A,0,1,2,3,4,5,6,7)
簡単な"nth"の使用方法を説明しました。
しかしこれは、あくまでも簡単な使用方法です。

この"nth"を使用して、"nth"マクロの0~7に
色々なマクロを割り当てる事で、分岐やループさせる方法となります。


まず、"nth"の値(上記マクロでA)を割り当てる変数を決めます。
多くに用いられている変数は、"setenv"コマンドで指定する"to"です。
※この"to"に深い意味は有りませんが、"go~to"から来たと言われてます。


次に、"nth"マクロの形状です。
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),~記述マクロ1~setenv;to;1,)$(nth,$(getenv,to),,~記述マクロ2~setenv;to;0)^M

この様なマクロの構文がベースとなります。

最初に"to=0"の為、記述マクロ1が実行され
その後、"to=1"の為、記述マクロ2が実行され
さらにその後、"to=0"の為、記述マクロ1へと繰り返されます。


この構文で大事なことは・・・

1)初めに"*"(繰返し)は必ず付けること。
2)開始時は"$M=setenv;to;0;"とし、"to"の値を最初に指定すること。
3)分岐またはループさせるために、"setenv"コマンドで"to"の値を指定すること。


これが"nth"マクロの基本形状です。


●ポイント
最初の「$M=setenv;to;0;」は、マクロの流れ上、何度も繰返し実行されますが
「$M=」の後に記述されていることで評価が遅れ、各「$(getenv,to)」の値は
記述マクロ1・2の最後に記述された「setenv;to;」の値によって分岐します。



ちなみに・・・
"to"ではなく、"useri5"を使用した場合は・・・
*^C^C$M=useri5;0;$(nth,$(getvar,useri5),~記述マクロ1~useri5;1,)$(nth,$(getvar,useri5),,~記述マクロ2~useri5;0)^M
と、なります。("getenv"では無く"getvat"に注意)



AutoCAD 入門&実践バイブル/技術評論社

¥4,410
Amazon.co.jp