如何使用3ds Max 2018.4 Update 及更高版本中包含的 3ds Max Batch版本

在3ds Max 2018.4 Update 及更高版本中要开始使用 3ds Max Batch,请执行以下操作:
1、打开命令提示窗口。
2、将目录更改为 3ds Max 的安装位置。默认位置为 C:\Program Files\Autodesk\3ds Max <版本号>。
3、输入以下内容:
3dsmaxbatch.exe <script_file> [options]
在此语法中,<script_file> 是 MAXScript 或 Python 脚本的名称,且必需提供此参数。3ds Max Batch 自动检测脚本类型。
3ds Max Batch 启动并加载指定的 3ds Max 场景文件(如果已提供 - 则这是可选参数)。然后它执行 script_file 和任何其他输入(如果已提供)。然后退出。
3ds Max Batch 选项
您可以将以下一项或多项作为选项传递给 3dsmaxbatch.exe。
-help
显示所有选项。
-v arg
系统日志详细级别。有效参数包括:
· 0 - 致命错误
· 1 - 错误
· 2 - 警告
· 3 - 进程信息消息
· 4 - 所有信息消息
· 5 - 调试级别消息
默认值为 2。
注: 此参数仅影响由 3ds Max Batch 生成的消息,而不影响 3ds Max 本身。例如,设置为 5 时将不显示由 3ds Max 生成的所有消息。请参见下面的部分。
-dateFormat arg
控制台日志的日期格式字符串。例如,“yyyy-MM-dd”或“ddd, MM/dd/yyyy”
-timeFormat arg
控制台日志的时间格式字符串。例如,“hh:mm:ss”或“ss : mm”
-i arg
3ds Max 配置文件 (.ini)。默认为每个用户的默认配置文件 (3dsmax.ini)。
-p arg
3ds Max 插件配置文件 (.ini)。默认为每个用户的默认插件配置文件 (Plugin.UserSettings.ini)
-listenerlog arg
用于从侦听器捕获输出的 3ds Max 侦听器日志文件。默认不创建侦听器日志。
-log arg
3ds Max 系统日志文件。脚本错误和异常记录到此文件中。默认为每个用户的系统日志文件 (max.log)。
-dm arg
对话框监视器状态。启用时,对话框监视器可以从插件监视对话框,还可以将其关闭。有效选项包括:“on|off”、“yes|no”、“1|0”和“true|false”。
默认为 off。
有关对话框监视器的详细信息,请参见 MAXScript 手册中的“界面:DialogMonitorOPS”主题。
-mxsString arg
MAXScript 字符串参数选项,其中 arg = <key>:<value>。
可以通过 maxOps.mxsCmdLineArgs 字典并将 <key> 用作字典键,在 <script_file> 中以 MAXScript 字符串形式访问 <value>。
该字符串必须是 MAXScript 字符串,这意味着它必须包含在引号中,字符串中的任何引号或其他特殊字符都必须进行转义。字符串可以带有前缀“@”以指示它是逐字字符串。
可以指定多次。
-mxsValue arg
MAXScript 值参数选项,其中 arg = <key>:<value>。
可以通过 maxOps.mxsCmdLineArgs 字典并将 <key> 用作字典键,在 <script_file> 中以 MAXScript 值形式访问 <value>。
必须将 <value> 参数包含在引号中。
可以指定多次。
-sceneFile arg
在执行 <script_file> 之前,要加载的输入 3ds Max 场景文件。
除非完全限定,否则作为参数传递的路径相对于当前目录。
将信息传递给 3ds Max Batch 脚本
通过两个命令行选项可以将信息传递到执行的 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")
获取有关您的 3ds Max Batch 作业的信息
要查找和修复批处理脚本中的错误,可以先在 3ds Max 中运行脚本。脚本正确工作后,可以在 3ds Max Batch 中运行此脚本。在运行脚本时会生成两个主要日志,用于提供有用信息:
MAXScript 侦听器日志将您的命令以及所有打印输出捕捉到文本文件中。默认情况下,3ds Max Batch 不创建侦听器日志,但您可以通过指定 -listenerlog 选项指定一个侦听器日志。
3ds Max 会话日志默认将会话捕捉到 %LOCALAPPDATA%3dsMax\<版本号>-64bit\<语言>\network\Max.log 中。可以使用 -log 命令行选项来更改文件路径。MAXScript 和 Python 脚本错误将记录到此文件
注: 我们建议您始终启用侦听器日志以从脚本执行输出中获益,从而获取相关信息并进行调试。
也可以通过 MAXScript 将消息添加到日志文件。使用 MAXScript 中的 logsystem.logEntry <string> broadcast:true 函数可记录脚本进度。broadcast:true 参数表示 3ds Max 应该将此日志消息发送到 3ds Max Batch。
可以将 3ds Max 场景文件作为参数加载到 3ds Max Batch (-sceneFile),或者通过 loadMaxFile() 加载到您的脚本中。您选择的方法取决于您希望如何对缺少的插件和外部参照做出反应。loadMaxFile() 方法提供了用于处理所缺少插件、外部参照等的参数,因此您的脚本可以相应地做出反应。通过 -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 将报告以下退出代码:
-100:缺少参数,或者指定的参数无效。
-110:3ds Max 进程无法启动;特定的原因记录在控制台中。
-120:无法建立与 3ds Max 进程的通信,或者无法保持该通信。
-130:执行命令时,3ds Max 报告了错误。
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
注: 必须将详细级别设置为“调试”(5) 以将退出代码输出到控制台上。例如:
C:\Program Files\Autodesk\3ds Max 2019>3dsmaxbatch.exe testscript.ms -v 5