コマンドの組合せと一部Diesel関数を利用したマクロの作成方法を解説します。
特殊文字
マクロに使用する代表的な特殊文字の機能を説明します。

注)マクロで使用できるのは、半角の英数字と記号です。
記号 機   能
^C Escapeを実行
マクロの文頭に^C^Cとして記述され、実行中のコマンドを終了させます。
Enterの実行
例) ^C^C_line; ⇒ 線コマンドを実行します。
\ ユーザー入力部
例) ^C^C_line;\\ ⇒ 線の始点と終点の入力待ちになります。
* マクロを繰返し実行させます。
例) *^C^C_line;\\; ⇒ 単独線を繰返し作図します。
@ 直前の点を指定
例) ^C^C_line;\\;cecolor;4;line;@;\;  ⇒ 線色を変更して2本目の線を作図
コマンド
マクロには、AutoCADのコマンド(コマンドエイリアス)が使用できます。
作図コマンド以外のコマンドの一部を紹介します。
コマンド 機   能
id 点を指定します。
select オブジェクトを選択します。
dist 2点の距離を測定し、システム変数distanceに保存されます。
ucs 座標軸の移動・回転に使用します。
cecolor 同一画層の中で線色を変更します。
layer 画層管理を行います。
setvar 変数を設定します。
non Oスナップを一時解除します。
オプション
オブジェクトの選択に使用するオプションを説明します。
記号 機能
p 直前に選択したオブジェクトを選択
例)^C^C_select;\copy;p;;\\
l 直前に作図したオブジェクトを選択
例)^C^C_line;\\;move;l;;\\
all すべてのオブジェクトを選択
例) ^C^C_select;all;;copy;p;;\\
Diesel式
Diesel式は、$m=$(関数名,引数1「引数2」・・・) という数式で表記されます。
例) $m=$(getvar,distance)
Diesel関数 
本ページで使用しているDiesel関数を説明します。
関数 用   途
getvar $(getvar,vername)
システム変数の値を返します。
nth $(nth,which,A,B,C,・・・・)
条件によってマクロを分岐させます。
which=0の時、マクロAへ  Which=1の時、マクロBへ
システム変数
システム変数には、ユーザーが任意に設定、変更可能な変数がuserr1〜userr5まであります。
変数は、直接コマンドとして入力でき前述のgetvarで読み出します。 

マクロ講座というほど大げさなものではありませんが、実用例を使ってマクロの作成方法を
解説してみます。 まずは、特殊記号の使い方です。


注)コマンドの前のアンダーバーは、使用しなくても問題ありません。
また、コマンドは、コマンドエイリアスを使用しても実行できます。
通常のオフセットコマンドは、コマンドを終了しないと新たなオフセット値を入力できません。
 オフセット値を変更しながら、作図が可能なマクロで、^C/\/* の使い方を説明します。 
 ^C^C_offset;\\\;
 ^C^C  ⇒ ESCを2回実行します。これは、実行中のコマンドを終了させる為で、マクロの
先頭に必ず必要です。 
 _offset; ⇒ オフセットコマンドを(Enter)で実行します。
 \\\; ⇒ ¥はユーザー入力の実行待ちになります。
オフセット値入力/オブジェクト選択/方向指示の入力が終了すると でコマンドを終了します。 
 このマクロを再実行する為に、先頭に を追加します。
 *^C^C_offset;\\\;
オフセット値を繰返し使用する場合は、右クリック(Enter)になります。、
回転・移動のマクロを使って@ の使い方を説明します。
 ^C^C_select;\_move;p;;\\_rotate;p;;@;\
 _select; ⇒ オブジェクトの選択を行います。次に \ を使用して、複数のオブジェクトを
選択します。選択が終了したら、右クリックで確定します。 
 _move;p;;\\ ⇒ 移動コマンドを実行し、オプションの p を使用します。
select コマンドで選択した、オブジェクトが選択され、 ;; で確定します。
次の \\ は、基点指定/移動位置指定のユーザー入力待ちになります。
 _rotate;p;;@;\ ⇒ 回転コマンドを使用して、移動した位置でオブジェクトを回転させます。
p;;は、移動した位置で、移動したオブジェクトを再度、選択・確定します。
@; は、移動後の基点の位置(直前の点を指定)を回転中心として指定します。
最後の \ は回転角度の入力待ちで、入力するとコマンドが終了します。
円の水平方向の中心線を作図するマクロを使って、id/non/dist/getvar/distance
 
の使い方を説明します。
 ^C^C_id;_cen;\_dist;@;\_line;non;@-$m=$(getvar,distance),0;@$m=$(*,$(getvar,distance),2),0;;
 _id;_cen;\ ⇒ id は点を指定します。Oスナップの中心点を取得する cen を続けることにより
\ で円をクリックすると、円の中心点が指定されます。 
 _dist;@;\ ⇒ dist は、2点の距離を測定し、測定値をシステム変数 distance に保存します。
\ で円の外側をクリックすると、円の中心点からの距離が測定されます。 
 _line;non; ⇒ 座標を指定して線を作図する場合、OスナップがONだと、正しく線が作図
できない場合があります。座標を指定する前に、non で一時的にOスナップを解除します。 
 @-$m=$(getvar,distance),0; ⇒ 始点の座標を指示します。
getvar はシステム変数 distance の値を返します。例えば、dist で測定した円の中心点からの距離が50の場合、-50,0が始点の座標になります。
座標は、相対座標ですので先頭に @ を付加します。 
 @$m=$(*,$(getvar,distance),2),0;; ⇒ 終点の座標を指示します。
終点座標は、円の中心を通って対象の位置ですから、上記の場合、50,0 が終点の座標に
なります。始点からの相対座標は、100,0になるので、システム変数 distance の2倍の値を
返す必要があります。 Diesel式は、$(*,$(getvar,distance),2) となります。  
中心点から長方形(正方形)を作図するマクロを使って、システム変数 userr
 使い方を説明します。
^C^C_id;\userr1;\userr2;\_rectang;non;@-$m=$(/,$(getvar,userr1),2),-$(/,$(getvar,userr2),2)
;non;@$(getvar,userr1),$(getvar,userr2);
 _id;\ ⇒ 中心点を指定します。
 _userr1;\ ⇒ 幅を入力します。
 _userr2;\ ⇒ 高さを入力します。
幅と高さを入力すると、 $(getvar,userr1)$(getvar,userr2) から、長方形の対角となる座標が
与えられ、rectang コマンドで長方形が作図されます。 
システム変数 userr と Diesel 関数 nth を使用して座標軸を回転させる
 マクロを使ってマクロの分岐の方法を説明します。 
 ^C^C_userr1;\ucs;z;$m=$(nth,$(getvar,userr1),0;,90;,180;,270;) ・・・・・
nthを使用すると、条件によってマクロを分岐することができます。
 $(nth,which,A,B,C,・・・・)  whichは0,1,・・・・・・・・・の整数
  whichが0の時、マクロAを実行、
  whichが1の時、マクロBを実行
 _userr;\ ⇒ 0〜3の整数を入力します。
 ucs;z; ⇒ 座標軸を オプション z で回転させます。
 $(nth,$(getvar,userr1) ⇒ 直前に入力した、userr1の値でマクロを分岐します。

   userr1=0 ⇒ 回転なし (ucs;z;0;を実行)
   userr1=1 ⇒ 反時計回りに90°回転 (ucs;z;90;を実行)
   userr1=2 ⇒ 反時計回りに180°回転 (ucs;z;180;を実行)
   userr1=3 ⇒ 反時計回りに270°回転 (ucs;z;270;を実行)
nth で分岐した後は、マクロを続けて記述することにより座標軸を回転した後の操作を指定する
ことができます。
簡単ですがマクロ作成方法の説明は、ここまでです。
作成したマクロをAutoCADに登録する方法は、AutoCADのバージョンによって異なるので、
解説書等を参照してください。

CAD & Drawing updated 06.11.29