邪魔なストックモデルを削除しようと思うのですが、相変わらず
依存が厳しく削除コマンドを行っても削除されません。
削除しようとしているストックモデルを利用しているツールパスが
計算済みの為、削除出来ないような仕様になっています。
この様にストックモデルを利用している全てのツールパスの
設定を空欄にします。(赤印側)
緑印の「ストックモデル」は後の作業の為、維持したままにします。
//pm2019macro //Reset_RestRefarence.mac Ver0.0.1 //ストックモデルを利用しているツールパス取得 function Main () { //ストックモデルを利用しているツールパス取得 entity list tps = {} call Get_HasRefStock_List($tps) //無効化 call ExecInvalidateTP(reverse($tps)) //削り残しストックモデルで未選択にする call ExecResetStockTP($tps) //終わり message info 'Done' } function ExecResetStockTP (entity list ents) { foreach tp in $ents { $tp.AreaClearance.Rest.ReferenceType = 'stockmodel' ACTIVATE TOOLPATH $tp.name FORM TOOLPATH EDIT PAR 'StockModelState.StockModel' '' EDIT TOOLPATH $tp.name REAPPLYFROMGUI YES } } function Get_HasRefStock_List (output entity list ents) { string filter = 'size(StockModelState.StockModel) > 0' $ents = filter(folder('toolpath') , $filter) } function GetComputedCount (entity list ents, output int out) { string filter = 'Computed == 1' $out = size(extract(filter($ents , $filter), 'name')) } function ExecInvalidateTP (entity list ents) { int st_cnt = 0 call GetComputedCount($ents, $st_cnt) int tmp1 = 0 $tmp1 = $st_cnt int tmp2 = 0 string tpname = '' do { foreach ent in $ents { invalidate toolpath $ent.name } call GetComputedCount($ents, $tmp2) if $tmp1 == $tmp2 { break } $tmp1 = $tmp2 } while not $tmp1 == 0 }
もうちょっと作業が楽になって欲しい。
逆に全てのストックモデルを作成する際に使用しているツールパスを
全て取得する場合は、こんな感じです。
entity list stocks = folder('stockmodel') object list states = flatten(extract($stocks, 'states')) entity list tps = flatten(extract($states, 'references'))
但し、何だか処理が重いです。