ナカナカ本題が進みません。
いつもAPIではお世話になっている基準フューチャーに
updateBodyメソッドがあるんです。
Fusion 360 Help
使ったこと無いんです。 が、必要になりそうなので試しています。
まず、この様なデータを用意しました。
・基準フューチャーを作成し、円柱のボディを作成し、
基準フューチャーから抜ける。
・ブロックを作る。
・2個のボディをブーリアン和。
・お互いのボディの境界付近が絡むようなフィレット(ルールド)。
色ぐらい付けるべきですかね?
タイムラインではこんな感じです。
一番最初が基準フューチャーです。
要は、基準フューチャーで作成されたボディが関連するタイムラインが
欲しく、updateBodyメソッドの効果を知りたかったんです。
念のため、GUIの操作で
基準フューチャーに戻り、新たなボディ(ボディ19)を作成。
古いボディ(ボディ18)を削除し、基準フューチャーから
抜けると・・・ブーリアンとフィレットが赤くなりエラーです。
そりゃ参照すべきボディが消えてしまったので、迷子になるのは
当然です。
実験の為に、こんな感じで作りました。
import adsk.core, adsk.fusion, traceback
def run(context):
ui = adsk.core.UserInterface.cast(None)
try:
app :adsk.fusion.Application = adsk.core.Application.get()
ui = app.userInterface
des :adsk.fusion.Design = app.activeProduct
tmpMgr :adsk.fusion.TemporaryBRepManager = adsk.fusion.TemporaryBRepManager.get()
PNT3D = adsk.core.Point3D
radius = 10
brep :adsk.fusion.BRepBody = tmpMgr.createCylinderOrCone(
PNT3D.create(0,0,0),
radius,
PNT3D.create(0,0,2),
radius)
tl :adsk.fusion.Timeline = des.timeline
tlObj :adsk.fusion.TimelineObject = tl.item(0)
baseFeat :adsk.fusion.BaseFeature = adsk.fusion.BaseFeature.cast(tlObj.entity)
baseFeat.startEdit()
sourceBody :adsk.fusion.BRepBody = baseFeat.bodies[0]
baseFeat.updateBody(sourceBody, brep)
baseFeat.finishEdit()
except:
if ui:
ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
コメントにしている行が多数あるのは、それだけ失敗したからです。
実行すると
見栄えの問題から色を付けましたが、関係ないです。
驚くことに、エラーになりません。updateBodyの名称は嘘じゃないです。
これ、こちらのBoxerで使用されているんです。
FusionBoxer/OffsetBoundingBoxCommand.py at master · tapnair/FusionBoxer · GitHub
最初見た時 "こんな事出来るんだぁ" と思いましたよ。
ドキュメントの日付を見ると、CustomFeaturesと同じタイミングで
実装されたっぽいですね。