システム変数"CMDACTIVE"
です。
ヘルプには、以下の様に記述してあります。
通常のコマンド、割り込みコマンド、スクリプト、およびダイアログ ボックスについて、それぞれアクティブかどうかを示すビット コードを格納します。値は、次のビット コードの和になります。 1 通常のコマンドがアクティブ 2 通常のコマンドと割り込みコマンドがアクティブ 4 スクリプトがアクティブ 8 ダイアログ ボックスがアクティブ |
実際に、コマンドラインにて
システム変数"CMDACTIVE"を実行すると
コマンド: cmdactive
CMDACTIVE = 1 (読み込み専用)
※この時、コマンド"CMDACTIVE"が実行中(アクティブ)の為
CMDATIVEの値は"1"となります。
次に、あるコマンドの実行途中に
割込みコマンドとして、システム変数"CMDACTIVE"を実行すると
コマンド: copy
オブジェクトを選択: 'cmdactive
CMDACTIVE = 3 (読み込み専用)
この様に表示されます。
※この時、コマンド"COPY"及び、割込みコマンド"'CMDACTIVE"が実行中の為
CMDATIVEの値は"1+2=3"となります。(ヘルプにて"CMDACTIVE"参照)
又、以下の様なマクロを作成し、実行してみると・・・
^C^C「CMDACTIVE=$M=$(getvar,cmdactive)」^Z |
コマンドラインに
コマンド: 「CMDACTIVE=0」
この様に表示されます。
※この時、コマンドが実行されていない為、CMDATIVEの値は"0"となります。
何もコマンドが実行されていない状態では
システム変数"CMDACTIVE"の値は0であり
通常のコマンド・割り込みコマンド・スクリプト・ダイアログボックスが実行中の場合
システム変数"CMDACTIVE"の値は0以外となります。
よって、システム変数"CMDACTIVE"をIF文で使用することが可能です。
では、使用例を紹介します。
最も使用されているのが
"SELECT"[オブジェクト選択]コマンド です。
■検証動作1
コマンドが何も実行されていない状態で、オブジェクトを選択し
"SELECT"コマンドを実行すると
コマンド: select
認識された数: 1
コマンド:
"SELECT"コマンドが終了となり、コマンドは終了します。
■検証動作2
コマンドが何も実行されていない状態で、オブジェクトを選択せずに
"SELECT"コマンドを実行すると
コマンド: select
オブジェクトを選択:
オブジェクト選択状態で有り、すなわちコマンドがアクティブ状態です。
この2つの動作を、システム変数"CMDACTIVE"を使い、IF文で判断させ
^C^C_select;$M=$(if,$(getvar,cmdactive),\,) |
この様にマクロを記述する事で
・オブジェクト選択→ツールバー選択
・ツールバー選択→オブジェクト選択
この両方が可能となるマクロを作成することが出来ます。
これは、検証動作1・2の特性により
オブジェクトを選択してから、"SELECT"コマンドを実行した時
"SELECT"コマンドは、すぐに終了となる為
コマンドがアクティブ(実行中)では無く
システム変数"CMDACTIVE"の値が0である。
この時、SELECTコマンドは終了している為、IF文内→何もしない
又、オブジェクトを選択せずに、"SELECT"コマンドを実行した時
"SELECT"コマンドがアクティブ(実行中)で
システム変数"CMDACTIVE"の値が1である。
この時、SELECTコマンドは実行中の為、IF文内→"\"にて"SELECT"コマンド継続
●マクロ使用例
^C^C_select;$M=$(if,$(getvar,cmdactive),\,)_copy;p;; |
この様に、コマンドの特性を活かし、システム変数"CMDACTIVE"を使用する事で
簡易的では有りますが、自動判断をさせるコトが出来ます。
AutoCADカスタマイズの手引き―AutoCAD LT 2000i/AutoCAD 2000i対応/大浦 誠

¥2,940
Amazon.co.jp