こちらの続きです。
Fusion360APIでNURBS曲線を作成してみる - C#ATIA
前回スプリクトで作成したNURBS曲線の方法では、不要なコントロールポイントが
削除し切れなかったのですが、思い付きで遠回りな方法を行ったら
意図していた結果となりました。
#FusionAPI_python #Author-kantoku #Description-NurbsCurve3D_Test2 #Nurbsカーブ作成テスト import adsk.core, adsk.fusion, traceback _app = adsk.core.Application.get() _ui = _app.userInterface def run(context): try: global _app, _ui des = adsk.fusion.Design.cast(_app.activeProduct) comp = des.rootComponent #NURBSカーブ作成準備 poles = [adsk.core.Point3D.create(10, 0, 70), adsk.core.Point3D.create(7, 50, 7), adsk.core.Point3D.create(3, -30, 8), adsk.core.Point3D.create(10, -20, 7)] degree = 2 knots = [0.0, 0.0, 0.0, 1.0, 2.0, 2.0, 2.0] weights = [1.0, 1.2, 1.0, 1.0] #NURBSカーブ作成 - 画面上には出来ない nc = adsk.core.NurbsCurve3D.createRational(poles, degree, knots, weights, False) #スケッチ作成 sk = comp.sketches.add(comp.xYConstructionPlane) #スケッチにNURBSカーブ挿入 fs = sk.sketchCurves.sketchFittedSplines.addByNurbsCurve(nc) #NURBSカーブをスケッチから抽出 sk.include(fs) #元のNURBSカーブ削除 fs.deleteMe() _ui.messageBox('done') except: if _ui: _ui.messageBox('エラー\n{}'.format(traceback.format_exc()))
こんな感じです。
手順としては、
・各パラメータに基づいたNURBSカーブ作成
↓
・スケッチに取り込み(.sketchCurves.sketchFittedSplines.addByNurbsCurve)
↓
・NURBSカーブをスケッチから抽出
↓
・スケッチに取り込んだNURBSカーブを削除
です。
「NURBSカーブをスケッチから抽出」を行っているincludeメソッドは恐らく
「3Dジオメトリを含める」のコマンドではないかな?と思います。
過去の経験から、一度スケッチ等画面上に表示される状態じゃないと
includeメソッドはエラーになっちゃうんですよね。