概要 - コマンド マクロ文字列

コマンド マクロ文字列は、コマンド プロンプトで許可されている期待される入力と一緒に実行するコマンドおよびシステム変数を AutoCAD に指示するために使用します。特殊文字、DIESEL 式、AutoLISP プログラミング コードをコマンド マクロ文字列に含めることもできます。

カスタム コマンド マクロ文字列を作成すると、次のことに役立ちます。

コマンド マクロ文字列は、以下を使用して定義および編集します。

コマンド マクロ文字列の基本

コマンド マクロ文字列は、一連のコマンドと期待されるオプションおよび値として、特別な構文を使用して定義されますが、AutoCAD のコマンド プロンプトに対する入力と似ています。リボンのクリック ボタンやショートカット メニューの項目など、プログラムのユーザ インタフェースを操作すると、コマンド マクロ文字列が実行されます。コマンド マクロの構文は、単一のコマンド名のような単純なもの(CIRCLE など)もあれば、特殊文字を含む複雑なもの(^C^C_.circle ¥1 など)もあります。

コマンド マクロ文字列で非常に頻繁に使用される特殊文字を次に示します。

注: AutoLISP は、Mac OS 版 AutoCAD LT では使用できません。また ObjectARX は Windows 版および Mac OS 版 AutoCAD LT では使用できません。

次に、AutoCAD のコマンド プロンプトで CIRCLE[円]コマンドを起動して半径 5 の円を描く様子と、同じ入力をコマンド マクロ文字列として表す方法を示します。

コマンド プロンプト シーケンス 対応するマクロ文字列構文
Command: CIRCLE
Specify center point for circle or [3P/2P/Ttr (tan tan radius)]:
Specify radius of circle or [Diameter] <2.5000>: 5
CIRCLE;
\
5;

最終的なコマンド マクロ文字列は、次のようになります。



項目 構文 意味
1 ^C^C ^C^C は、マクロを実行する前に[Esc]を 2 回押すことを意味します。
2 ._CIRCLE; 現在の AutoCAD 言語パックとは無関係に、CIRCLE[円]コマンドを起動します。
3 ¥ 描く円の中心点を指定するよう求めます。
4 5; 円の半径を指定し、CIRCLE[円]コマンドを終了します。

マクロ内のスペースは、AutoCAD のコマンド プロンプトに対して[Spacebar]を押すのと同じであるため、直前のマクロ文字列はセミコロンを付けずに次のように記述することもできます。

^C^C_.circle \5
注: マクロ文字列でセミコロンを使用するとマクロ文字列が読みやすくなるうえ、スペースは直前のコマンドまたはシステム変数に対する入力内の実際のスペースである可能性があるため、セミコロンによって、[Enter]の位置がわかりやすくなります。

次に、AutoCAD のコマンド プロンプトで MOCORO コマンドを使用し、オブジェクトを複写してから、その複写したオブジェクトを回転させる例と、そのコマンド シーケンスがコマンド マクロ文字列としてどのように記述されるかを示します。

コマンド プロンプト シーケンス 対応するマクロ文字列構文
Command: MOCORO
Select objects:
Specify opposite corner:
Select objects:
Base point:
[Move/Copy/Rotate/Scale/Base/Undo]<eXit>: C
Second point of displacement/Undo/<eXit>:
Second point of displacement/Undo/<eXit>: 
[Move/Copy/Rotate/Scale/Base/Undo]<eXit>: R
Second Point or Rotation angle:
[Move/Copy/Rotate/Scale/Base/Undo]<eXit>:
MOCORO;
\
\
;
\
C;
\
; 
R;
\
;

最終的なコマンド マクロ文字列は、次のようになります。



項目 構文 意味
1 ^C^C ^C^C は、マクロを実行する前に[Esc]を 2 回押すことを意味します。
2 ._MOCORO; 現在の AutoCAD 言語パックとは無関係に、MOCORO コマンドを起動します。
3 ¥¥; オブジェクトを選択するよう要求します。ここで 2 つの円記号を使用すると、2 点を指定して窓選択または交差選択を行うことができます。
4 ¥ 選択したオブジェクトの複写に使用する基点を指定するよう要求します。
5 _C; Copy オプションを使用します。
6 ¥; 目的点を指定するよう要求します。
7 _R; Rotate オプションを使用します。
8 ¥ 回転角度を入力するよう要求します。
9 ; MOCORO コマンドを終了します。

実行中のコマンドをキャンセルする

ユーザ インタフェースのボタンをクリックすると、割り当てられているマクロが現在の状況下で実行されます。つまり、このマクロは、現在のプロンプトに応答しようとします。マクロが実行されるときに確実に現在どのコマンドも実行されていない状態にするには、^C コマンド シーケンスをマクロの先頭に置きます。^C 1 つで大部分のコマンドがキャンセルできますが、寸法コマンドからコマンド プロンプトに戻るには、^C^C が必要になり、^C^C^C は -LAYER[画層管理]コマンドの現在のオプションから戻るために必要です。^C^C によってほとんどのコマンド シーケンスをキャンセルでき、使用推奨のシーケンスです。

標準コマンドをマクロで使用する

AutoCAD または AutoCAD ベースの製品の一部であるコマンドは、前にピリオド(.)を付ける必要があります。ピリオドを使用することにより、UNDEFINE[コマンド定義解除]コマンドで定義解除した標準コマンドも使用できるようになります。この予防措置は、同じカスタマイズ(CUI/CUIx)ファイルを共有する他のコンピュータで使用したとき、マクロを確実に動作させます。

注: AutoCAD LT 2024 以降では、コマンドを未定義にすることができます。

マクロの文字を検証する

マクロの文字にはすべて意味があり、空白スペースでさえも意味を持っています。スペースは[Spacebar]を押したと解釈され、スペース文字を入力したか、[Enter]キーを押したのと同じようになります。結果は、コマンド プロンプトに対してコマンドまたはシステム変数を使用した場合と同じです。

注: マクロの最後にスペースを記入すると、[Enter]が押されたと解釈され、コマンドが完了します。

マクロの国際サポート

マクロを最初に作成するとき、通常は、使い慣れた製品の言語のコマンド名およびオプション値を使用して作成します。各コマンドおよびオプションにはローカル名とグローバル名があり、これにより製品の他の言語でも使用することができます。英語版以外のサポートに対して、追加の作業は必要ありませんが、各コマンドまたはオプションの前にアンダースコア文字(_)を記入します。アンダースコア(_)文字は、プログラムに対して、コマンド名またはオプション値を実行する前に、製品のローカル言語に翻訳する必要があることを示します。

単一オブジェクト選択モードを使用する

単一オブジェクト選択モードは、編集コマンドの「オブジェクトを選択」プロンプトで行われる通常の対話を禁止して、1 回のオブジェクト選択で、選択したオブジェクトを返すようにします。1 つのオブジェクトを選択した後に別のプロンプトに応答すると、コマンドは終了されます。

これは、次のマクロに示すように、メニューでは非常に便利です。

^C^C._erase single 

このマクロは、現在実行中のコマンドを終了させ、ERASE[削除]コマンドを実行し、単一オブジェクト選択モードを指定します。マクロを開始した後に、単一のオブジェクトを選択するか、作図領域の何もない部分をクリックして窓/交差選択を指定します。これらの方法を使用して選択したすべてのオブジェクトが削除されます。

マクロでコマンドを繰り返す

マクロを作成した後、他のコマンドを使用する前に、そのマクロを続けて何度か繰り返したい場合があります。マクロ内のコマンドが、[Esc]を押すか ^C で始まる他のマクロを開始するまで繰り返されるように指定するには、先頭にアスタリスク(*)を使用します。

次に、コマンドの繰り返し方法の例を示します。

*^C^C._move Single 
*^C^C._copy Single 
*^C^C._erase Single 
*^C^C._stretch Single Crossing 
*^C^C._rotate Single 
*^C^C._scale Single 
注: この機能は、オプションを選択する場合や、イメージ タイル メニューのマクロには使用できません。

マクロを終了する

特別な終止記号が必要なマクロもあります。たとえば、TEXT[文字記入]コマンドを終了するには、[Spacebar]ではなく[Enter]を押す必要があります。いくつかのコマンドは、終了するために複数の[Spacebar]または[Enter]を押す必要があります。

このような問題は、次に示す 2 つの規則によって回避できます。

いくつかの例を示します。

ucs 
ucs ;

最初の例は、UCS[UCS 管理]コマンドが開始され、行がスペースで終わるため、[Spacebar]が押された状態になります。次のプロンプトが表示されます。

UCS 原点を指定 または [面(F)/名前の付いた UCS(NA)/オブジェクト(OB)/直前(P)/ビュー(V)/ワールド(W)/X/Y/Z/Z 軸(ZA)] <ワールド>:

2 番目の例では、UCS[UCS 管理]コマンドが開始され、[Spacebar]が押された状態になり、次に[Enter]が押された状態になって、既定値の[ワールド]が受け入れられます。

マクロでエコーとプロンプトを非表示にする

マクロ文字は、コマンド プロンプトに対してキーボードから入力したものとして表示されます。このように重ねて表示されることを「エコー」と言います。システム変数 MENUECHO を使用すると、マクロのエコーをオフにすることができます。項目入力のエコーとプロンプトがオンになっている場合、マクロの先頭に ^P と記述すると、エコーとプロンプトが一時的にオフに切り替わります。マクロ内で ^Q を使用することによって、すべてのプロンプトと入力がコマンド ライン履歴に表示されないようにすることができます。