首页 > 解决方案 > 启动 Maya 时自定义架子脚本未运行 - 错误

问题描述

我想在 Maya 2018 启动时创建一个自定义架子。我正在调用一个脚本来在 userSetup.py 文件中构建架子。如果在启动后在脚本编辑器中运行该脚本将创建架子,但在启动时调用时会引发错误。

#userSetup.py
#-----
import maya.cmds as cmds
import sys
sys.path.append('/Users/alfredwinters/Desktop/python/scripts/')
import lighting_tools_shelf
cmds.evalDeferred("lighting_tools_shelf")

#lighting_tools_shelf.py
#----
import maya.cmds as cmds
cmds.shelfLayout("lighting_shelf", p="ShelfLayout")

这是我在启动时调用脚本时遇到的错误。

执行 userSetup.py 失败

回溯(最近一次通话最后):

文件“/Users/alfredwinters/Library/Preferences/Autodesk/maya/2018/scripts/userSetup.py”,第 8 行,在 import lighting_tools_shelf

文件“/Users/alfredwinters/Desktop/python/scripts/lighting_tools_shelf.py”,第 19 行,在 custom_shelf cmds.shelfLayout(name, p="ShelfLayout")

RuntimeError:shelfLayout:找不到对象'ShelfLayout'。

标签: pythonmaya

解决方案


由于您在调用时没有提到错误cmds.shelfLayout(name, p="ShelfLayout")

RuntimeError: shelfLayout: Object 'ShelfLayout' not found.

它只是说ShelfLayout对象在给定的上下文中不可用。ShelfLayout表示包含所有 Maya Shelves 的主要布局。但它不应该按原样使用。您应该必须从全局变量中获取它。

例子:

import maya.mel as mel
main_shelf = mel.eval('$tempMelVar=$gShelfTopLevel')

# Now main_shelf holds complete path the the layout
# Now you can use it as parent for other shelf layouts
cmds.shelfLayout(name, p=main_shelf)

希望这能解决您的问题。谢谢


推荐阅读