C#ATIA

↑タイトル詐欺 主にFusion360API 偶にCATIA V5 VBA(絶賛ネタ切れ中)

ファイルを開きたい

ひょっとしたら最近のバージョンでは、解決している問題かも
知れませんが、古いバージョンを使用されていて同様の内容で
困っている方の参考になれば と思い記載しておきます。
(某自動車メーカーさんのDC金型設計部門の方とか)


"AdvanceCAD" のマクロはマニュアルの記述によれば、C言語ライクに作成されて
いるとのことですが、基本的な事であろうと思われる、
ファイルを開くマクロを作った事が無かったので、コマンドリファレンスを見ながら
こんな感じで作成しました。

/* AdvanceCAD_macro */
/* Win版 ダイアログON時NG */
   filepath = "C:/TEMP/HOGE.MDL";
   MODEL/READ [filepath] <CE>

色々とオプションパラメータもあるのですが、コマンドの "MODEL/READ" の後に
開くべきファイルパスを記述すれば良いだけなのですが・・・何故か、
これではうちの場合開かないんです。ダイアログが表示されるだけで
マクロが止まってしまうんです。
AdvanceCADは、キー入力でコマンドを受け付けてくれるCADなのですが、
それでも同様にダイアログの表示だけで終わってしまうんです。
喜多技研さんのマクロのサンプルから、ファイルを開くサンプルを探し出し
見てみても、最初のコードで間違っていないようです。

喜多技研さんのサイトに
"acad on Vmware ..acad(Linux版)をWindows上のVmwareではしらせる"
喜多技研,vmware
と記載されている為、恐らくLinux版をWin上で御使用されている
気がするのですが、こちらはWin版のAdvanceCAD。
マニュアルを見ていると、Linux版とWin版の違いの一つにダイアログ表示
の機能がWin版のみと記載されています。
何となく、上手く行かない原因がダイアログが表示の様な雰囲気。

色々と調べているとダイアログの使用はON・OFFが出来るようなので
OFFにして最初のマクロを実行すると・・・開けました。
原因はダイアログです。

しかし、ダイアログOFF状態では業務が行いにくく、"やり方変えます"
と言っても社長が納得するわけ無いのは明らか。
どうせなら、マクロ自信で設定を切り替えてしまえば良いのでは?
と思い探し始めると、こちらのP592に
http://www.ctc-g.co.jp/acad/pdf/v20/command.pdf
有りました。 そこでこんな感じにしてみます。

/* AdvanceCAD_macro */
/* Win版 ダイアログON時NG */
RVP/MODEL DLGMODE 0 <CE>
   filepath = "C:/TEMP/HOGE.MDL";
   MODEL/READ [filepath] <CE>
RVP/MODEL DLGMODE 1 <CE>

開く直前でダイアログをOFFにし、開いた後にダイアログをONにしてみます。
で、実行してみると・・・ダイアログをOFFにするためのダイアログが
出てしまいマクロがやはり止まってしまう。(正直、マジか!と思いました)

Win版でダイアログONでは出来ないんだなぁ とほぼ諦めてマニュアルをペラペラ
めくっていると、CTCさんもこの問題は認識しておられるようで、
こちらのP441にやり方が書いてありました。
http://www.ctc-g.co.jp/acad/pdf/v20/Util.pdf
モデル設定用の定数だったので "RVP/MODEL" が必要だと思い込んで
いました。 で、こんな感じに修正したら、無事開くことが出来ました。

/* AdvanceCAD_macro */
DLGMODE 0 <CE>
   filepath = "C:/TEMP/HOGE.MDL";
   MODEL/READ [filepath] <CE>
DLGMODE 1 <CE>

出来たのですが、実際はファイル開かずにデータを取って来れる
サブモデルのコマンドの方が利用価値は高いんですけどね。