以前からスクリプトから別のスクリプトを呼び出せないかな? と思っていたので
試してみました。
まず、新規のスクリプトを2個作ります。
名前はデフォルトのままで、NewScript1とNewScript2です。
この状態でNewScript2からNewScript1を実行することをゴールとします。
念の為、フォルダ/ファイルの階層はこんな感じです。
Scripts/ ├── NewScript1 │ ├── NewScript1.manifest │ └── NewScript1.py └── NewScript2 ├── NewScript2.manifest └── NewScript2.py
NewScript1側は特に変更せずにします。
単体で呼び出せば "Hello script" が表示されます。
成功すればこれと同じ結果ですね。
NewScript2側はNewScript1を読み込んで実行すればOKなので
sys.pathにパスを追加してインポートします。こんな感じです。
# Fusion360API Python script import adsk.core import adsk.fusion import traceback import sys import pathlib try: parent_dir = pathlib.Path(__file__).resolve().parent.parent target_dir = parent_dir / 'NewScript1' sys.path.append(str(target_dir)) import NewScript1 except: pass finally: # これはやった方が良い気がする del sys.path[-1] def run(context): ui = None try: app = adsk.core.Application.get() ui = app.userInterface NewScript1.run(context) except: if ui: ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
色々試したけど、これが一番安定している気がしました。
importの範囲がイマイチつかみ切れていないみたい・・・。