やっと業務が落ち着いてきたのですが、ブログを書くネタがありません。
久々にFusion360のスプリクトを作ってみました。
解決済み: Re: 複数のSTEPファイルを読み込む - Autodesk Community
スプリクトで可能かどうか自信無かったので。
#FusionAPI_python Import3DCadFiles ver0.0.1 #Author-kantoku #Description-.f3d .igs .stp .sat .smt ファイルをアクティブなファイルにインポート import adsk.core, adsk.fusion, traceback import os.path def run(context): ui = None try: #準備 app = adsk.core.Application.get() ui = app.userInterface importManager = app.importManager #ファイル選択 paths = SelectFile(ui) if paths is None: return #インポートオプション opts = GetOptions(paths,importManager) if opts is None: return #インポート ExecImport(opts, importManager, app) ui.messageBox('Done') except: if ui: ui.messageBox('Failed:\n{}'.format(traceback.format_exc())) #インポート def ExecImport(opts, iptMng, app): des = adsk.fusion.Design.cast(app.activeProduct) root = des.rootComponent for opt in opts: try: iptMng.importToTarget(opt, root) except: pass #拡張子別インポートオプション取得 def GetOptions(paths, iptMng): opts = [] for path in paths: if not os.path.exists(path): continue _, ext = os.path.splitext(path) if '.F3D' == ext.upper(): opt = iptMng.createFusionArchiveImportOptions(path) if '.IGES' == ext.upper() or '.IGS' == ext.upper(): opt = iptMng.createIGESImportOptions(path) if '.STEP' == ext.upper() or '.STP' == ext.upper(): opt = iptMng.createSTEPImportOptions(path) if '.SAT' == ext.upper(): opt = iptMng.createSATImportOptions(path) if '.SMT' == ext.upper(): opt = iptMng.createSMTImportOptions(path) if opt is None: continue opt.isViewFit = False opts.append(opt) if len(opts) < 1: return None return opts #ファイルの選択 def SelectFile(ui): fileDlg = ui.createFileDialog() fileDlg.isMultiSelectEnabled = True fileDlg.title = 'Inport File' fileDlg.filter = '*.f3d;*.ig*s;*.st*p;*.sat;*.smt' dlgResult = fileDlg.showOpen() if dlgResult != adsk.core.DialogResults.DialogOK: return None print(len(fileDlg.filenames)) if len(fileDlg.filenames) < 1: return None return [path for path in fileDlg.filenames]