|
<AutoCAD LT98> DIESELによるコマンドマクロの組み方 |
★ツールバーを作ろう!
(1) | メニュー「ツール|カスタマイズ|ツールバー」を選択「カスタマイズ」ダイアログが表示されます。まずは、ツールバーを作成しましょう。「ツールバー」タグになっている事を確認して下さい。 |
(2) | [新規作成]をクリック「ツールバーを新規作成」ダイアログが表示されます。ツールバー名を入力します(デフォルト:ツールバー1)。"メニュー グループにツールバーを保存"の入力欄は、「ACLT」のままにしておきます。[OK]をクリック。 |
(3) | ツールバーリストに、(2)で指定したツールバー名が登録。チェックマークが入っていない場合には、チェックします。浮動ツールバー状態になっているので、ドラッグしてメニューの下に移動します。するとメニューの下にひっつきます。 |
(4) | 「カスタマイズ」ダイアログの中の「コマンド」タグを表示、分類一覧の中の「ユーザー定義」をクリックします。そして画面右のコマンド一覧の中の「ユーザー定義ボタン」をクリックして反転させた状態で、先程作成したツールへその「ユーザー定義ボタン」という文字を移動するような感じでドラッグして、持っていきます。すると、作成したツールバーの中に、絵のないツールボタンが作成されます。 |
(5) |
作成したツールボタンをクリック すると、「カスタマイズ」ダイアログが「ボタンプロパティ」タグの画面となり、
"名前"欄「ユーザー定義ボタン」
"説明"欄「ユーザー定義ボタン」
"このボタンに関連付けられたマクロ"欄「^C^C」←ここにDIESEL文を記述します。右側の[編集]をクリックすると、ツールボタンの絵を作成する事が出来ます。作成・編集を行ったら「適用」をクリックして、「閉じる」をクリックして下さい。 |
(6) | 作成したツールボタンをクリックすると、そのDIESEL文で作ったコマンドマクロを実行する事が出来ます。 |
^Cは、「キャンセル」を意味します。
状況によって、キャンセルを2度しないと、実行中のコマンドを終了させる事が出来ない場合がありますので、コマンドを実行する前に、2度のキャンセル、つまり、「^C^C」と記述するのが通例となっています。
割り込み機能を作る場合には、コマンドの前に「'」を付けます。が、作図機能などは割り込みで実行出来ませんので、「'」を付けても割り込み機能にする事は出来ません。
「\」は、入力待ち状態を意味します。
「;」は、改行を入力する、という事を意味します。
「@」は、直前の座標を保持します。 |
例えば、通常の線分機能は、「どこから」→「どこまで」→「どこまで」・・・と続きますが、これを「どこから」→「どこまで」で終わらせる場合は、
となります。また、
とすると、「どこから」→「どこまで」を繰り返すようになります。
コマンド名を連続して書くと、バッチファイルのように、その順番でコマンドを実行していきます。
以下は、線分作成→点作成→円作成、と実行していきます。
^C^Cline;\\;point;\circle;\\ |
以下は、線分を作成して、その終点を中心に半径100の円を作成します。
DIESELマクロでは、独自の変数を持つ事は出来ませんが、以下のようなDIESEL文字列関数を使って、システム変数を読み取る事が出来ます。
例えば、距離計測をした後の距離の値は、システム変数 DISTANCEに入りますので、これを取得する場合には、以下のようになります。
ただし、メニューで関数を使う場合には、$section = submenuの形態を取る必要があるため、ここでも同様な形態にする必要があります。
例:$M = $(getvar, DISTANCE) |
以下は、距離計測をした結果を文字列として記入します。
^C^Cdist;\\text;\\\$M=$(getvar,DISTANCE) |
(textの後の3つの\は、それぞれ、位置、高さ、角度の入力です)
距離計測値の精度が細かすぎる、という場合には、以下のように rtos関数を使って実数を編集します。
^C^Cdist;\\text;\\\$M=$(rtos,$(getvar,DISTANCE),2,3) |
関数を複数使う場合には、Lisp風に、囲ってやります。
rtos関数の書式は、以下のようになります。
$(rtos, value, mode, prec)
value : 編集しようとする実数表現
mode : 単位系の表記形式
1: 指数表記 1.55E+01
2: 十進表記 15.50
3: 工業図面表記 1'-3.50"
4: 建築図面表記 1'-3 1/2"
5: 分数表記 15 1/2
prec : 精度 |
関数には、以下のようなものがあります。
(パラメータ数は9個までですので注意して下さい)
+(加算)
-(減算)
*(乗算)
/(除算)
= (等しい)※1
< (より小さい)※1
> (より大きい)※1
!= (等しくない)※1
<= (以下)※1
>= (以上)※1
and
(ビット論理積)
or
(ビット論理和)
xor
(ビット排他論理和)
angtos
(角度値編集)
edtime
(日付と時刻を返す)
eq(文字列比較
1:同じ 0:同じでない)
eval
(評価結果を返す)
fix
(小数部分を切り取る)
getenv
(環境変数の値を取得)
getvar
(システム変数の値を取得)
if
(条件判断 expr:条件式)
index
(トークン切り出し)
linelen
(ステータス行長さを取得)
nth
(引数のいずれかを取得)
rtos
(実数編集)
strlen
(文字長さを取得)
substr
(文字の一部を取得)
upper
(大文字変換) |
$(+, val1 [, val2, ..., val9])
$(-, val1 [, val2, ..., val9])
$(*, val1 [, val2, ..., val9])
$(/, val1 [, val2, ..., val9])
$(=, val1, val2)
$(<, val1, val2)
$(>, val1, val2)
$(!=, val1, val2)
$(<=, val1, val2)
$(>=, val1, val2)
$(and, val1 [, val2, ..., val9])
$(or, val1 [, val2, ..., val9])
$(xor, val1 [, val2, ..., val9])
$(angtos, value [,mode,precision])
$(edtime, time, picture)
$(eq, val1, val2)
$(eval, str)
$(fix, value)
$(getenv, varname)
$(getvar, varname)
$(if, expr, dotrue [, dofalse])
$(index, no, string)
$(linelen)
$(nth,which,arg0 [,arg1,...,arg7])
$(rtos, value [, mode, precision])
$(strlen, string)
$(substr, string, start [,length])
$(upper, string)
|
※1:真の場合は1,偽の場合は0を返す
以下は、面積計測をした結果を文字列として記入します。
^C^Carea;O;\text;\\\$M=$(rtos,$(getvar,AREA),2,3) |
以下は、現在の図形範囲を長方形として作図します。
^C^CRECTANG;$M=$(index,0,$(getvar,EXTMIN)),$(index,1
,$(getvar,EXTMIN));$M=$M=$(index,0,$(getvar,EXTMAX))
,$(index,1,$(getvar,EXTMAX)) |
以下は、直交線を作図します。
^C^CUCS;OB;\;O;_int;\ORTHO;ON;LINE;@;\;ORTHO;OFF;
UCS;W; |
|
|
CAD装置(1)
CAD装置(2)
メディア
AutoCADの
DIESELマクロ
CSV
DXF
PCES
IGES
STEP
数学とCAD
CAD作ろ!
CADを考える
M7
Jw_cad
|