C#ATIA

↑タイトル詐欺 主にCATIA V5 の VBA(最近はPMillマクロとFusion360APIが多い)

コマンドID

あけましておめでとうございます。
今年もコンセプトがブレたまま、マイペースでやってまいります。


CATIAのインストールフォルダ内に [.CATNls] の拡張子のファイルがあるのをご存知でしょうか?
恐らくですが、これらのファイルは画面上に表示されている文字類を
設定するファイルなのだろうと思います。
(言語別にフォルダで分類されており、言語を切り替え再起動した際
 これらのファイルが読み込まれ表示される文字が切り替わるのだろうと思います)

海外のサイトで、このファイルについて書かれている記事を何度か見ては
いたのですが、コマンド名に関するものであまり深く受け止めていませんでした。
(今更コマンド名を知った所で、何かメリットがあるとは思えなかったので)

年末頃、こちらの記載を見て、何故CATNlsファイルについて知りたがるのか
やっと理解できました。
CATIA.StartCommand CommandID finden (Dassault Systemes - PLM Solutions/CATIA V5 Programmierung) - Foren auf CAD.de

CATNlsファイル内の記載されている右辺のコマンド名が重要なのではなく
左辺に記載されているプロパティ名が、コマンドIDなのだろう と言うことのようです。
このコマンドIDは、言語設定に関わらずコマンド呼び出し出来るもののようです。
f:id:kandennti:20180105150104p:plain

実際に行った動画です。
最初はコマンドIDとなる [c:CATHpwAxisLineHdr] で実行し
2度目は日本語設定依存となる [c:軸] で実行しています。

確かに、実行できます。


マクロで提供されていないオブジェクトを生成する際、最終手段として
[CATIA.StartCommand] を利用せざるを得ない場面があるかも知れませんが
その際、どうしても言語設定を判断し利用する事になります。
(その為にこの辺を作りました
お手軽に言語判定を行いたい - C#ATIA
C#でお手軽に言語判定を行いたい2 - C#ATIA

ですが、言語設定に依存しないコマンドIDがわかっていれば、言語判定
すら不要になります。

しかしこのコマンドIDのリストが見つからないんです。
仕方ないので、英語と日本語のリストを作成し、こちらにUpしました。
GrabCAD - CAD library

兎に角、ファイル数が多い為フリーソフトと簡単なスプリクトを作成し、
"Hdr.Title" の記載された行を抜き出し、Excelで整えつつ
軽くチェックしてみただけなので、中身については保証できません。