C#ATIA

↑タイトル詐欺 主にCATIA V5 の VBA(最近はPMillマクロとFusion360APIが多い)

カスタムグラフィックを削除する

Fusion360には、画面上に要素(面・線等)を表示させる方法が複数あります。

その内のひとつにカスタムグラフィックと言う機能が有り、
通常のBRepBody等を作成するより、素早く画面上に表示させます。
・・・APIのHelpのエラーが酷く、リンクさせることが出来ません。
f:id:kandennti:20181003154710p:plain
赤い面がそうなのですが、よくわからないと思います。

但し、このカスタムグラフィックで作成した面等は、触る事が
出来ないわけでもないのですが、スケッチのサポートにしたり
トリムのツールにしたりすることが出来ない為、本当に表示させている
だけの状態のものです。

しかも非表示にすることが出来ない上、削除も手動で行う方法が
無さそうな為、まとめて削除するスプリクトを作成しました。

#FusionAPI_python CustomGraphicsCleaner Ver0.0.1
#Author-kantoku
#Description-カスタムグラフィックを削除する

import adsk.core, traceback
from itertools import chain

def run(context):
    title = 'CustomGraphicsCleaner'
    ui = None
    try:
        app = adsk.core.Application.get()
        ui  = app.userInterface
        des = adsk.fusion.Design.cast(app.activeProduct)
        comps = des.allComponents
        
        customs = list(chain.from_iterable(
            [c.customGraphicsGroups for c in comps]))
        cnt = len(customs)
        
        msg = ''
        if cnt < 1:
            msg = 'このファイルにはカスタムグラフィック要素はありません!!'
            ui.messageBox(msg,title,0,2)
            return
            
        msg = 'このファイルには{}個のカスタムグラフィックがあります'.format(cnt)
        msg += '\n全て削除しますか?'
        
        if ui.messageBox(msg,title,1,1) == 1:
            return
            
        [c.deleteMe() for c in customs]
        
        ui.messageBox('Done')
        
    except:
        if ui:
            ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))

カスタムグラフィックは基本的に、作成したアドイン等のプレビュー機能として
利用するものだろうと思います。