C#ATIA

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

穴あけの指定面数を取得

まず、こんな感じの穴あけを作っておきます。

深さや作り方が違ったりしているのですが、全てφ10の穴に対して
1つのオペレーションで3か所の穴をあけてます。
面を指定する際は3枚の面で行ってます。

ここで、何枚の面を指定しているか=穴をあけている数と解釈して
この様なスクリプトで指定面数を出力させています。

# Fusion360API Python script

import traceback
# import adsk
import adsk.core as core
# import adsk.fusion as fusion
import adsk.cam as cam

def run(context):
    ui: core.UserInterface = None
    try:
        app: core.Application = core.Application.get()
        ui = app.userInterface
        
        camObj: cam.CAM = get_cam_product()

        setup: cam.Setup = camObj.setups[0]
        ope: cam.Operation = setup.operations[0]
        facesPrm: cam.CAMParameter = ope.parameters.itemByName('holeFaces')
        facesPrmValue: cam.CadObjectParameterValue = facesPrm.value
        faces = [f for f in facesPrmValue.value]

        print(f'Faces Count:{len(faces)}')
        a=1

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


def get_cam_product() -> cam.CAM:
    app: core.Application = core.Application.get()
    activete_cam_env()

    return app.activeProduct


def activete_cam_env() -> None:
    app: core.Application = core.Application.get()
    ui: core.UserInterface = app.userInterface

    camWS: core.Workspace = ui.workspaces.itemById('CAMEnvironment') 
    camWS.activate()

実行した際の結果は

Faces Count:3

続いて、先程の穴あけの設定を変更します。

指定する面の数は1枚だけにし、"同じ直径を選択" にチェックを
入れておきます。便利ですね、同じ直径だった為3か所が処理対象と
なっています。

しかし先程のスクリプトを実行すると

Faces Count:1

あぁそうなんだ。確かに選択した面の数は1枚だけど・・・。

方法無いのかな?