こちらの続きです。
未計算ツールパスをまとめてバッチ処理する - C#ATIA
こちらも頻繁に利用するので不満な部分を修正。
//pm2018 macro //Toolpath_Batch.mac ver0.0.5 //using downmenu.inc //選択してのツールパスの計算 //--------------------------------------------------------------------------------------------------- //ver0.0.1-完成 //ver0.0.2-? //ver0.0.3-リセット機能追加 //ver0.0.4-リセット削除、保存機能追加 //ver0.0.5-バックグラウンド削除,進捗状況ダイアログ追加 //--------------------------------------------------------------------------------------------------- function main() { //未計算ツールパス取得 string filter = 'Computed == 0 and Batch == 1' string list paths = extract(filter(folder('toolpath'), filter), 'name') if is_empty(paths) { message wran '未計算ツールパスが見つかりませんでした' macro abort } //ユーザー選択 string msg = '計算するツールパスを選択してください' call Exec_DownMenu($paths, $msg, 1, $paths) //バッチ後保存 bool save_ope = 0 if length(project_pathname(0)) > 1 { if project_locked( ) or project_readonly( ) ==0 { $save_ope = QUERY '計算後、保存を行いますか?' } } //確認 $msg = join($paths, crlf ) + crlf $msg = $msg + 'の計算を開始します 宜しいですか?' if $save_ope { $msg = $msg + '(保存有り)' } bool yn = 0 $yn = QUERY $msg if not $yn { macro abort } //計算 call Sw_Start() call ExecCalc($paths) call Sw_GetTime() //保存 if $save_ope { PROJECT SAVE } //終了 message info 'Done' } function ExecCalc(string list paths) { string list dmy = $paths int all = add_last($dmy , '') - 1 int cnt = 0 call ShowInfobox('*** ツールパス計算 ***') foreach path in $paths { $cnt = $cnt + 1 call PushInfobox($path + ' : 計算中(' + cnt + '/' + all + ')') call Msgoff() ACTIVATE TOOLPATH $path TOOLPATH $path CALCULATE call Msgon() if entity('toolpath', $path).Computed == 0 { call PushInfobox('...失敗!' + crlf) } else { call PushInfobox('...成功!' + crlf) } } } function Msgoff() { graphics lock dialogs message off dialogs error off } function Msgon() { graphics unlock dialogs message on dialogs error on } function Sw_Start() { CLOCK RESET QUIT CLOCK ON QUIT } function Sw_GetTime() { CLOCK OFF QUIT CLOCK PRINT QUIT } function ShowInfobox(string msg) { INFOBOX NEW $msg INFOBOX STYLE "NORMAL" } function PushInfobox(string msg) { INFOBOX APPEND $msg } include downmenu.inc
・バックグランド計算機能は、使わないので削除しました。
(計算時間1.5倍ぐらいになるので)
・全て処理後、保存するオプション追加
(こんな機能は、Machining STRATEGISTとか普通にありました)
・進捗状況ダイアログ追加しました
こちらをパクリました。
Solved: Check Verification Progress - Autodesk Community
失敗した原因を取得できると便利なんだけどなぁ
(dialogs message off するとメッセージの取得方法が無い とサポートに確認済み)