C#ATIA

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

Fusion360CAMのパラメータの値

以前、こちらで衝撃を受けました。
Solved: Re: Assining points to CAM drilling operation through sketch - Autodesk Community

試していないのですが、穴あけの工程の穴をAPI
変更出来るようです。

調べたいのはポケット2Dでプロファイルの変更です。
取りあえず、adsk.cam.CAMParameterのvalueプロパティの
型を調べます。

単純なポケット2Dの工程を作りました。

このデータにこのスクリプトを実行します。

# Fusion360API Python script
import traceback
import adsk.core
import adsk.cam

def run(context):
    ui = None
    try:
        app = adsk.core.Application.get()
        ui = app.userInterface
        doc = app.activeDocument
        products = doc.products
        cam = adsk.cam.CAM.cast(products.itemByProductType("CAMProductType"))

        setups: adsk.cam.Setups = cam.setups
        setup: adsk.cam.Setup = setups[0]
        ope: adsk.cam.Operation = setup.operations[0]

        types = []
        ng =[]
        p: adsk.cam.CAMParameter = None
        for p in ope.parameters:
            try:
                types.append(p.value.objectType)
            except:
                ng.append(p)

        print('\n'.join(list(set(types))))

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

出力はこちら

adsk::cam::BooleanParameterValue
adsk::cam::CadObjectParameterValue
adsk::cam::CadContours2dParameterValue
adsk::cam::ChoiceParameterValue
adsk::cam::FloatParameterValue
adsk::cam::StringParameterValue
adsk::cam::IntegerParameterValue

設定していない項目がある上、3Dの機能では無いため
全てでは無いと思います。
"CadObjectParameterValue” ”CadContours2dParameterValue"
の二つはCADの要素のような気がします。


続いて先程のスクリプトを変更します。

# Fusion360API Python script
import traceback
import adsk.core
import adsk.cam

def run(context):
    ui = None
    try:
        app = adsk.core.Application.get()
        ui = app.userInterface
        doc = app.activeDocument
        products = doc.products
        cam = adsk.cam.CAM.cast(products.itemByProductType("CAMProductType"))

        setups: adsk.cam.Setups = cam.setups
        setup: adsk.cam.Setup = setups[0]
        ope: adsk.cam.Operation = setup.operations[0]

        target_types = [
            'adsk::cam::CadObjectParameterValue',
            'adsk::cam::CadContours2dParameterValue'
        ]

        prms = []
        p: adsk.cam.CAMParameter = None
        for p in ope.parameters:
            try:
                if p.value.objectType in target_types:
                    prms.append(p)
            except:
                pass

        print('\n'.join([p.name for p in prms]))

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

疑わしいパラメータの名前を出力します。結果はこちら。

pockets
stockContours
wrap_cylinder
view_orientation_axisZ
view_orientation_cSys
view_orientation_surfaceNormal
view_align_to_view_direction
view_orientation_axisX
view_orientation_axisY
view_origin_point
view_model_point
view_stock_point
clearanceHeight_ref
retractHeight_ref
feedHeight_ref
topHeight_ref
bottomHeight_ref
predrillPositions
entryPositions
exitPositions
associatedView

"pockets" が該当しそうです。

続いて1行追加します。

        p = ope.parameters.itemByName('pockets') #追加

この辺りに追加して、ブレークポイントも設置します。

実際に実行し停止位置を確認するとこの様な感じでした。

CadContours2dParameterValueオブジェクトの場合、
要素を設定するっぽいメソッド "_set~" がありませんでした。
恐らく、再設定が出来ない様な気がします。

最初のリンク先では "CadObjectParameterValue" オブジェクトの
"_set_value" メソッドで再設定しているのですが、その方法は
出来ない事が分かります。

恐らくAPIでは出来ないと思います。