初歩のDIESELマクロ

 <項目>
 マクロの基礎
 座標の指定方法
 直交モードを切り替える方法
 寸法線の入力方法
 寸法線の入力方法 その2
 数値を入力して矩形を作図
 図形スナップ
 DIESEL関数一覧
 使用できる特殊文字




 もっとも簡単にコマンドが作成できるマクロのご紹介です。

まず、実行方法がわからない方は、実行環境をつくる為に、下記の BricsCAD操作説明 をクリックして説明のページをご覧ください。

ツールバーアイコンの作成方法を記載しております。
ここでのコマンドは、ツールバーアイコンのツールのコマンド欄に記入し実行します。

※尚、ここで作成したツールは、BricsCADをバージョンアップ等した時にデフォルトに戻る場合がありますので、必要なツールは、必ず、部分CUIファイルの作成をしておいてください。
作成方法も下記ページをご覧ください。

BricsCAD操作説明

また、説明文のマクロの中にある¥は表示の関係で全角で記載しておりますが、実際にマクロを入力する時は半角で入力してください。


マクロの基礎

 BricsCADもAutoCAD同様、コマンドラインに直接コマンドを入力することによりそのコマンドを起動することができます。

直線を引きたい場合、直線のコマンドを起動させます。
その場合はコマンドラインに「LINE」と入力し「リターン」キーを押します。
これで、直線コマンドが起動し、コマンドラインに
始点:
終点:
と入力指示が表示されます。

しかし、コマンドラインに「LINE」と入力する時に、既に別のコマンドが起動していた場合、「Esc」キーを押してコマンドを解除する必要があります。
この解除には、最大2回必要な場合があります。
ですから、確実に解除する場合、「Esc」キーを2回押せば全てのコマンドは解除できます。

それから「LINE」コマンドの実行となります。

画像の説明

この一連の動作を記入すると下記の様になります。

^C^C_LINE;

^C^C はEsc キーを2回押してキャンセルしている状態です。
1回では解除出来ない場合があるので、2回押す処理を入れておきます。

_LINEは直線のコマンドのLINEです。_はあってもなくても良いのですがこれからコマンドが始まるという意味でわかりやすくする為に入れておきましょう。
;はリターンキーを押した状態です。
これで、通常の直線コマンドと同様に、連続して直線が作図できます。

※マクロの入力方法がわからない方はBricsCAD操作説明の「ツールの追加」を再度ご覧ください。
一旦ツールアイコンを作成し、そのアイコンをクリックして実行します。

では、ここで、連続した直線では2点を指示して終了するコマンドにしてみます。

^C^C_LINE;¥¥;

¥は入力待ちの状態を意味します。ここでは、¥が2個あるので、2点の入力待ちとなり最後の;でリターンキーを押した状態でコマンドの終了です。

それでは、LINEを他のコマンドに置き換えてみましょう。

コマンド名説明
LINE直線
CIRCLE
RECTANG長方形
POLYGON多角形 ※入力時に辺の数の入力が入ります
DONUTドーナツ ※入力時に内径と外形の入力が入ります
PLINEポリライン

連続で単発な直線を引きたい場合は下記の様に*を付けてください。

*^C^C_LINE;¥¥;

 * で繰り返し処理することができます。
やめる場合は、メニューの[キャンセル]か、Esc ボタンを押してください。

記号のまとめ

記号説明
^C[ESC]一押し
^C^C[ESC][ESC]二押し
入力待ち
;[ENTER]
*繰り返し実行


座標の指定方法

<TOP>


 では、次に座標の指定方法についてです。長方形のコマンドを使用して記述します。

^C^C_RECTANG;¥100,50;

座標はX,Yで指定します。
1点目は手で開始位置を指定すると、2点目が絶対座標の100,50の位置に長方形が
作図できたと思います。
2点目を1点目の相対座標で100,50の位置に入力するには次の様にします。

^C^C_RECTANG;¥@100,50;

座標の前に@ マークを入れることにより、1点目の座標から相対座標のX,Yの位置に固定値の長方形を入力することができます。


直交モードを切り替える方法

^C^C_ORTHO;ON;_LINE;¥¥;_ORTHO;OFF;

 ORTHO;ON は、直交モードをONにする
 ORTHO;OFF は、直交モードをOFFにするコマンドです。

キャンセルを2回実行し、直交モードをONにして、直線を引き、直交モードをOFFにする動作です。

コマンドオプション説明
ORTHOON直交モードON
OFF直交モードOFF


寸法線の入力方法

<TOP>

^C^C_DIMLINEAR;¥¥¥

これで、水平の寸法、垂直の寸法が入力できますが、¥最後に3つあります。
これは、1点目と2点目と寸法値の配置指定をする為です。
ポイントを指示するとコマンドは終了するので、最後に;は不要です。
;を入れると、再度、寸法線コマンドが起動します。

 この様に、使用するコマンドによって動作が異なりますので、一度、コマンド
ラインに実際のコマンドを入力して、動作を確認してみてください。

ただ、単純に寸法線コマンドにしただけでは面白くないので、寸法線を作図する
画層を変えてみましょう。

^C^C_-LAYER;M;DIM;;_DIMLINEAR;¥¥¥_-LAYER;S;0;;

 -LAYER で画層の作成ができます。BricsCADでは LAYERと入力すると
「図面エクスプローラ」が起動しますので、直接画層管理する場合は、
LAYERの前に - を付けてください。次の M が作成オプションです。
既に同じ画層がある場合は作成しないので、便利です。
無い場合のみ作成します。画層名 DIM を入力して ;、繰り返しになる
のでもう一度 ; を入れておきます。

次に、寸法線コマンド DIMLINEAR で入力を3回して最後に 0 の画層
に戻しています。画層を変更するのは、-LAYER の S を指定し、変更したい
画層を指定します。
寸法線を作図する時に、決まった画層に作図できるので、ちょっと便利です。

いろいろ試してみてください。

では、ついでに DIM画層の色を黄色に変えてみましょう。

^C^C_-LAYER;M;DIM;C;2;DIM;;_DIMLINEAR;¥¥¥_-LAYER;S;0;;

C;2;DIM 

を追加しました。C は色指定、2 は黄色、DIMは色を指定する画層名の指示です。

コマンドオプション説明
-LAYERM画層作成
C画層の色指定
S現在画層にする設定
DIMLINER寸法線


色番号
水色


寸法線の入力方法 その2(DIESELを使用)

<TOP>

 今までは、マクロのみ使用していましたが、いよいよDIESELマクロ登場です。
今回作ったマクロは、寸法線を作図して全て 0画層に戻すという仕様でした。
これでは、画層いろいろつくって作業している場合、面白くありません。
寸法を書く前の作業画層に戻したいものです。
そこで、DIESELの出番です。

^C^C$M=_-LAYER;M;DIM;C;2;DIM;;_DIMLINEAR;¥¥¥_-LAYER;S;$(GETVAR,CLAYER);;

少し長いですが、赤いラインの部分が追加されました。
後は、同じマクロです。

この赤い部分を説明しますと、

$M=  : これは、マクロ処理を一時ストップして 「$(・・・)」を先に
処理してくださいというコマンドです。

$(GETVAR,CLAYER) : このコマンドの $ はここにDIESELがあるという
目印の様なものです。$はその後ろにある(・・)の中身を処理して文字や数値に
置き換わります。
GETVAR (DIESEL関数)は次のシステム変数の値を取り出します。
CLAYER は現在画層を指定するコマンドです。
ここでは、次が CLAYER ですから、現在画層の値を取り出すことになります。
現在画層が D1 であれば、D1 を取り出し記憶すことになります。

ですから、全てを見てみると、寸法線を引く DIM画層に変更する前に、現在画層を
取得(現在画層が D1であれば、D1を取得)その後、DIM画層に寸法線を引き、
終わったら先ほど取得した D1画層に 現在画層を戻すという処理となります。
いかがですか?わかりましたでしょうか。

コマンドを変えての応用です。

●構築線水平作図コマンド

^C^C$M=_-LAYER;M;HOJYO;C;5;HOJYO;;_XLINE;H;¥_-LAYER;S;$(GETVAR,CLAYER);;

上記マクロの改良版です。
図形の上に水平線を引くと作図してあった図形が隠れてしまいます。
そこで、最後に作図する構築線の表示順番を一番背面にする設定を追加してみました。

^C^C$M=_-LAYER;M;HOJYO;C;5;HOJYO;;_XLINE;H;\;_-LAYER;S;$(GETVAR,CLAYER);;_draworder;L;;B;

これで、構築線が図形の上に表示されなくなったかと思います。

いかがでしょうか、他のコマンドでもいろいろ考えてみてください。

コマンド名オプション説明
$M=マクロを一時的にストップして、$(...)の処理を先にする
GETVAR(DIESEL関数)次のシステム変数の値を取り出す
CLAYER現在画層を指定する
XLINEH水平の構築線
V垂直の構築線
DRAWORDERA表示順序を変更するコマンドです。
全面へ
U背面へ
Cクリア
F最前面へ
U最背面へ
SELECTL最後に作図した図形を選択
P前の選択で選択されていた図形を再選択します


数値を入力して矩形を作図

<TOP>

 つぎに便利なコマンド、setenv、getenv を使って縦、横の長さを入力して矩形を作図してみたいと思います。
setenv で変数に値を設定します。
getenv でその変数の値を取り出します。
しかし、この便利なコマンドが、BricsCADのV13の標準ではありません。
AutoCADLTでは標準コマンドとなっているのですが、AutoCADのレギュラーにも
ありません。(BricsCADはレギュラー仕様なのか?)

<準備>
そこで、AutoCADのレギュラーでマクロを使用する為に使用される LISPを使用することにします。
TdMacros.lsp
上記をインターネットで探すとダウンロードサイトが出てきます。
このLSPをまずロードして動かすことになります。

BricsCADのメニューから[ツール]-[アプリケーションのロード]
初めての場合は、[追加]ボタンを押して「TdMacros.lsp」を選択し[ロード]
[更新を追加]にチェックを入れておくと次回からは[ロード]のみです。

コマンド行に以下のメッセージが表示されたらOKです。
「・・・コマンド行でsetenvとgetenvを使用できます。・・・」

 さて、それでは、最初にマクロを記載します。

^C^Csetenv;Hset;¥setenv;Vset;¥_RECTANG;¥@$M=$(getenv,Hset),$(getenv,Vset)

いかがでしょうか?
setenvとgetenvのところだけですね。

setenv;Hset;¥setenv;Vset;¥ :setenvで変数を設定します。ここでは、Hset、Vsetです。
次の¥で値を入力しHset、Vsetに数値を記憶します。

$M=$(getenv,Hset),$(getenv,Vset) :setenvで変数に値を設定したHsetとVsetの値を最初に取り出し、RECTANGの長さの値にしています。ここは、前にご説明したところですね。@を付けて相対値の座標としています。

少し getvar とにていますが、getvarはシステム変数の値しか取り出すことができません。getenv は setenv で指定した変数の値を取り出すことができるのでとても便利に使うことができます。

いろいろ使ってみてください。

コマンドオプション説明
SETENV変数を設定し値を記憶します
GETENV変数の値を取り出します




図形スナップ一覧

<TOP>

図形スナップコマンド一覧

コマンド名内容コマンド名内容
QUA四半円点MID中点
CEN中心INT交点
TAN接線PER垂線
NODINS挿入基点
NEA近接点NON解除
APP仮想交点END端点
延長交点EXTPAR平行







DIESEL関数一覧

<TOP>

関数名説明
+ (加算)数値の合計の値を返します。
例:$(+,a1,a2,a3,a4) 
a1からa4の合計の値を返します
- (減算)数値の2番目から最後までの合計を 1番目の数値 から減算した結果を返します。
例:$(-,10,2,3,1) 4 
* (乗算)数値全てを乗算した結果を返します。
例:$(*,2,3,4,5)  120
/ (除算)数値a1をa2で除算した結果を返します。
例:$(/,a1,a2)
$(/,6,3)  2
= (等しい)2つの値が等しいと1をそれ以外は0を返します。
例:$(=,A,B)   
AとBが等しい時は1をそれ以外は0を返します。
< (より小さい)最初の値が2番目の値よりも小さいと1をそれ以外は0を返します。
例:$(<,A,B)    
AがBよりも小さいと1をそれ以外は0を返します。
> (より大きい)最初の値が2番目の値よりも大きいと1をそれ以外は0を返します。
例:$(>,A,B)    
AがBよりも大きいと1をそれ以外は0を返します。
!= (に等しくない)最初の値と2番目の値が等しくない場合1をそれ以外は0を返します。
例:$(!=,A,B)    
AとBが等しくない場合1をそれ以外は0を返します。
<= (より小さいか等しい)最初の値が2番目の値より小さいか等しい場合1をそれ以外は0を返します。
例:$(<=,A,B)    
AがBより小さいか等しい場合1をそれ以外は0を返します。
>= (より大きいか等しい)最初の値が2番目の値より大きいか等しい場合1をそれ以外は0を返します。
例:$(>=,A,B)    
AがBより大きいか等しい場合1をそれ以外は0を返します。
and論理積、何々 かつ 何々
angtos指定形式で角度を抽出します
edtime指定した形式で日時を抽出します
eq文字列の2つが等しい場合1をそれ以外は0を返します。
例:$(eq,A,B)    
AとBが等しい場合1をそれ以外は0を返します。
eval
fix少数点以下を切り捨てます
getenv変数の値を取り出す(※TdMacros.lspのロードが必要)
getvarシステム変数から値を取り出す
例: getvar clayer  現在画層を取り出す
if条件式が正しい場合1番目の処理をし、正しくない場合2番目の処理をします。
例:$(if,条件式,正しい場合の処理,違う場合の処理)
index点座標値からx、y、z座標値を抽出する為によく使用されます。
例:$(index,0,$(getvar,lastpoint)) 最後のポイントのx座標を抽出します。
nthnthは分岐することができる関数です。
例:$(nth,値,0,1,2,3,4,5,6,7) 値が0なら0、4なら4の数値を抽出します。
設定できる数は0~7までの8つの値です。
or論理和、 何々 または 何々
strfill
strlen文字列の半角の文字数を抽出します
substr文字列の一部を抽出します
time
upper各言語の規則に従い大文字に変換された 文字列 を返します。
例:$(upper,string)   
stringが小文字の場合、大文字に変換します。
xor
setenv変数に値を代入(※TdMacros.lspのロードが必要)

特殊記号一覧

<TOP>

特殊記号AutoCADBricsCAD説明
;「ENTER」を入力
^M「ENTER」を入力(BricsCADでは使用不可)
^I「TAB」を入力(BricsCADでは使用不可)
空白スペーススペースを入力(コマンド後のスペースは「spacebar」キーを入力)
\ユーザー入力待ち状態
UNDEFINE「名前削除」コマンドによって無効にされている組み込みを使用可とする
_(アンダーバー)コマンドの前につけることによりオプションと区別する
=*現在のトップレベルのイメージメニュー、プルダウンメニュー、ショートカットメニューを表示
$条件付きのDIESELマクロ式($M=)を導入
^Bスナップのオン・オフの切り替え
^C実行中のコマンドをキャンセル
^DUCSのオン・オフの切り替え
^E次のアイソメ平面を設定
^Gグリッドのオン・オフの切り替え
^Hバックスペースを入力
^O直行モードのオン・オフの切り替え
^PMENUECHOのオン・オフの切り替え
^Q全てのプロンプト、ステータスリスト、プリンターへの出力をエコー
^Rコマンドのバージョン対応のオン・オフの切り替え
^Tタブレットモードのオン・オフの切り替え
^V現在のビューポートを変更
^Z最後のコマンドでの「spacebar」の自動追加を抑止する null文字として使用









a:27403 y:9 t:6