アイコンに割り当てる機能はコマンド欄に記述していくのですが、コマンド欄に入力する内容には形式があります。
この記事では、形式として利用可能な内容について解説します。

1686718073491-QiP3RB3vaR機能に割り当てるコマンドの欄


コマンド名

_LINEや_COPY など CAD のコマンド名です。
単純なコマンドを実行するだけであれば、利用可能なツールとしてリストアップされていますので、新規でツールを追加する必要はなく、リストから選択してツールバー上やリボンなど、任意の場所に配置するだけです。
既存機能のコマンド欄を少し変更してカスタマイズするということも可能です。なお、コマンド名には、コマンドエイリアスも利用できます。

コマンド マクロ文字列

コマンド マクロ文字列は、特別な意味を持つ文字列です。
キーボード入力を文字で代替指定するものと考えるとわかりやすいかもしれません。
コマンド マクロ文字列で特に頻繁に使用される特殊文字を次に示します。

・ ^C
[Esc]キーの入力を意味します。コマンドマクロ内では、実行中のコマンドを終了させてから実行するという流れを指示するため、最初に ^C^C として頻出します。

・ ;(セミコロン)
[Enter]キーの入力を意味します。

(半角スペース)
スペースキーの入力を表します。多くの場合セミコロンの[Enter]キーと同じ意味です。長いマクロ内ではスペースだと実行内容の分かりにくくなるのでセミコロンが使われます。

・ ¥ (円記号または \ バックスラッシュ)
ユーザ入力のための一時停止を表します。主にコマンド途中での値の入力や図形選択、座標入力をさせたい時に使用します。

・ ' (アポストロフィ)
続けて記述するコマンドを割り込みモードで使用する指示です。
'osnap のような形で使用します。

・ ___ (アンダースコア)__
続けて指定されたコマンドまたはオプションがグローバル名/英語名であることを意味します。日本語版で利用する場合は英語名と同じなため無くても問題ありません。(ドイツ語版やフランス語版などでは必要。)
'_osnap のような形で使用します。

・ . (ピリオド)
コマンドの標準定義を使用する指示です。
'_.osnap のような形で使用します。

・ * (アスタリスク)
コマンドを繰り返します。例えば "*^C^C_line;\;" とすれば繰り返しの単線分のコマンドが出来上がりです。


マクロで使用される特殊文字一覧

その他に BricsCAD V23 で対応している特殊文字は次のとおりです。
他CADからの移行検討用に、未対応のものも掲載します。


文字: 内容
;  : [Enter]を入力します。
[半角スペース] : スペースを入力します。[Spacebar]を押したのと同じ状態です。
¥  : ユーザの入力待ち状態にします。
.  : UNDEFINE[コマンド定義解除]コマンドによって無効にされているコマンドも使用できます。
_  : 続けて指定されたコマンドまたはオプションがグローバル名/英語名であることを意味します。
=*  : 現在のトップ レベルのプルダウン メニュー、ショートカット メニュー、イメージ タイル メニューを表示します。(Windows のみ)
*  : 別のコマンドを開始するか現在のコマンドを終了するまで、コマンドを繰り返します。
$  : 条件 DIESEL マクロ式($M=)を導入します。
^] : 未対応 旧来の "._SELECT;$M=$(if,$(eq,$(getvar,cmdnames),SELECT),,)" を使用してください
^B  : スナップのオン/オフ切り替え。(ショートカット:F9 に相当)
^C  : アクティブなコマンドまたはコマンド オプションをキャンセルします。([Esc]キーに相当)
^D  : ダイナミック UCS のオン/オフ切り替え。(ショートカット:F6 に相当)
^E  : 次のアイソメ平面を設定します。(ショートカット:CTRL+E に相当)
^G  : グリッドのオン/オフ切り替え。(ショートカット:CTRL+G に相当)
^H  : [Backspace]キーの入力。
^I  : 未対応 (LISPでの処理に移植する事をおすすめします。)
^M  : 未対応 (LISPでの処理に移植する事をおすすめします。)
^O  : 直交モードのオン/オフ切り替え。(ショートカット:CTRL+L に相当)
^P  : MENUECHO のオン/オフ切り替え。
^Q  : 未対応 (LISPでの処理に移植する事をおすすめします。)
^R  : 未対応 (LISPでの処理に移植する事をおすすめします。)
^Sx : 未対応 (LISPでの処理に移植する事をおすすめします。)
^T  : タブレット モードのオン/オフ切り替え。(ショートカット:CTRL+T に相当)
^V  : 現在のビューポートを変更します。(ショートカット:CTRL+R に相当)
^X  : 未対応 (LISPでの処理に移植する事をおすすめします。)
^Z  : マクロの末尾にスペースが自動的に追加されるのを抑止する null 文字として使用します。




DIESEL式

コマンドマクロでは、簡易なプログラム処理が行えるものとしてDIESEL式というテキスト処理の仕組みがあります。
たとえば、次のようなコマンドマクロを登録して実行すると、図面ファイルの設定に応じて、メートル図面なのかインチ図面なのかをステータスバーに表示することが出来ます。


^C^C_modemacro;$M=$(if,$(eq,$(getvar,measurement),0),"インチ図面です","メートル図面です");


DIESEL式については、こちらの記事で詳細を解説していますのでご覧ください。



他のCADからインターフェス(メニュー)を移行して際に問題が出た場合の対処方法

他の DWG系CADでも、コマンドマクロが利用可能なものがありますが、それらの CAD から BricsCAD へ環境を移行しようとしたときに、カスタマイズしたものが思ったとおりに動かないというケースがあるかもしれません。

その場合、 BricsCAD では Lite から LISP の API が利用可能 となっていますので、LISP を活用してカスタマイズで行っている内容を移植することをおすすめします。

LISP はコマンドマクロ内でも利用可能ですので、単純にマクロを LISP の処理に変換して利用する形でもいいですし、移植する際に値のチェックを行うなど状況に依存しないエラーに強い形で処理を行うように外部のプログラムファイルとして作成して使用すると言ったことも可能です。

DIESEL と LISP を比較すると、LISP の方がはるかに自由度が高いため、CAD に使いたい機能がないなどの理由を除けば、ほとんどのものは移植できるはずです。

以上、コマンドマクロ、メニューマクロのカスタマイズに関連した情報を解説いたしました。

sugihara-avatericon.png
Hiroki Sugihara - Solution Consultant

デジタルなものづくりに引き寄せられて CAD&CG の世界に入った Hiroki Sugihara は、長年 CAD、WEB、DTP など幅広い経験を持っています。Lisp プログラムでもあり建築、設備系のアプリケーション開発での知見や、長い DWG系CADの業界経験を活かして BricsCAD の導入を支援するため Bricsys Japan の立ち上げメンバーとして活動しています。