Fusion360アドインの作り方02:コンポーネント・スケッチ・ボディ

 まずは、コンポーネント・スケッチ・ボディというFusion360を使う上で必要になるオブジェクトへのアクセスの仕方をまとめます。なお、本連載はgithubに随時上げていきたいと思いますので、そちらでもまとめて確認してください。今回は、「sketchBodyComponent」というコマンドを追加しています。リンクはこちらになります。https://github.com/gear2nd-droid/AddinStudy

コンポーネントの追加

 まずは、スケッチやボディを格納するコンポーネントを追加します。新規コンポーネントを追加するrootComponentの下にコンポーネントを追加します。


    # create new component
    design = adsk.fusion.Design.cast(app.activeProduct)
    occs = design.rootComponent.occurrences
    mat = adsk.core.Matrix3D.create()
    newOcc = occs.addNewComponent(mat)        
    newComp = adsk.fusion.Component.cast(newOcc.component)
    newComp.name = 'new component'

スケッチの追加

 そのコンポーネントにスケッチを追加します。スケッチを追加する際には、スケッチ平面を指定します。XY以外(yZConstructionPlane、xZConstructionPlane)も指定できます。今回はそのスケッチに円を描きました。スケッチへの色々なオブジェクトの書き方はまた後日解説したいと思います。

    # create new sketch
    sketches = newComp.sketches
    xyPlane = newComp.xYConstructionPlane
    baseSketch = sketches.add(xyPlane)
    baseSketch.name = 'new sketch'
    baseSketch.sketchCurves.sketchCircles.addByCenterRadius(adsk.core.Point3D.create(0,0,0), radius.value)

ボディの追加

 作成したスケッチを押し出します。押出には、extrudeFeaturesを用います。押出するスケッチの閉区間(prof)を選択します。選択にはインデックスで指定することになります。adsk.fusion.FeatureOperationsで押出方を指定することができます。

  • NewBodyFeatureOperation(新規ボディ)

  • NewComponentFeatureOperation(新規コンポーネント)

  • CutFeatureOperation(切り取り)

  • JoinFeatureOperation(結合)

  • IntersectFeatureOperation(交差領域だけ残す?)

 押し出した後生成されるオブジェクトはbRepBodyではないため、それに名前をつけても反映されません。あくまでもbRepBodiesのオブジェクトに命名する必要があります。生成順でインデックスが採番されるため、0でアクセスするよりも、-1指定でアクセスする方がいいと思います。

    # create new body
    prof = baseSketch.profiles.item(0)
    extrudes = newComp.features.extrudeFeatures
    extInput = extrudes.createInput(prof, adsk.fusion.FeatureOperations.NewBodyFeatureOperation)
    distance = adsk.core.ValueInput.createByReal(thickness.value)
    extInput.setDistanceExtent(False, distance)
    baseExtrude = extrudes.add(extInput)
    newComp.bRepBodies[-1].name = 'new body'

この記事が気に入ったらサポートをしてみませんか?