カスタムグラフィックのサンプルを作ってみました。
スクリプト実行後ボディをクリックすると、ボディが破壊されます・・・。
実際のボディは非表示にしているだけなので、問題無いです。
#Fusion360API Python script #Author-kantoku #Description-カスタムグラフィックスサンプル import adsk.core, adsk.fusion, traceback def run(context): ui = None try: app :adsk.core.Application = adsk.core.Application.get() ui :adsk.core.UserInterface = app.userInterface des :adsk.fusion.Design = app.activeProduct root :adsk.fusion.Component = des.rootComponent msg :str = 'Select Body' selFiltter :str = 'Bodies' sel :adsk.core.Selection = selectEnt(ui, msg ,selFiltter) if not sel: return body :adsk.fusion.BRepBody = sel.entity adsk.fusion.BRepFace.getCG = getCG adsk.fusion.BRepFace.getMat = getMat cgs :adsk.fusion.CustomGraphicsGroups = root.customGraphicsGroups cg_mat = [(f.getCG(cgs), f.getMat()) for f in body.faces] body.isLightBulbOn = False ui.activeSelections.clear() for i in range(10): for cg, mats in cg_mat: cg.transform = mats[i] app.activeViewport.refresh() adsk.doEvents() except: if ui: ui.messageBox('Failed:\n{}'.format(traceback.format_exc())) def getCG( self :adsk.fusion.BRepFace, cgs :adsk.fusion.CustomGraphicsGroups): cg = cgs.add() mesh = self.meshManager.displayMeshes.bestMesh cgCoords = adsk.fusion.CustomGraphicsCoordinates coords = cgCoords.create(mesh.nodeCoordinatesAsDouble) cgMesh = cg.addMesh(coords, mesh.nodeIndices, mesh.normalVectorsAsDouble, mesh.nodeIndices) return cgMesh def getMat( self :adsk.fusion.BRepFace): body :adsk.fusion.BRepBody = self.body cog :adsk.core.point3D = body.physicalProperties.centerOfMass vec :adsk.core.Vector3D = cog.vectorTo(self.pointOnFace) vec.normalize() move = adsk.core.Vector3D.create() mat :adsk.core.Matrix3D = adsk.core.Matrix3D.create() mats = [] for i in range(10): move.add(vec) mat.translation = move mats.append(mat.copy()) return mats def selectEnt( ui :adsk.core.UserInterface, msg :str, filtterStr :str) -> adsk.core.Selection: try: sel = ui.selectEntity(msg, filtterStr) return sel except: return None
正直なところ想像していたより、処理が重かったです。
それ以上に思ったより面白くない。
今回動画を、こちらで紹介しているサイトのサービスを利用してみました。
はてなブログにMP4動画を超簡単にアップロード投稿する方法を紹介します - イーサモンとディセントラランドで一緒に歩くんだZ!
確かにお手軽です。