C#ATIA

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

Bodyの制限数

Fusion360の1個のドキュメントのBodyの制限数は5000個なのかな?
How to load more (or the next items) after 5,000 limit? - Autodesk Community
検索すると10000個と記載があったものも見かけたのですが、謎です。

リンク先の記載では、”5000個の制限を超えてどうやって読み込めばよいの?” と・・・。
制限なんだから無理でしょ、恐らく。

ちょっと確認したくなったので、大量のボディをひたすらBodyを作る無駄スクリプト
作りました。

#Fusion360API Python script
import adsk.core, adsk.fusion, traceback

_app = adsk.core.Application.cast(None)
_ui = adsk.core.UserInterface.cast(None)

def run(context):
    try:
        bodyCount = 500

        global _app, _ui
        _app = adsk.core.Application.get()
        _ui = _app.userInterface
        des  :adsk.fusion.Design = _app.activeProduct
        root :adsk.fusion.Component = des.rootComponent

        dumpMsg('start')
        adsk.doEvents()

        bodies = initBoxes(bodyCount)

        dumpMsg('finish_initBoxes')
        adsk.doEvents()

        baseFeatures = root.features.baseFeatures
        baseFeature = baseFeatures.add()
        
        
        rootBodies = root.bRepBodies
        for body in bodies:
            baseFeature.startEdit()
            rootBodies.add(body, baseFeature)
            baseFeature.finishEdit()
            dumpMsg('body count:{}'.format(rootBodies.count))
            adsk.doEvents()

        dumpMsg('Done')

    except:
        if ui:
            ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))

def initBoxes(
    count) -> list:

    unitBox = 1

    pnt3D = adsk.core.Point3D
    vec3D = adsk.core.Vector3D
    pnt = pnt3D.create(0.0, 0.0, 0.0)
    lVec = vec3D.create(1.0, 0.0, 0.0)
    wVec= vec3D.create(0.0, 1.0, 0.0)

    bouBox3D = adsk.core.OrientedBoundingBox3D
    box = bouBox3D.create(pnt, lVec, wVec, unitBox, unitBox, unitBox)

    tmpBrMgr = adsk.fusion.TemporaryBRepManager.get()
    bodies = [tmpBrMgr.createBox(box) for idx in range(count)]

    return bodies


def dumpMsg(msg :str):
    global _ui
    _ui.palettes.itemById('TextCommands').writeText(str(msg))

現状一度の実行で500個Bodyを作成します。bodyCount部分変更すればお好きな数
作成できます。
又、テキストコマンドを開いておけば実行中のボディ数のログを垂れ流しています。

肝心な実行結果ですが、1400個で断念・・・。途中から数秒に1個しか作成されなく
なりました。
恐らく、これを書いた事すら忘れると思う。