C#ATIA

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

メッシュの六角形分割に挑む7

こちらの続きです。
メッシュの六角形分割に挑む6 - C#ATIA

内容が薄いまま続けます。
六角柱MeshBodyが必要になります。STLフォーマット調べて作る方法も
あるかもしれませんが、サイズ変更も必要な為BRepBodyをMeshBodyへ
変換したいところです。

これもAPIでは提供されていないっぽいので。

# Fusion360API Python script

import traceback
import adsk.fusion
import adsk.core

def brep2Mesh(
        brep: adsk.fusion.BRepBody) -> adsk.fusion.MeshBody:

    app: adsk.core.Application = adsk.core.Application.get()
    ui = app.userInterface

    sels: adsk.core.Selections = ui.activeSelections
    sels.clear()
    sels.add(brep)

    app.executeTextCommand(f'Commands.Start ParaMeshTessellateCommand')
    app.executeTextCommand(u'NuCommands.CommitCmd')

    meshs: adsk.fusion.MeshBodies = brep.parentComponent.meshBodies

    return meshs[-1]


def run(context):
    ui = adsk.core.UserInterface.cast(None)
    try:
        app: adsk.core.Application = adsk.core.Application.get()
        ui = app.userInterface
        root: adsk.fusion.Component = app.activeProduct.rootComponent

        mesh: adsk.fusion.MeshBody = brep2Mesh(root.bRepBodies[0])

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

こんな感じです。
f:id:kandennti:20211005152751p:plain