計算済みツールパスの工具を変更したい時があります。 かなり、頻繁に・・・。
手動で行うと結構手間で、正直モチベーションが落ちまくります。
手順はこんな感じです。
・任意のツールパスをアクティブ
・変更したい工具をアクティブ
・ツールパスのコンテキストメニューで '工具変更' (しかもメニュー位置が深い・・・)
実際の操作はこんな感じです。
これを楽しようと思いマクロを作成したのですが、PowerMillのマクロの
呼び出し方が複数有り、今回は操作的に直感的なので工具のコンテキストメニューを
利用しての呼び出しにしました。
この呼び出し方法、実は知りませんでした。(Helpには記載されています)
こちらが非常に参考になりました。
Solved: Create macro to pick folder and activate it - Autodesk Community
前回のプルダウンリストを利用して、複数のツールパスに対して工具変更が出来るように
しています。(但し、スクエア・ボール・ラジアス・テーパーボールエンドミルのみです。)
マクロ本体です。
//PMill_Macro //ReplaceTool.mac //Treeの指定した工具のコンテキストメニューから工具交換 function main(string toolname) { //選択工具 entity act = entity('tool', $toolname) //交換可能リスト string list paths = {} call Get_PathList($act, $paths) if is_empty($paths) { message error '交換可能なツールパスがありません!!' return } //ユーザー確認 string msg = '[' + $act.name + ']' + 'に工具交換するツールパスを選択してください' call Exec_DownMenu($paths, $msg, 1, $paths) //工具交換 call Set_ActTool($act, $paths) //終了 message info 'Done' } //工具交換 function Set_ActTool(entity ActTool, string list Lst) { call Exec_Cmd('ACTIVATE TOOL "' + $ActTool.name + '"') foreach path in $Lst { call Exec_Cmd('EDIT TOOLPATH "' + $path + '" REPLACE_TOOL ;') } } //交換可能リスト取得 function Get_PathList(entity ActTool, output string list OutLst) { string list lst = {} bool geoeql = 0 foreach path in folder('toolpath') { call ToolNose_Equal($path.tool, $ActTool, $geoeql) if $geoeql { int dmy = add_last($lst, $path.name) } } $OutLst = $lst } //工具先端一致判断 function ToolNose_Equal(entity T1, entity T2, output bool OutBool) { $OutBool = 0 string T1_type = $T1.type string T2_type = $T2.type if $T1_type != $T2_type { return } if $T1.Diameter != $T2.Diameter { return } Switch T1_type { case 'end_mill' $OutBool = 1 return break case 'ball_nosed' $OutBool = 1 return break case 'tip_radiused' if $T1.TipRadius == $T2.TipRadius { $OutBool = 1 } return break case 'taper_spherical' if $T1.TipRadius == $T2.TipRadius and $T1.TaperAngle == $T2.TaperAngle { $OutBool = 1 } return break } } //コマンド function Exec_Cmd(string cmd) { docommand $cmd } function Msgoff() { graphics lock dialogs message off dialogs error off } function Msgon() { graphics unlock dialogs message on dialogs error on } include downmenu.inc
最後のインクルードは、前回のプルダウンリストのライブラリです。
続いて、工具のコンテキストメニューに追加する為の "tool.XML" です。
既に他で利用されている場合は、buttonタグ部分を追記すればOKです。
又、今まで利用していない場合は、環境変数の追加や指定されたフォルダを
作成する必要があるため、Helpを参考にすると良いかと思います。
(上記のマクロは同一フォルダ内に配置しておく必要が有ります)
<?xml version="1.0" encoding="utf-8" ?> <menupage> <button label="工具変更" command='MACRO ReplaceTool.mac "%s"' /> </menupage>
実際に利用した感じはこちら。
桁違いに楽。