PowerMillの工程を使い回したい時がシバシバ有ります。
前にも書いたかも知れませんが。
既存の計算済みツールパスを全て無効にしてから始めたいので、
ツールパスのコンテキストメニューの「全て無効」コマンドを実行してます。
恐らく他のCAMソフトでも類似した機能があるはずです。
ところが、PowerMillは依存関係が頑固で、一発で全て無効
にならない時が有ります。試しに1回実行すると
電卓マークになっていないものは無効(未計算状態)になって
いません。複数回同じコマンドを繰り返せば全てが無効にはなります。
原因は、領域切削(荒加工です)の削り残し機能を使用すると
これが起きます。上記の画像では、ストックモデルを使用した領域切削
の設定になっています。(イロイロな方法がPowerMillにはあるんです!)
使っていない人にはわからないですね。
・r10a_rough で加工しストックモデル化
↓
・ストックモデルを利用し r5a_roughを加工
↓
・r5a_vh で加工しストックモデルに追加
↓
・ストックモデルを利用し r2a_roughを加工
のような手順になってます。
これが標準的な方法かどうかわかっていませんが。
(ストックモデルはその都度コピーして依存をぶった切るのが
良いよ とかの記述は見たのですが、実質手間がかかる)
工程的な事は別として、PowerMillはこんな感じで安全よりに
設計されていて、頑固なまでに依存関係を保ちます。
これを一発で全て無効にする方法は無いものかと、サポートさんにも
問い合わせたのですが、そのようなコマンドが無くマクロで
行うしかないよ と教わりました。(その節はお世話になりました)
のですが、複数回「全て無効」コマンドを実行する為の回数が
状態によって異なるのですが、10回ぐらいループをまわすのみに
なっていた為、ちょっとイマイチだったので自作しました。
//pm2019macro //Reset_Toolpath.mac ver0.0.1 //全て無効を一発で実現(しているように見せかける) Function Main() { string msg = '' int st_cnt = 0 call GetComputedCount($st_cnt) if $st_cnt == 0 { $msg = '計算済みツールパスは有りませんでした。' message info $msg return } int ed_cnt = 0 call ExecUncalculated($st_cnt, $ed_cnt) $msg = string($st_cnt - $ed_cnt) + '個、無効にしました。' //終了 message info $msg } function ExecUncalculated (int st_cnt, output int out) { int tmp1 = 0 $tmp1 = $st_cnt int tmp2 = 0 do { INVALIDATE TOOLPATH ALL Yes call GetComputedCount($tmp2) if $tmp1 == $tmp2 { break } $tmp1 = $tmp2 } while not $tmp1 == 0 $out = $tmp1 } function GetComputedCount (output int out) { string filter = 'Computed == 1' entity list tps = folder('toolpath') $out = size(extract(filter($tps , $filter), 'name')) }
「全て無効」コマンドの前後で計算済みのツールパスの数を取得し、
変化が無ければループを抜ける(それ以上やっても無意味)
ようにしました。
・・・Drawビューの原点を変更するマクロの説明書きを、書かなきゃな。