PowerMillの機能に、コンポーネント残り代と言う機能があるのですが
一般的に使われるものかどうか?
個人的には電極の仕上代を設定する為、必ず使っています。
ところがここの設定の確認が非常にやりにくい為、マクロでチェックしようと
考えているのですが苦戦してます。
殆どの情報は取得できるのですが、矢印のコンポーネント数を取得する
パラメータが存在しないようで困ってしまいました。
サポートさんに問い合わせても出来ないとの回答は頂いたのですが、
ちょっとだけ気が付いた事がありました。
各セットを選択した状態で、こちらの名称不明のボタンを押すと
コンポーネントとして登録された面を選択した状態になります。
これを利用すれば、選択面の数を取得する事でコンポーネント数の
取得となりそうです。
//pm2018 macro //全ツールパスのコンポーネント/残り代情報を垂れ流す function main() { int list rng = {} call GetRangeLst(0, 16, $rng) INFOBOX NEW "***** toolpath ThicknessSetValues info *****" INFOBOX CLEAR FORMAT string info = '' int surf_cnt = 0 FORM THICKNESS EDIT THICKNESS TAB DEFAULT EDIT THICKNESS TAB COMPONENTS TOOLPATH THICKNESS ACCEPT dialogs error off dialogs message off foreach tp in folder('toolpath') { string full = pathname('toolpath', $tp) EXPLORER SELECT Toolpath $full NEW $info = '-- toolpath : ' + $tp.name + ' --'+ crlf object list tvs = $tp.ThicknessSetValues foreach idx in $rng { object tv = $tp.ThicknessSetValues[$idx] $info = $info + string($idx) + ' : ' $info = $info + $tv.Mode + ' : ' $info = $info + $tv.UseAxialThickness + ' : ' $info = $info + string($tv.Thickness) + ' : ' $info = $info + string($tv.AxialThickness) + ' : ' //コンポーネント数の取得 graphics lock DELETE SELECTION EDIT THICKNESS DEFAULTLIST UPDATE \r $idx NEW \r EDIT THICKNESS SELECT graphics unlock call GetSelSurfCount($surf_cnt) $info = $info + string($surf_cnt) + crlf } $info = $info + crlf dialogs message on call ShowInfobox($info) dialogs message off } DELETE SELECTION dialogs message on dialogs error on //終了 message info 'Done' } function GetRangeLst(int start, int count, output int list lst) { int num = 0 $lst = {} do { int dmy = add_last($lst, $start + $num) $num = $num + 1 } while $num < $count } function GetSelSurfCount(output int num) { string $TraceFilePath = macro_path(false) + "\selsurf.txt" string list txts = {} ECHO OFF DCPDEBUG UNTRACE COMMAND ACCEPT TRACEFILE OPEN $TraceFilePath PRINT SELSURFACE TRACEFILE CLOSE ECHO ON DCPDEBUG TRACE COMMAND ACCEPT FILE OPEN $TraceFilePath FOR READ AS Input FILE READ $txts FROM Input FILE CLOSE Input DELETE FILE $TraceFilePath $num = size($txts) - 1 } function ShowInfobox(string msg) { INFOBOX STYLE "NORMAL" INFOBOX APPEND $msg }
テスト的なコードのため、InfoBoxに結果を垂れ流しているだけです。
・・・遅いんです、処理が。
原因は
・ツールパスをアクティブにしている
・毎回、面を選択している
・選択面数の取得にファイルの書き込み・読み込みをしている
だとは思うのですが、アクティブにしなくても良かったのかな?
選択面数の取得はこちらの方法です。
水平面高さリストを表示2 - C#ATIA
ファイルの書み・読みを1ツールパスに付き16回もやっているんです・・・。
イロイロ探して試しているのですが、選択面数ぐらい何とか取得出来そうな
気もするのですが・・・。