AutoCADLT2002 Tips−08




  メニュ−ファイルの構造
 マクロで関数が使える。簡単なプログラムが書ける。でも、ジャンプが出来ない。 プルダウンメニューでジャンプの代わり?。
変数はいくつ使える?

 
プルダウンメニュー
 

  ツールバーのマクロを改良してみて分るのだが、キーストロークの単なる記録と解釈できる。メニューバーはプルダウンメニューの入り口。プルダウンメニューは並んだ項目を上から選択していって一まとまりの作業のナビゲーターにできる。 条件ジャンの出来ないマクロのために、このうまい利用法はないものだろうか。こんな思いからメニューファイル をカスタマイズしはじめた。

 プルダウンメニューはメニューファイルのPOPセクションに対応 する。メニュー セクション ***POP1 〜 ***POP16まで使える。
各メニュー項目は名前タグ、ラベル、マクロで構成される。

ID_Quit [AutoCAD LT の終了]^C^C_quit

名前タグは、英数字とアンダースコア(_)文字で構成される。 ラベルは、メニューに[AutoCAD LT の終了]と表示させるもの。 この後にマクロがつづく。

***POP2
ID_MnEdit [編集(&E)]
ID_U [元に戻す(&U)+Z]_u
ID_Redo [やり直し(&R)+Y]^C^C_redo


一つのプルダウンメニューはこのような記述になる。
最初のラベルがメニューバー タイトルを定義し、 ステータス行のヘルプをも定義している。

 
部分メニュー
 

 「ベースメニュー」aclt.mnuとは別に、マクロの勉強用にメニュー を作ることにした。新規にディレクトリを作り、簡単なcivil.mnu を作った。グループ名もツールバーとは別の物にした。
 ツールバーの時と同じようにMENULOADでグループcivilを 作る。最初は極シンプルなMNU。
//
//AutoCADLT menufile
//

***MENUGROUP=Civil

***POP1
               [MACRO]
               [Cancel Command]^C^C             

//
//AutoCADLT menufile end
//

コンパイルされたMNCもにシンプル。
//
//  AutoCAD LT メニュー ファイル - C:\Program Files\AutoCAD LT 2002\civil\Civil.mnc
//

***MENUGROUP=Civil

***POP1
               [MACRO]
               [Cancel Command]^C^C

//
// AutoCAD LT メニュー ファイルの終了C:\ProgramFiles\AutoCADLT2002\civil\Civil.mnc
//

 メニューバーのタブを開くと、右にフルラインアップ の「ベースメニュー」の項目が並ぶ。 左には一つだけポツンと項目がある。  始めてのことはいつも不安なのだが、右の「修正」と「ウィンドウ」の 間を指定して「挿入」のボタンを押した。
 civil.mnuを作るときPOPの番号はどうすればいいのか、 随分調べてみたが、部分メニューはなんでもよかったということ だ。MENULOADがうまく管理してくれる訳だ。
 civil.mnuの役割はこれだけ。あとは作成されたcivil.mnsに「メモ帳」で書き込む。 こうしてメニューマクロのカスタマイズを始めた。カスタマイズというよりは クリエートといったほうがいい。「ベースメニュー」にはない機能の作成なのだ。
 まずは、どれだけマクロとオペレーターが協力してAutoCADLTの能力を引出せるか。 マンマシーンシステムの試作開始。



 
距離計測
 

現状分析

 距離計測のコマンドはDIST。ボタンに割り付けられたマクロは、
'_dist。 割り込みを想定して1回で終る。つまり2点目を押さえたら、また ボタンをクリックしなければならない。

'_dist

*^C^C_dist;\\ 
'(カンマ)は割込使用の記号。

*(カンマ)は繰り返しの記号。
 連続して点を押さえるのなら *_distだろう。と、思ったのだが間違い。*^C^Cのセットで使う。

改良その1

ステータスに距離を表示し[enter]で確認しながらつづけるには、 MODOMACROを使う。
*^C^C_dist;\\;modemacro;$M=$(getvar,distance)

これで点を連続で押さえ、[enter]で確認しながら行ける。
だが、
連続点の中間は2回押さえなければならない。1回ですませたい。
繰り返し*^C^Cはマクロ文頭というルールだから、1行ではむりだ。2行で コーデングするとこうなる。
^C^C,_id
*^C^C_dist;LASTPOINT;\modemacro;$M=$(getvar,distance)

ところうが、キーボードからの確認ではdistは;LASTPOINTを受付けない。
ならば@。これは受け付ける。そこで、
^C^C,_id
*^C^C_dist;@;\modemacro;$M=$(getvar,distance)

ところうが、@の起点が最初の点で変化しない。距離は区間距離にならない。
ダミーの_idをいれる。
^C^C_id
*^C^C_dist;@;'_id;@;modemacro;$M=$(getvar,distance)

これも、割り込みのidではLASTPOINTが動かない。結局距離は0。あきらめよう。

****まとめ*********
端点スナップをONにしておく。
距離計測distを実行。
始点、終点をヒット。
次ぎの区間の始点、終点をヒット。
これを繰り返す。
距離はステータスラインに表示されて行く。
各区間の区切りとして確認の[retern]を入れる。

*^C^C_dist;\\modemacro;$M=$(getvar,distance)

結果論だが、これは繋がっていない線の距離も拾って行ける。
<参考>
[LastPointh表示]^C^Cmodemacro;$M=$(getvar,LASTPOINT)^Z


 
文字記入
 

 表に数字を記入することが多い。結構時間を取る。文字の大きさや位置揃えにも 神経を使う。マクロを組む場合、CAD側の文字設定方法を十分知っておかなければならない。

 表の数字は「一行文字」で書く。コマンドはTEXT。MTEXTもあるが、TEXT が便利。
 TEXTで文字記入をすると、Jオプションで位置を決めないと既定値の 左詰めになってしまう。Jオプション付きでマクロを組んでおこう。

TEXT;J;R;\150;0;文字列;

\はマウスで文字の右下をクリック。この位置で右揃え。
150は1/50の図面で3mmに対応する。0は角度、水平を意味する。
文字を記入して[enter]で改行される。上から下へ一列で並ぶ。
このピッチが既定値だと小さい。大体土木の表は文字3mm,間隔7mmだったが 、CADになって少し小さめでもよくなった。

システム仕様
表を書く前に、文字位置と大きさ、ピッチの調整をするマクロを用意する。


この様な表に書くとして、書き始めの右下位置をマウスでヒット。
文字ピッチ、すなわち行間隔を2点ヒットで読み取る。
文字の高さは既定値として環境変数に記録して使う。

この手順をマクロにするとこうなる。
[表の文字高さセット]^C^C_setenv;mojitaka;\^Z
[表の行高セット(数字入力)]^C^C_setenv;hyoutaka;\^Z
[表の行高セット(2点]^C^C_dist;\\_setenv;hyoutaka;+M=$(getva,DISTANCE);^Z
[記入開始位置(右下)]^C^C_id;\_setenv;strpntx;$M=$(index,0,$(getvar,+ LASTPOINT));_setenv;strpnty;$(index,1,$(getvar,LASTPOINT));^Z
[表文字記入]*^C^C_dist;\\TEXT;J;R;$M=$(getenv,strpntx),$(-,$(getenv,strpnty),+ $(getenv,hyoutaka));$(getenv,mojitaka);0;$(fix,$(getvar,DISTANCE))^Z


 DIESEL関数も少ないので理解は早い。出来ることとできないことの判断が すぐつく。1週間のセットアップの予定をもう1週間追加した。AutoCADLT マクロはマスターできた。
 プルダウンメニューの活用法は期待したように出来きそうだ。今後、 業務の内容を整理してマクロ化してみよう。こんなプルダウンを充実させて行こう。 作業効率化に役立ちそうだ。

2003.10.14
by Kon