AFsoft WebSite(エーエフソフト・ウェブサイト)
 

オペレーティング・システムについて

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
<AutoCAD LT98> DIESELによるコマンドマクロの組み方
★ツールバーを作ろう!
(1)メニュー「ツール|カスタマイズ|ツールバー」を選択「カスタマイズ」ダイアログが表示されます。まずは、ツールバーを作成しましょう。「ツールバー」タグになっている事を確認して下さい。
(2)[新規作成]をクリック「ツールバーを新規作成」ダイアログが表示されます。ツールバー名を入力します(デフォルト:ツールバー1)。"メニュー グループにツールバーを保存"の入力欄は、「ACLT」のままにしておきます。[OK]をクリック。
(3)ツールバーリストに、(2)で指定したツールバー名が登録。チェックマークが入っていない場合には、チェックします。浮動ツールバー状態になっているので、ドラッグしてメニューの下に移動します。するとメニューの下にひっつきます。
(4)「カスタマイズ」ダイアログの中の「コマンド」タグを表示、分類一覧の中の「ユーザー定義」をクリックします。そして画面右のコマンド一覧の中の「ユーザー定義ボタン」をクリックして反転させた状態で、先程作成したツールへその「ユーザー定義ボタン」という文字を移動するような感じでドラッグして、持っていきます。すると、作成したツールバーの中に、絵のないツールボタンが作成されます。
(5) 作成したツールボタンをクリック すると、「カスタマイズ」ダイアログが「ボタンプロパティ」タグの画面となり、
 "名前"欄「ユーザー定義ボタン」
 "説明"欄「ユーザー定義ボタン」
 "このボタンに関連付けられたマクロ"欄「^C^C」←ここにDIESEL文を記述します。右側の[編集]をクリックすると、ツールボタンの絵を作成する事が出来ます。作成・編集を行ったら「適用」をクリックして、「閉じる」をクリックして下さい。
(6)作成したツールボタンをクリックすると、そのDIESEL文で作ったコマンドマクロを実行する事が出来ます。


^Cは、「キャンセル」を意味します。
状況によって、キャンセルを2度しないと、実行中のコマンドを終了させる事が出来ない場合がありますので、コマンドを実行する前に、2度のキャンセル、つまり、「^C^C」と記述するのが通例となっています。
 
割り込み機能を作る場合には、コマンドの前に「'」を付けます。が、作図機能などは割り込みで実行出来ませんので、「'」を付けても割り込み機能にする事は出来ません。
「\」は、入力待ち状態を意味します。
「;」は、改行を入力する、という事を意味します。
「@」は、直前の座標を保持します。

例えば、通常の線分機能は、「どこから」→「どこまで」→「どこまで」・・・と続きますが、これを「どこから」→「どこまで」で終わらせる場合は、
^C^Cline;\\;

となります。また、
*^C^Cline;\\;

とすると、「どこから」→「どこまで」を繰り返すようになります。
 
コマンド名を連続して書くと、バッチファイルのように、その順番でコマンドを実行していきます。
以下は、線分作成→点作成→円作成、と実行していきます。
^C^Cline;\\;point;\circle;\\

以下は、線分を作成して、その終点を中心に半径100の円を作成します。
^C^Cline;\\;circle;@;100


DIESELマクロでは、独自の変数を持つ事は出来ませんが、以下のようなDIESEL文字列関数を使って、システム変数を読み取る事が出来ます。
書式:$(getvar, varname)

例えば、距離計測をした後の距離の値は、システム変数 DISTANCEに入りますので、これを取得する場合には、以下のようになります。
$(getvar, 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
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015 By AFsoft All Rights Reserved.