C#ATIA

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

スプリクトで2要素間の距離測定をしたい1

スプリクトで2要素間の距離測定をしたいのですが、見つかりません。

実はこちらの問題をスプリクトで解決できるかな? と考えています。
形状面の穴の高点 低点 - Autodesk Community

CATIAであれば単純に '極値' コマンドで解決するのですがFusion360には
無いですね。

そこで作戦としては、
・上下方向になる部分の少し遠いところに平面を作成する
・平面と曲線との距離を測る
・距離分のオフセット平面を作成する
・オフセット平面と曲線の交差を取る
で良いかな?と思いました。

そこで欲しくなるのが "距離を測る" なんです。 下手な手段なのですが
計測コマンドの呼び出し方を探してみました。

#FusionAPI_python
import adsk.core, adsk.fusion, traceback

def run(context):
    ui = None
    try:
        app = adsk.core.Application.get()
        ui  = app.userInterface

        # Get the CommandDefinitions collection.
        cmdDef = ui.commandDefinitions.itemById('MeasureCommand')
        cmdDef.execute()
    except:
        if ui:
            ui.messageBox('エラー:\n{}'.format(traceback.format_exc()))

計測コマンドは起動します。 でもこんな問題だらけなのです。
f:id:kandennti:20160928194510p:plain
結局、CATIAのStartCommand関数と一緒でコマンドを呼び出すだけなんです・・・。


Helpのこちらにトポロジカルな記述があるのですが
Help

BRep~のオブジェクトは "adsk.fusion" のライブラリなのですが
その下に属している(Fusion360ではgeometryと表現している)部分は
"adsk.core" のライブラリに入っています。
"adsk.fusion" は、Fusion360独自のものだろうとは思うのですが、
"adsk.core" は、他にも利用されているものなのかな? と勝手に感じました。


例のブライアンさんはどうやら、Inventorの開発も行っている人のようなので
(ブログにもサンプルマクロを書いてますし)ひょっとしたらInventorの方法で
測定できるのかな? と期待し調べてみました。

Solved: Using the Measure.MinimumDistance command - Autodesk Community

どうやら "MeasureTools" オブジェクトというものがあるようで、それを利用している
ように見えます。 Fusion360にはそんなオブジェクトありませんでしたよ・・・。


諦めつつあったのですが、他の手段で何とかなりそうな予感がしています。
それ以上にFusion360の平面は、無限平面では無いような気がしてきました。