C#ATIA

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

file open dialog box

PowerMillのマクロで、指定したファイルを読み込みたいのですが
file open dialog boxのようなものを探しまくっても見つからない。

・・・と思ったら 'Open' ではなく 'Select' なんですね。まぁ確かに。

Helpやプログラミングガイドにも引数の説明が記載されて無いので
困りました。が、フォーラムでサンプルコード発見しました。(一番下)
Does PowerMILL have similar commands? - Autodesk Community

(string)ファイルパス = FILESELECT (string)ダイアログタイトル (string)拡張子フィルタ (string)デフォルトパス

のフォーマットのようです。
試したところ、引数は省略しても動く感じはするのですが、実質第二引数までは指定した方が
良さそうです。

又、ファイルを指定している状態で "キャンセル" を選択した場合は空の文字が戻ってきます。
こちらで質問した未解決な問題とは異なるようです。
[MACRO] Judge that the cancel button is pushed - Autodesk Community

デフォルトパスについてですが、省略した際は、前回使用したパスが開かれるので恐らく
WinAPIの物を呼び出しているのではないかな? と思います。
又、存在していない場合は、インストールフォルダが開かれました。


これで終わりじゃないです。問題は拡張子フィルタのフォーマットが良くわからない・・・。
試しました。

サンプル通りのこんなコードでは

	string path = ''
	$path = fileselect '選択して!!' '*.txt' 'C:/temp/'

f:id:kandennti:20180314185654p:plain

無難な感じで修正すると

	string path = ''
	$path = fileselect '選択して!!' 'テキスト(*.txt)|*.txt' 'C:/temp/'

f:id:kandennti:20180314185705p:plain

複数の種類で行いたければ

	string path = ''
	$path = fileselect '選択して!!' 'テキスト/CSV|*.txt;*.csv' 'C:/temp/'

f:id:kandennti:20180314185716p:plain

ちょっと迷ったのですが、ドロップダウンで切り替えたければ

	string path = ''
	$path = fileselect '選択して!!' 'テキスト|*.txt| CSV|*.csv| ALL|*.*' 'C:/temp/'

f:id:kandennti:20180314185725p:plain

と、ここまでわかりましたが、ファイルの複数選択が出来ないっぽいです。