2008年09月10日

AutoCAD:ツールパレットとコマンドの繰返し

コマンドの繰り返しってよく使いますよね。
Enterとかマクロボタンに「*」仕込んだりとか。
マクロボタンなら「*」だけど、ツールパレットだと、どうなの?

以下はLT2006/LT2009で確認しています
2008.09 LT2009にて再確認
■コマンドの繰返し動作:「*」とEnter

同一コマンドの繰り返しに使われるものとして「*」と「Enter」があります。
*:マクロ構文を一まとめにしEscでキャンセルするまで繰り返す
Enter:直前コマンドを繰り返す

以下のような基本のマクロ@現在画層に変更
^C^Cselect;$M=$(if,$(getvar,cmdactive),\)chprop;p;;la;$(getvar,clayer);^M
の場合、
・マクロボタン登録:*^C^Cselect;$M=$(if,$(getvar,cmdactive),\)chprop;p;;la;$(getvar,clayer);^M
 →お望みの状態に
・Enter:chpropの実行待ち
→マクロ構文最後のコマンドが繰り返されるので
となります。
2008.09追記:例外として右クリックメニューの『繰り返し(R)』では「直前のマクロ」を繰り返すことができます。
通常繰り返す必要がないものは右クリック→Rで繰り返してもOKです。

■ツールパレットとコマンドの繰り返し:Enter一本

では、ツールパレットではどうでしょう?

基本ルール
*:マクロ構文を一まとめにしEscでキャンセルするまで繰り返す
Enter:直前コマンドを繰り返す
を踏まえて置いて下さい。

ツールパレットにはコマンドを登録することができます。
さらに、独自のプロパティを与えておくことが出来ます。←ツールパレットのウリですね

何度も繰り返して同じボタンを使いたい。そんな時は単純にEnterでOK牧場。
どうして?

それはさっき踏襲した「基本ルール」によってツールパレットのコマンドボタンを再度お呼び出ししてくださるから、です。

■ツールパレットとコマンドの繰り返し:検証・・・?
ではさくっと実験してみましょ。
1)任意のプロパティを与えたコマンド
任意のプロパティを与えた
ボタンA:^C^Cline
ボタンB:*^C^Cline
をご用意ください。
ボタンA:^C^Cline実行→Enter
ボタンB:*^C^Cline実行→Enter・・・

どうなりましたか?
そうですね。

*によって純粋な「line」コマンドを呼び出してしまうため、ボタンBでは上手くいかなかったはずです。
ボタンAをEnterで再度呼び出した場合、「EXECUTETOOL」というのがでてきます。前回ツールパレットで実行したボタンをコレで呼び出すみたいです

2)一塊のマクロ
では先ほどもでてきました 基本のマクロ@現在画層に変更
^C^Cselect;$M=$(if,$(getvar,cmdactive),\)chprop;p;;la;$(getvar,clayer);^M
ですが。

ご推察の通り。「Enter」で繰り返せます。「*」はもちろん不要。
Escキー終了が気に食わなかったアナタに朗報です。
ですのでまぁお好みで。

■まとめ
あくまで基本ルール
*:マクロ構文を一まとめにしEscでキャンセルするまで繰り返す
Enter:直前コマンドを繰り返す
がAutoCADの大原則。

・何をもって「一つのコマンド」としているのか
・呼び出されてるのは何か
・繰り返されているのはドコか
コレをしっかり見極めることが繰り返しコマンドを使う上でのキーではないかなと思われ。

09:13│CAD近辺覚書 | |blogram投票ボタン|日コマ雑記帖