我使用Autodesk Maya 2016 + Python。
我有个问题。我需要替换标准菜单项和工具栏的功能。例如,您必须添加该函数以保存记录函数。因为不同的人使用不同的功能,所以你必须同时改变一切。有人按Ctrl+S,另一些人转到菜单File->Save,有些人按工具栏上的图标。在所有领域,都有必要替换该功能。我理解这个问题归结为为了访问菜单、工具栏和键盘快捷键。接下来,查找产业上的关联项,以了解现在调用的函数。然后将其替换为它们的原因,并在此菜单前面调用的函数的末尾。
File和其他)?玛雅是基于QT的。所以只需要得到对象,然后就有了QT的标准手段就可以做任何事情。
该怎么做呢?
发布于 2016-01-18 20:47:19
这三种方法都调用了名为runTimeCommand的SaveScene。重写该命令,您已经劫持了您描述的所有三种方式。这有点棘手,因为该命令被标记为-default标志,这使得不可能动态更改它们。您可以将它们挂在第一次定义的位置。它们是在文件中定义的:
将此文件复制到用户配置文件maya脚本目录或studio脚本目录中。这些将获得优先的工厂脚本,因为解决顺序。不要覆盖工厂文件。然后更改行中的-command,
runTimeCommand -default true
-annotation (uiRes("m_defaultRunTimeCommands.kSaveSceneAnnot"))
-category ("File")
-command ("checkForUnknownNodes(); FileMenu_SaveItem")
SaveScene;其他的东西。最好在这里加个钩子。
显然,您也可以更改按钮/菜单项和热键。因此,您所做的是按照mel运行(在mel中这样做比较容易,因为大部分命令都是以这种方式构建的,如果必须的话,可以移植到python或c++ ):
runTimeCommand
-annotation "Print the word \"Hello\""
-command ("print \"foo\"")
MySave;
nameCommand
-annotation "Print the word \"Hello\""
-command ("print \"foo\"")
MySaveNamed;
buildFileMenu();
menuItem -e -c "MySave" "MayaWindow|mainFileMenu|saveItem";
iconTextButton -e -c "MySave2" openSceneButton;
hotkey -keyShortcut "s" -ctl -name ("MySaveNamed");警告:热键在prefs中将是永久的,直到您将它改回或重置prefs为止。
请注意:至少还有另外两种用户可以保存的方式,即使您想要保存,也不能完全控制它们。
https://stackoverflow.com/questions/34850004
复制相似问题