3dsmaxbatch.exe <script_file> [options]
この構文の <script_file> は、MAXScript または Python スクリプトの名前を示す必須のパラメータです。3ds Max Batch はこのスクリプト タイプを自動的に検出します。 MAXScript のすべての拡張子、および .py、.pyc、.pyw の Python ファイルを実行できます。
3ds Max Batch により、指定した 3ds Max シーン ファイルが起動およびロードされます(シーン ファイルが指定されている場合。このパラメータはオプションです)。script_file を実行し、追加の入力が指定されていれば、それを実行します。その後、終了します。
3dsmaxbatch.exe には、次の 1 つまたは複数のオプションを渡すことができます。
システム ログの詳細レベル。有効な引数は次のとおりです。
既定は 2 です。
コンソール ログの日付形式文字列。たとえば、「yyyy-MM-dd」または「ddd, MM/dd/yyyy」
日付と時刻の文字列形式については、「https://docs.microsoft.com/ja-JP/dotnet/standard/base-types/standard-date-and-time-format-strings」を参照してください。
コンソール ログの時間形式文字列。たとえば、「hh:mm:ss」または「ss : mm」
日付と時刻の文字列形式については、「https://docs.microsoft.com/ja-JP/dotnet/standard/base-types/standard-date-and-time-format-strings」を参照してください。
3ds Max 設定ファイル(.ini)。既定値はユーザごとの既定の設定ファイル(3dsmax.ini)です。
3ds Max プラグイン設定ファイル(.ini)。既定値はユーザごとの既定のプラグイン設定ファイル(Plugin.UserSettings.ini)です。
詳細については 『3ds Max 開発者用ガイド』 の「Plugin.ini」のトピックを参照してください。
リスナーからの出力をキャプチャする 3ds Max リスナー ログ ファイル。既定ではリスナー ログは作成されません。
詳細については、 『MAXScript ガイド』 の「文字列リテラル」のトピックを参照してください。
3ds Max システム ログ ファイル。スクリプト エラーと例外はこのファイルに記録されます。既定値はユーザごとのシステム ログ ファイル(Max.log)です。
ダイアログ モニタの状態。「on」にすると、ダイアログ モニタはプラグインからのダイアログを監視し、ダイアログを閉じます。有効な選択肢: 「on|off」、「yes|no」、「1|0」および「true|false」。
既定は オフ(off)です。
ダイアログ モニタの詳細については、『MAXScript ガイド』の「Interface: DialogMonitorOPS」のトピックを参照してください。
MAXScript 文字列パラメータ オプション(arg = <key>:<value>)。
<value> には、<key> を辞書のキーとして使用する maxOps.mxsCmdLineArgs 辞書を介して、<script_file> の MAXScript 文字列としてアクセスできます。
文字列は MAXScript の文字列にする必要があります。すなわち、文字列を引用符で囲み、文字列内の引用符やその他の特殊文字はエスケープする必要があります。文字列の先頭に「@」を付けて、verbatim 文字列であることを示すことができます。詳細については、 『MAXScript ガイド』 の「文字列リテラル」のトピックを参照してください。
複数回指定できます。
MAXScript 値パラメータ オプション(arg = <key>:<value>)。
<value> には、<key> を辞書のキーとして使用する maxOps.mxsCmdLineArgs 辞書を介して、<script_file> の MAXScript 値としてアクセスできます。
<value> パラメータの値は引用符で囲む必要があります。
複数回指定できます。
<script_file> が実行される前にロードされる入力された 3ds Max シーン ファイル。
引数として渡されたパスは、完全に修飾されている場合を除き、現在のディレクトリに対する相対パスとなります。
2 つのコマンドライン オプション(-mxsString および -mxsValue)によって、実行された MAXScript ファイルに情報を渡すことができます。これらのオプションはそれぞれ文字列と値を渡します。この値には、maxOps.mxsCmdLineArgs 辞書の MAXScript 内でキー/値のデータ ペアとしてアクセスできます。
たとえば、次のコマンドライン呼び出しがあるとします。
<3dsmaxpath>3dsmaxbatch demo_mxscmdline.ms -mxsString string1:"Hello" -mxsValue value1:"[3,12,22]" -mxsValue value2:"Point3 3 8 2.3" -listenerLog "test.log"
および demo_mxscmdline.ms スクリプト:
opts = maxOps.mxsCmdLineArgs for k in opts.keys do ( format "% == % class: %\n" k opts[k] (classOf opts[k]) )
リスナー ログ test.log には、次の出力が含まれます:
#string1 == Hello class: String #value2 == [3,8,2.3] class: Point3 #value1 == [3,12,22] class: Point3
Python スクリプトは、pymxs.runtime オブジェクトを介してこれらの値にアクセスすることもできます。
Python 記述された同じスクリプトは、次のようになります。
# demo using pymxs
from pymxs import runtime as rt
opts = rt.maxops.mxsCmdLineArgs
for k in opts.keys:
print "{} == {} class: {}\n".format(k, opts[k], rt.classof(opts[k]))
# you can also get dict values using runtime.name, for example:
# value1 = opts[rt.name('value1')]
# or using runtime.execute to run MAXScript code
# value1=rt.execute("GetDictValue maxops.mxsCmdLineArgs #value1")
MAXScript を使用してログ ファイルにメッセージを追加することもできます。MAXScript で logsystem.logEntry <string> broadcast:true 関数を使用して、スクリプトの進行状況を記録します。broadcast:true パラメータは、3ds Max がこのログ メッセージを 3ds Max Batch にブロードキャストする必要があることを示します。
3ds Max シーン ファイルを引数として 3ds Max Batch にロードするか(-sceneFile)、loadMaxFile() を使用してスクリプト内でロードすることができます。選択する方法は、見つからないプラグインや外部参照へのリアクション方法によって決まります。 loadMaxFile() メソッドには、見つからないプラグイン、外部参照などを処理するための引数が用意されているため、スクリプトのリアクションを適切に行うことができます( 『MAXScript ガイド』の「抑制モード」のトピックを参照). -sceneFile を使用してファイルをロードすると、見つからないプラグインや外部参照に関する情報がコンソールに出力されるため、3ds Max Batch の呼び出し元の自動化スクリプトでこの情報を処理できるようになります。
スクリプトで maxops.isInNonInteractiveMode() MAXScript メソッドを使用すると、UI を備えた 3ds Max セッションと 3ds Max Batch のいずれでスクリプトが実行されているのかを判別できます。詳細については、 『MAXScript ガイド』 の「文字列リテラル」のトピックを参照してください。
終了コード
3ds Max がエラーを記録した場合、3ds Max Batch はゼロ以外の終了コードを報告します。
また、3ds Max の終了コードが成功(0)でない場合は、終了コードも報告します。
自動化ツールで 3ds Max Batch および 3ds Max からの終了コードを調べて、ジョブが正常に実行されたかどうかを判別し、ジョブが正常に実行されなかった場合は、問題の原因を特定することができます。ジョブが正常に実行された場合、3ds Max Batch は終了コード 0 で終了します。3ds Max Batch は、渡されたパラメータや 3ds Max との通信にエラーがあった場合、次に示す終了コードを報告します。
| 終了コード | 意 味 |
|---|---|
| 0 | 成功 |
| -100 | 引数が見つからないか、または指定した引数が無効です。 |
| -110 | 3ds Max のプロセスを開始できません。具体的な理由がコンソールに表示されます。 |
| -120 | 3ds Max プロセスとの通信を確立または維持できません。 |
| -130 | 3ds Max がコマンドの実行中にエラーを報告しました。 |
| 追加のクラッシュ コード: | |
| -1 | 一般的な障害、例外の処理 |
| -2 | 未処理の例外 |
| -3 | WM_CLOSE の処理中にプロセスがクラッシュしました |
| -4 | WM_DESTROY の処理中にプロセスがクラッシュしました |
| -5 | WinMain() の終了前にプロセスがクラッシュしました |
| -6 | メモリ不足 |
| -7 | 有効なグラフィック デバイスを作成できませんでした |
| -8 | ライセンス エラー |
| -9 | アプリケーションを作成できませんでした |
MAXScript でユーザ定義の終了コードを使用して、3ds Max を終了することもできます。これを行うには、exicode 引数を使用して quitMax を呼び出します。 たとえば、次の MAXScript があるとします:
quitMAX quiet:true exitCode:-314159
この呼び出しを行うと、コンソールに終了コード -314159 が出力されます。
6/12/2018 15:46:05 PM; Specified option script: testscript.ms 6/12/2018 15:46:05 PM; Defaulted option dm: 0 6/12/2018 15:46:05 PM; Defaulted option li: 0 6/12/2018 15:46:05 PM; 3ds Max Install Location: C:\Program Files\Autodesk\3ds Max 2019\ 6/12/2018 15:46:05 PM; 3ds Max Executable: 3dsmax.exe 6/12/2018 15:46:05 PM; Secure Mode: 'OFF' 6/12/2018 15:46:05 PM; Dialog Monitor: Off 6/12/2018 15:46:05 PM; Script command: " -mxs "(filein @\"C:\Program Files\Autodesk\3ds Max 2019\testscript.ms\")"" 6/12/2018 15:46:06 PM; Product version: 3ds Max 2019.2 Update (21.2.0.2095) 6/12/2018 15:46:06 PM; Data collection and use is 'OFF'. 6/12/2018 15:46:30 PM; 3ds Max Exit Code = -314159
C:\Program Files\Autodesk\3ds Max 2019>3dsmaxbatch.exe testscript.ms -v 5