本主题涵盖了如何使用 3ds Max 2018.4 Update 及更高版本中包含的 3ds Max Batch。要使用 3ds Max 2018.2 和 2018.3 Update 中包含的 3ds Max Batch,请参见使用 3ds Max Batch 旧版。
3dsmaxbatch.exe <script_file> [options]
在此语法中,<script_file> 是 MAXScript 或 Python 脚本的名称,且必需提供此参数。3ds Max Batch 自动检测脚本类型。
3ds Max Batch 启动并加载指定的 3ds Max 场景文件(如果已提供 - 则这是可选参数)。然后它执行 script_file 和任何其他输入(如果已提供)。然后退出。
您可以将以下一项或多项作为选项传递给 3dsmaxbatch.exe。
系统日志详细级别。有效参数包括:
默认值为 2。
控制台日志的日期格式字符串。例如,“yyyy-MM-dd”或“ddd, MM/dd/yyyy”
有关日期和时间字符串格式的说明,请参见 https://docs.microsoft.com/zh-CN/dotnet/standard/base-types/standard-date-and-time-format-strings。
控制台日志的时间格式字符串。例如,“hh:mm:ss”或“ss : mm”
有关日期和时间字符串格式的说明,请参见 https://docs.microsoft.com/zh-CN/dotnet/standard/base-types/standard-date-and-time-format-strings。
3ds Max 配置文件 (.ini)。默认为每个用户的默认配置文件 (3dsmax.ini)。
3ds Max 插件配置文件 (.ini)。默认为每个用户的默认插件配置文件 (Plugin.UserSettings.ini)
请参见“Plugin.ini”主题 (位于 3ds Max 开发人员手册中) 以获取详细信息
用于从侦听器捕获输出的 3ds Max 侦听器日志文件。默认不创建侦听器日志。
请参见“启用侦听器日志”主题 (位于 MAXScript 手册中) 以获取详细信息。
3ds Max 系统日志文件。脚本错误和异常记录到此文件中。默认为每个用户的系统日志文件 (max.log)。
对话框监视器状态。启用时,对话框监视器可以从插件监视对话框,还可以将其关闭。有效选项包括:“on|off”、“yes|no”、“1|0”和“true|false”。
默认为 off。
有关对话框监视器的详细信息,请参见 MAXScript 手册中的“界面:DialogMonitorOPS”主题。
MAXScript 字符串参数选项,其中 arg = <key>:<value>。
可以通过 maxOps.mxsCmdLineArgs 字典并将 <key> 用作字典键,在 <script_file> 中以 MAXScript 字符串形式访问 <value>。
该字符串必须是 MAXScript 字符串,这意味着它必须包含在引号中,字符串中的任何引号或其他特殊字符都必须进行转义。字符串可以带有前缀“@”以指示它是逐字字符串。请参见“字符串文字”主题 (位于 MAXScript 手册中) 以获取详细信息。
可以指定多次。
MAXScript 值参数选项,其中 arg = <key>:<value>。
可以通过 maxOps.mxsCmdLineArgs 字典并将 <key> 用作字典键,在 <script_file> 中以 MAXScript 值形式访问 <value>。
必须将 <value> 参数包含在引号中。
可以指定多次。
在执行 <script_file> 之前,要加载的输入 3ds Max 场景文件。
指定是否启用 Python 3 警告模式,在该模式下,Python 脚本中与 Python 3 不兼容的项目将生成警告。arg 的有效值是 1/0、on/off、yes/no 和 true/false,其中第一个值启用该模式,第二个禁用该模式。该模式默认处于禁用状态。请参见“Python 3 警告模式”主题 (位于 3ds Max Python API 帮助中) 以详细了解该模式。
除非完全限定,否则作为参数传递的路径相对于当前目录。
通过两个命令行选项可以将信息传递到执行的 MAXScript 文件:-mxsString 和 -mxsValue,它们分别传递字符串和值。可以通过 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 中运行。请参见“界面:maxops”主题 (位于 MAXScript 手册中) 以获取详细信息。
退出代码
您的自动化工具可以从 3ds Max Batch 和 3ds Max 检查退出代码,以确定作业是否成功,以及未成功时导致问题的原因。成功时,3ds Max Batch 将退出,退出代码为 0。如果传递给它的参数或者与 3ds Max 的通信存在错误,则 3ds Max Batch 将报告以下退出代码:
3ds Max 记录错误时,3ds Max Batch 将报告一个不为零的退出代码。
此外,如果 3ds Max 未成功,则 3ds Max Batch 也将报告其退出代码(成功时为 0)。
MAXScript 还允许您使用用户定义的退出代码退出 3ds Max。要执行此操作,请使用 exitcode 参数调用 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