maya可用启动命令行参数:
-v 打印产品版本和识别编号 -batch 适用于批处理模式 -prompt 适用于交互式非 GUI 模式 -proj [dir] 在指定的项目目录中查找文件 -command [mel command] 启动时运行指定的命令 -file [file] 打开指定的文件 -script [file] 启动时源化指定文件 -log [file] 将 stdout 消息和 stderr 消息复制到指定文件 (使用完整文件名) -hideConsole 隐藏控制台窗口 -recover 恢复上一日志文件 (使用“Render -help”获得更多选项) -optimizeRender [file] [outfile] 为渲染目的优化 maya 文件 效率,并将结果置于输出文件中 (使用“maya -optimizeRender -help”获得更多选项) -archive [file] 显示归档指定场景所需的文件列表 -noAutoloadPlugins 不要自动加载任何插件。 -3 启用 Python 3000 兼容性警告s
使用环境MAYA2022。
启动执行MEL
如果用命令行的command来执行参数,可以这么写:
maya.exe -command “print(“”abc””);”
在命令行中,字符串定界用的双引号需要使用双引号转义,即””为字符”,maya启动后将会执行print(“abc”);的mel代码。
通过mel执行python
maya启动命令没有提供python的选项,但是可以通过mel来调用python。
在maya脚本编辑器里可以这么用mel调用python,因为使用字符串的方式调用,所以python内特殊字符需要使用\来转义:
python(“print(\”hello python\”);”);
也可以写多行py语句,通过在字符串中插入\n来换行,这个语句可以在maya中成功执行,现在我们要给它包装到命令行上。
python(“print(\”hello\”)\nprint(\”python\”)”);
通过命令行执行进行编写,需要将字符串参数内的”转义为””,符号\在windows命令行中是普通字符,所以不需要额外转义
maya.exe -command “python(“”print(\””hello\””)\nprint(\””python\””)””);”
你可能以为maya启动时拿到的是这样的参数:
python(“print(\”hello\”)\nprint(\”python\”)”);
但这样写在命令行中执行会报错,这里有一个坑,就是maya在读取参数的时候将字符\”转义为了字符”,而字符\n却没有被转义为换行而是正常显示。
Maya返回的执行结果:
python(“print(“hello”)\nprint(“python”)”);
// 错误: python(“print(“hello”)\nprint(“python”)”); //
很明显,字符\n被正常保留并没有产生换行,但字符\”中的\却被吃掉了,只剩了一个”。
那么我们就需要在命令行中仅仅对字符\”情况进行额外处理,即\转变为\\,\n保持不变
maya.exe -command “python(“”print(\\””hello\\””)\nprint(\\””python\\””)””);”