メニューカスタマイズ

提供:GizmoLabs - だいたい CAD LISP なサイト
2021年9月29日 (水) 17:49時点におけるGizmon (トーク | 投稿記録)による版

AutoCAD や 互換CAD のメニューカスタマイズメモ

  • AutoCAD :AutoCAD 2006 以降は CUI コマンドでCAD 上でカスタマイズ、それ以前はテキスト形式のメニュー(.mnu)ファイルを直接作成・編集する形態。
  • IJCAD : IJCAD 2013以降は、 CUI コマンドでCAD 上でカスタマイズ、8 以前は テキスト形式のメニュー(.mnu)ファイルを直接作成・編集する形態。
  • BricsCAD : IJCAD V14 以降は、 CUI コマンドでCAD 上でカスタマイズ、V13 以前は テキスト形式のメニュー(.mnu)ファイルを直接作成・編集する形態。(バージョンは間違ってるかも。)


メニューファイルの種類

  • .mnu … メニューの書式に従って記述されたテキストのファイル。AutoCAD は 2005 まで。IJCAD は 8 まで、BricsCAD は V13 まで標準のメニューファイル。
  • .cui … XML形式のテキストファイル。 AutoCAD は 2006 から 2009まで、IJCADは 2013 から 2014まで、BricsCAD は V14以降で標準のメニューファイル。
  • .cuix … 複数の CUI ファイルなどが ZIPアーカイブされたコンテナファイル。AutoCAD は 2010以降、IJCAD は 2015以降で標準のメニューファイル。


メニューのアイコンについて

  • AutoCAD には、アイコンエディタ的な編集ツールが内蔵されているので、とりあえず作成でよければそこで作成できる。
  • 他の互換CAD には、アイコンエディタ的な編集ツールは内蔵されていないので、別のツールで作成する必要がある。

アイコンの背景透過について

  • AutoCAD で BMP のアイコンファイルは透明色として RGB:192,192,192 の色値が使えた。(2016 まで)。2017 以降は PNG ファイルでの透過を使う必要がある。
  • IJCAD で BMP のアイコンファイルは透明色として RGB:192,192,192 の色値が使えた。(2013 位まで)。2014 以降は PNG あるいは ico のファイルでの透過を使う必要がある。

アイコンのリソース DLL

AutoCAD、BricsCAD、IJCAD では、部分メニューのアイコンをリソース DLL にまとめておいてリソース名で指定して利用することができる。 アイコンリソース DLL の名前は、CUIXファイルの名前と同じにしておいてメニューファイルと同じフォルダに置いとけば読んでくれる。 リソース化されたアイコンを使用することで、若干 CAD の立ち上がりが早くなるがよっぽど遅い環境でもなければ体感はできないと思いますが、アイコンを数百追加してるとかいった場合は検討すると良いと思います。ファイルもスッキリするし。

DLLに格納しておくアイコンのイメージは、

  • AutoCAD 2017 以降は RCDATA の PNGファイル
  • AutoCAD 2017 以前は RCDATA の ICO や BMP ファイル
  • BricsCAD V8 以降:RCDATA の ICO や BMP ファイル
  • IJCAD 2013 以降:ICON の ICO (32bit) や BMP ファイル

という形でバージョンなどによって違いがあるので注意が必要。


アイコンリソースのファイル名

  • AutoCAD、IJCAD、BricsCAD で <menuname>.dll としておいておくと読んでくれます。(mymenu.cuix なら mymenu.dll となる。)
  • AutoCAD 2017 以降の場合、明暗のインターフェスデザインが追加されましたが、ダークテーマ用は <menuname>.dll ライトテーマ用は <menuname>_light.dll で用意しておくと読んでくれる。
  • BricsCAD では、アイコンの BMP ファイルをZIPで固めた RESZ ファイルも使えます。(拡張子変えるだけ。)
  • IJCAD 2021 以降の場合、明暗のインターフェスデザインが追加されましたが、ダークテーマ用は <menuname>DARK.dll ライトテーマ用は <menuname>.dll で用意しておくと読んでくれるっぽい。


メニューマクロの例

少し凝ったことやりたいなら DIESEL も参照。

座標 0,0 に100の円を作成
^C^C_CIRCLE;0,0;100;

指示した座標に100の円を作成
^C^C_CIRCLE;¥100;

指示した座標に100の円を作成を繰り返し実行
*^C^C_CIRCLE;¥100;

指示した座標から100,100 の矩形を作成を繰り返し実行
*^C^C_RECTANG;¥@100,100;