python - 启动 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'。
解决方案
由于您在调用时没有提到错误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)
希望这能解决您的问题。谢谢
推荐阅读
- c# - 如果 JSON 字符串具有未闭合的 html 标签,如何使用 AntiXss
- angular - Angular 7 性能
- javascript - 如何使用键值从 Firebase 检索数据
- c# - 将选定的下拉列表项显示到指定的 gridview 列中
- python - 用列表填充 pd 数据框作为循环列表列表的列
- appv - 我创建一个 APP-V FileNet IDM 桌面包?
- css - Webpacker 3.5 不提供 CSS。导轨 5.2.2
- php - 如何在 phpspreadsheet 中自定义日期格式?
- php - Magento1 Feefo小部件js与prototype.js冲突
- javascript - Firebase 数据库重写数据