C#ATIA

↑タイトル詐欺 主にFusion360API 偶にCATIA V5 VBA(絶賛ネタ切れ中)※記載されている内容は個人の意見であり、所属する団体等を代表する意見では御座いません・・・・よ!

フィット点スプラインのハンドルを独立化させる

先日、ササっと作りました。
https://forums.autodesk.com/t5/fusion-ri-ben-yuforamu/fitto-diansupurainnohandoru-du-li-hua/m-p/13867312/highlight/true#M60962
本当は悩みました。

細かな経緯はフォーラムの方をご覧ください。

Fusion360のスケッチのスプラインのハンドルがAPIで実装されている事は薄々知っていたのですが
扱ったことが無かったので良いお勉強になりましたよ。

悩んだ部分は幾つかあったのですが、そのうちの一つは "フィット点スプライン" のオブジェクトです。

Fusion360のスケッチのスプラインは2種類あります。
一つは "制御点スプライン" で、如何にもNURBS曲線っぽいやつで、恐らくSketchControlPointSplineオブジェクトです。
(触った事ないです・・・)
Help

もう一つは "フィット点スプライン" で、通過点を指定するやつです。こちらの方が普通に考えても利用すると思います。
恐らくこちらはSketchFittedSplineオブジェクトです。まぁネーミングからして間違いないでしょう。
Help

あちらをスクリプトを作る際は "フィット点スプライン" を作って試していたのですが、型を調べると
”SketchFixedSpline” が返ってきます。(名前がFittedとFixedで似てますが違います)
Help
SketchFixedSpline自体はソコソコ扱ったことがあります。(APIでスプライン作る際こちらが楽なはず)

今回はハンドルを取得したかったのですがSketchFixedSplineにはそれらしい属性が無く、SketchFittedSplineには
fitPointsプロパティがあるので、SketchFittedSplineとして扱いたいのに・・・何故だよ。

SketchFittedSplineにキャストしてもNoneを返さないくせに(通常はCast失敗するとNoneが返ってくるもんです)、
型を調べるとSketchFixedSplineのままだったり・・・正直、スクリプト化は無かった事にしようかと思ったぐらいなの
ですが、fitPointsプロパティを試すと取得出来る事に気が付きました。

SketchFittedSplineがSketchFixedSplineの継承元クラス(スーパークラスと呼ぶのが正しい?)と言う訳でもなさそうだし
継承元クラスはSketchCurveオブジェクトのはずなのですが、そちらにもfitPointプロパティは無いです。
Help


"フィット点スプライン" だけ選択出来るようにするフィルタが無いので、(ダイアログ付きで作ればフィルタリング可能です)
最初は型で選択した線を判断しようと思ったのですが、型が正しく取得出来ない(と思っている)ので、
仕方なくこんな悪魔っぽい分岐するしか方法が無くなりました。

if not hasattr(crv, "fitPoints"):

バグじゃないかな・・・と思っているものの、スケッチに書いた時点でスプラインはみんなSketchFittedSplineになるのかな?
どうだろ、確信が持てない。