C#ATIA

↑タイトル詐欺 主にFusion360API 偶にCATIA V5 VBA(絶賛ネタ切れ中)

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

こちらの続きです。
カスタムグラフィックスを削除する2 - C#ATIA

前回はすっかり忘れていて同じようなものを作ってしまいました。

今まで気が付かなかったのですが、カスタムグラフィックスはデザイン(CAD)だけ
では無く、製造(CAM)側にもありました。
前回までの物はデザイン側のみしか削除しなかったので、今回は本気で全部
削除するようにしました。

#Fusion360API Python script
#Author-kantoku
#Description-カスタムグラフィックス全てを削除する

import adsk.core, adsk.fusion, adsk.cam, traceback

_app = adsk.core.Application.cast(None)
_ui = adsk.core.UserInterface.cast(None)

def run(context):
    try:
        global _app, _ui
        _app = adsk.core.Application.get()
        _ui = _app.userInterface

        # get customGraphicsGroup
        cgGrpLst = getAllCgGroup()

        if len(cgGrpLst) < 1:
            msg = '現在のファイルにはカスタムグラフィックがありませんでした'
            _ui.messageBox(msg)
            return

        # Query
        msg = '現在のファイルには消去されていないカスタムグラフィックが存在します。\n'
        msg += '全て消去しますか?'
        if not userQuery(_ui, msg): return

        # remove customGraphicsGroup
        [cgGrp.deleteMe() for cgGrp in cgGrpLst]

        # finish
        _app.activeViewport.refresh()

    except:
        if _ui:
            _ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))

def getAllCgGroup() -> list:
    global _app
    prods = _app.activeDocument.products

    cgGrpLst = []

    # Design
    des :adsk.fusion.Design = prods.itemByProductType('DesignProductType')
    cgGrps = [cmp.customGraphicsGroups for cmp in des.allComponents]
    cgGrpLst.extend([c for c in cgGrps if c.count > 0])

    # Cam
    cam :adsk.cam.CAM = prods.itemByProductType('CAMProductType')
    if not cam:
        return cgGrpLst
    cgGrpLst.extend([c for c in cam.customGraphicsGroups if c.count > 0])

    return cgGrpLst

def userQuery(
    ui :adsk.core.UserInterface,
    msg :str) -> bool:

    btnTypes = adsk.core.MessageBoxButtonTypes
    icnTypes = adsk.core.MessageBoxIconTypes
    dlgRes = adsk.core.DialogResults
    res = ui.messageBox(msg, '', btnTypes.OKCancelButtonType, icnTypes.QuestionIconType)
    if res == dlgRes.DialogOK:
        return True
    return False