こちらの続きです。
メッシュの六角形分割に挑む7 - C#ATIA
MeshBodyの移動(Translate)が無いので、そちらを作成しました。
# Fusion360API Python script import traceback import adsk.fusion import adsk.core def meshTranslateBy( mesh: adsk.fusion.MeshBody, vec: adsk.core.Vector3D, copyIs: bool = False): app: adsk.core.Application = adsk.core.Application.get() ui: adsk.core.UserInterface = app.userInterface sels: adsk.core.Selections = ui.activeSelections sels.clear() sels.add(mesh) cmds = [ u'Commands.Start FusionMoveCommand', u'Commands.SetString infoMoveMethodType infoMoveMethodTranslate', u'Commands.SetString infoMoveDirectionType infoMoveDirectionComponentXYZ', u'Commands.SetDouble infoMoveTranslateX {}'.format(vec.x), u'Commands.SetDouble infoMoveTranslateY {}'.format(vec.y), u'Commands.SetDouble infoMoveTranslateZ {}'.format(vec.z), u'Commands.SetBool infoCreateCopy {}'.format(1 if copyIs else 0), u'NuCommands.CommitCmd', ] [app.executeTextCommand(cmd) for cmd in cmds] res = adsk.fusion.MeshBody.cast(None) if copyIs: res = mesh.parentComponent.meshBodies[-1] return res 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 clone = meshTranslateBy( root.meshBodies[0], adsk.core.Vector3D.create(1, 2, 3), True ) meshTranslateBy( clone, adsk.core.Vector3D.create(1, 2, 3), ) except: if ui: ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
MeshBodyの六角形は1個のみ作成し、移動コピーで済ませたいので。
Meshに関しては、APIで調べる為の機能は備わっていますが、
形状を変更したりするメソッド類が提供されていないので、
地味なものばかり作成しなきゃならないですね・・・。