所以我有成百上千的maya文件需要用一个脚本来运行。所以我在想为什么我要费心打开maya,我应该能够在python shell中打开它(而不是maya中的python shell,windows中的python shell )
所以我们的想法是:
fileList = ["....my huge list of files...."]
for f in fileList:
openMaya
runMyAwesomeScript我发现了这个:
C:\Program Files\Autodesk\Maya201x\bin\mayapy.exe
maya.standalone.initialize()它看起来像是加载了一些东西,因为我可以看到我的脚本从自定义路径加载。但是,它不会使maya.exe运行。
欢迎任何帮助,因为我从来没有做过这种maya python外部的事情。
附注:使用maya 2015和python 2.7.3
发布于 2017-07-04 03:51:15
你在正确的轨道上。Maya.standalone运行的是无头的、非gui版本的Maya,因此它是批处理的理想之选,但它本质上是一个命令行应用程序。除了缺少GUI之外,它与常规会话相同,因此您将拥有相同的python路径和
您需要设计批处理过程,使其不需要任何UI交互(例如,您希望确保以不向用户抛出对话框的方式保存或导出内容)。
如果只需要一个仅命令行的maya,这将允许您以交互方式运行会话:
mayapy.exe -i -c "import maya.standalone; maya.standalone.initialize()"如果您有要运行的脚本,请在顶部包含import maya.standalone和maya.standalone.initialize(),然后执行您想要执行的任何工作。然后从命令行运行它,如下所示:
mayapy.exe "path/to/script.py"您可能希望在该脚本中包含要处理的文件列表,并让它一次只处理一个文件。如下所示:
import maya.standalone
maya.standalone.initialize()
import maya.cmds as cmds
import traceback
files = ['path/to/file1.ma'. '/path/to/file2.ma'.....]
succeeded, failed = {}
for eachfile in files:
cmds.file(eachfile, open=True, force=True)
try:
# real work goes here, this is dummy
cmds.polyCube()
cmds.file(save=True)
succeeded[eachfile] = True
except:
failed[eachfile] = traceback.format_exc()
print "Processed %i files" % len(files)
print "succeeded:"
for item in succeeded:
print "\t", item
print "failed:"
for item, reason in failed.items():
print "\t", item
print "\t", reason它应该对一堆文件执行一些操作,并报告哪些文件成功,哪些文件失败,原因是什么
https://stackoverflow.com/questions/44886329
复制相似问题