以前、こちらで衝撃を受けました。
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では出来ないと思います。