C#ATIA

↑タイトル詐欺 主にCATIA V5 の VBA(最近はPMillマクロとFusion360APIが多い)

Fusion360APIでNURBS曲線を作成してみる

避けては通れないNURBS曲線のスプリクト作成ですが、
困った程にサンプルが見当たりませんでした。

手探りまくりでようやくこのようなコードが出来上がりました。

#FusionAPI_python
#Author-kantoku
#Description-NurbsCurve3D_Test1
#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カーブ固定
        fs.isFixed = True
        
        #不要な制御点を削除
        for skp in sk.sketchPoints:
            print(skp.deleteMe())
        
        _ui.messageBox('done')
    except:
        if _ui:
            _ui.messageBox('エラー\n{}'.format(traceback.format_exc()))

実行結果はこちら
f:id:kandennti:20170814234531p:plain
何とか出来たのですが、画像上の赤印部の点を消したいのですが
削除出来ません。(手動でも)

忘れてしまいそうなので、簡単な手順を覚書
・各パラメータに基づいたNURBSカーブ作成
 ↓
・スケッチに取り込み(.sketchCurves.sketchFittedSplines.addByNurbsCurve)
 ↓
・NURBSカーブ固定(これを行わないと、スケッチで修正した際おかしくなる)
 ↓
・不要な制御点を削除 ← ここが不完全?

ここまで来るのに本当に苦労しました。 他の方法があるものでしょうか?
Sketch.include(NurbsCurve)の様な方法は、過去に試しましたが出来なかったです。
(ご存知の方教えて頂けると助かります。)