|
||
マクロで関数が使える。簡単なプログラムが書ける。でも、ジャンプが出来ない。
プルダウンメニューでジャンプの代わり?。 変数はいくつ使える? |
ツールバーのマクロを改良してみて分るのだが、キーストロークの単なる記録と解釈できる。メニューバーはプルダウンメニューの入り口。プルダウンメニューは並んだ項目を上から選択していって一まとまりの作業のナビゲーターにできる。
条件ジャンの出来ないマクロのために、このうまい利用法はないものだろうか。こんな思いからメニューファイル
をカスタマイズしはじめた。 プルダウンメニューはメニューファイルの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 // |
// // 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点目を押さえたら、また ボタンをクリックしなければならない。
改良その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
マクロはマスターできた。 プルダウンメニューの活用法は期待したように出来きそうだ。今後、 業務の内容を整理してマクロ化してみよう。こんなプルダウンを充実させて行こう。 作業効率化に役立ちそうだ。 |
|