想像以上に苦しく、進まない PowerMillマクロです。
でも、メンドクサイ類似作業の繰り返しはコリゴリなので、進めてます。
以前はメモ帳で作っていたのですがw AutodeskのForumでこんな記述を発見。
Notepad++ Language for editing PowerMill macros. - Autodesk Community
Notepad++と言うエディタの、PowerMillマクロ言語用のものがあるなんてありがたいです。
確かにマニュアルにもチラチラ出てくる名前のエディタなので、使おうと思ったのですが
日本語が未対応っぽい。
探すとこちらがHitしました。
Notepad++ ja-pack 1 (日本語パック) を公開してみた。 | OFF-SOFT.net
ん~よく読んでないせいか、画面が日本語になっていない・・・。 "Shift-JIS" は
使えているので、まぁこのままで行きます。
で、本題の方ですが、僕の場合Treeが長くなるのがイヤなので、
ツールパスや工具フォルダ内にフォルダを作って作業してます。 こんな感じです。
面倒なんですが、ダッダーっと長いのはイヤなんです。 何れはマクロやテンプレートで
作るし。
後々に利用する事になりそうなので、組み込みフォルダ内のフォルダ名リストを取得する
マクロです。
//pm2017 macro //フォルダ名取得 クズテスト function Main() { STRING LIST lst = {} //ツールパス call GetFolderNameLIST('Toolpath', $lst) call Dump(lst) //工具 call GetFolderNameLIST('Tool', $lst) call Dump(lst) } //指定した組み込みルートフォルダ内のフォルダ名を取得 function GetFolderNameLIST(STRING Lst_name, output STRING LIST Folder_lst ) { STRING LIST lst = {} foreach itm in folder(Lst_name) { INT dmy = add_last(lst, basename(dirname(pathname(itm)))) } INT dmy = remove_duplicates(lst) $Folder_lst = lst return } function Dump(STRING LIST lst) { STRING msg = "" foreach itm in lst { $msg = msg + itm + crlf } print = msg }
エコーコマンドで出力させてます。 結果はこんな感じ。
・・・ Process Command : [\tprint = msg\n] r2s_base r1s_base r05s_base ・・・ Process Command : [\tprint = msg\n] path ref ・・・
ん~ 理由はわかっているのですが、空のフォルダ名が取得できていないです。
ネストしているフォルダ名も実は取れないんですけど、それは禁止にしよう・・・。