PowerMillの機能の中でちょっとだけ不満なのが、コーナーペンシル仕上げ加工。
大体の3DCAMソフトには付いている機能なのですが、今まで経験した中で
唯一PowerMillだけ、下から上にツールパスを作成してくれません。
(使いたい理由は秘密)
サポートさんには機能をつけて欲しいと要望を出しましたが、所詮小市民の
戯言なので、期待は出来ないと思ってます。
上から下へのツールパスを手動で方向逆転させられるので、作れなくはないの
ですが、この操作がメニューの深いところにあるため非常に面倒です。
その為、マクロを作成しまとめて処理させる事にしました。
//pm2017 macro sample_All_Pencil_corner_Rev.mac //全ての計算済みコーナーペンシル仕上げ加工の方向を逆にする function Main() { //ペンシル検索 STRING LIST PathLst = {} call GetPencilLIST($PathLst) //チェック STRING msg = '' if is_empty($PathLst) { $msg = '処理可能なペンシルパスがありません!!' message error $msg return } //メッセージ BOOL yesno = 0 call ListToString(PathLst, $msg) $msg = '以下のペンシルパスを逆方向にします。宜しいですか?' + crlf + $msg $yesno = QUERY $msg IF not yesno { return } //リバース STRING ActPathName = TOOLPATH.NAME call SetReverse(PathLst) //アクティブツールパスを実行前に戻す call ReActToolPath($PathLst, $ActPathName) } //実行前アクティブツールパスに戻す function ReActToolPath(STRING LIST lst, STRING PathName) { STRING ReActName = '' if member($lst, $PathName) { call GetAfterPathName($PathName, $ReActName) } else { $ReActName = $PathName } ACTIVATE TOOLPATH $ReActName } //変換後のツールパス名取得 function GetAfterPathName(STRING PathName, output STRING NewName) { STRING Key = '_Rev' STRING Before = $PathName INT RevPos = position($Before, $Key) STRING After = '' if $RevPos == -1 { $After = $Before + $Key } else { $After = replace($Before, $Key, '') } $NewName = $After } //パス名修正 function RenamePath(STRING PathName) { STRING After = '' call GetAfterPathName($PathName, $After) RENAME Toolpath $PathName $After } //逆方向 function SetReverse(STRING LIST lst) { foreach itm in lst { ACTIVATE TOOLPATH $itm EDIT TOOLPATH REVERSE call RenamePath(itm) } } //計算済みペンシル function GetPencilLIST(output STRING LIST Out_lst) { STRING LIST lst = {} foreach itm in folder('Toolpath') { if itm.computed { if itm.Strategy == 'pencil_corner' { INT dmy = add_last(lst, itm.name) } } } INT dmy = remove_duplicates(lst) $Out_lst = lst return } //リストの文字化 function ListToString(STRING LIST lst, output STRING Out_msg) { STRING msg = "" foreach itm in lst { $msg = msg + itm + crlf } $Out_msg = msg }
ツリーのツールパスフォルダ内の計算済みコーナーペンシル仕上げ加工を全て探し出し、
逆転させます。その際、ツールパスの名称を逆転させたものには、
"ツールパス名" + "_Rev" の名称に変更し、再度実行した際は "_Rev"
の名称を削除します。
(手動でゴチョゴチョした際は、もちろんそうなりません・・・)
実際に使用した感じです。 最初に通常に作成したシミュレーションを
実行し、マクロ実行後のシミュレーションを実行してみました。
"Macro Programming Guide" に計算済みツールパスを判断するためのサンプル
が記載されているのですが、パラメータ部分が
IF entity(‘toolpath’,Name) .Calculated {
となっているのですが、正しくは
IF entity(‘toolpath’,Name).computed {
です。 参考に出来るものが少ないだけに誤記は勘弁して欲しい。
(他にも幾つかあります)