何となく読み込みが出来そうな気がしてきたので、Fusion360からsirenを
呼び出すテストをしようと思ったのですが、大苦戦…。
まず、mruby-sirenの実行ファイルを
C:\Temp\siren_0.14d_mingw64\bin\mruby.exe
の位置になるようにしました。
続いて呼び出し用のsirenスプリクト "test.rb" をこんな感じで作成
#!/usr/bin/env siren # test.rb # coding: utf-8 puts "hoge" puts "piyo" puts "huga"
中身は、sirenとは無関係なファイルです…。
これをFusion360スプリクトと同一フォルダ内に置いておきます。
続いてFusion360スプリクトでこんな感じのものを作りました。
#FusionAPI_python #Author-kantoku #Description-OutprocessTest #外部実行ファイルを実行 # -*- coding: utf-8 -*- import adsk.core, adsk.fusion, traceback _app = adsk.core.Application.get() _ui = _app.userInterface _siren_path = r"C:\Temp\siren_0.14d_mingw64\bin\mruby" def run(context): try: global _app, _ui global _siren_path import os path = os.path.dirname(os.path.abspath(__file__)) callpath = path + '\\test.rb' s_path =_siren_path.replace(os.path.sep, '/') import subprocess output = subprocess.check_output([s_path, callpath]) _ui.messageBox(str(output)) except: if _ui: _ui.messageBox('エラー\n{}'.format(traceback.format_exc()))
siren に test.rb を投げつつ、標準出力されたものを取得し表示させるだけです。
実行結果はこちら
[b'] や [\r\n] 等が入ってますが、取得も出来てます。
・・・たったこれだけなのですが、途中で諦めようかとも思うぐらいでした。