我使用的是Autodesk Maya 2016 + Python。
我遇到了问题。我需要替换标准菜单项和工具栏的功能。例如,您必须添加保存录制功能的功能。由于不同的人使用不同的功能,您必须立即更改所有内容。有人按下Ctrl+S
,其他人按下菜单File->Save
,有些按下工具栏上的图标。在所有领域都需要更换功能。我知道问题可归结为访问菜单,工具栏和键盘快捷键。接下来,找到庄园中的关联项目,以了解现在调用的函数。然后用它们的原因和在此菜单中先前调用的函数的末尾替换它。
File
和其他)?Maya基于QT。所以只需要获取对象,然后让QT的标准方法可以做任何事情。
怎么做?
答案 0 :(得分:2)
执行此操作的所有三种方式都会调用名为runTimeCommand
的{{1}}。覆盖该命令,您已经劫持了您描述的所有三种方式。这有点棘手,因为命令标有SaveScene
标志,这使得无法动态更改它们。您可以将它们挂钩到首次定义的位置。它们在文件中定义:
将此文件复制到您的用户配置文件maya脚本目录或工作室脚本目录。由于分辨率顺序,这些将优先于工厂脚本。 不覆盖工厂文件。然后在行中更改-default
-command
到别的地方。最好的只是在这里添加一个钩子。
显然,您也可以更改按钮/ menuitem和热键。所以你要做的就是在mel之后运行(因为大部分命令是以这种方式构建的,所以你可以更容易地在mel中执行此操作,如果必须,可以移植到python或c ++):
runTimeCommand -default true
-annotation (uiRes("m_defaultRunTimeCommands.kSaveSceneAnnot"))
-category ("File")
-command ("checkForUnknownNodes(); FileMenu_SaveItem")
SaveScene;
警告:热键在prefs中是永久性的,直到您将其更改回来或重置prefs。
请注意:用户可以至少保存两种其他方式,即使您愿意,也无法完全控制这些方式。