python - 自定义 Maya 的 addCheckCallback 弹出消息

标签 python maya maya-api

当用户保存文件时,我希望在保存之前进行检查。如果检查失败,则不会保存。我用 mSceneMessage 和 kBeforeSaveCheck 得到了这个,但我不知道如何在失败时自定义弹出消息。这可能吗?

import maya.OpenMaya as om
import maya.cmds as cmds

def func(retCode, clientData):
    objExist = cmds.objExists('pSphere1')
    om.MScriptUtil.setBool(retCode, (not objExist) ) # Cancel save if there's pSphere1 in the scene

cb_id = om.MSceneMessage.addCheckCallback(om.MSceneMessage.kBeforeSaveCheck, func)

现在显示

File operation cancelled by user supplied callback.

最佳答案

我回答这个问题有点慢,但我今天需要类似的东西,所以我想我会回答。我无法决定在一般情况下我是否会推荐这个,但严格来说,可以使用 displayString 更改 Maya 界面中相当多的静态字符串。命令。简单的部分是,您知道要查找的字符串

import maya.cmds as cmds

message = u"File operation cancelled by user supplied callback."

keys = cmds.displayString("_", q=True, keys=True)
for k in keys:
    value = cmds.displayString(k, q=True, value=True)
    if value == message:
        print("Found matching displayString: {}".format(k))

在 Maya 2015 上运行它会发现超过 30000 个已注册的显示字符串并返回一个匹配的键:s_TfileIOStrings.rFileOpCancelledByUser。我觉得很有希望。

这是修改显示字符串的初始代码:

import maya.OpenMaya as om
import maya.cmds as cmds


def func(retCode, clientData):
    """Cancel save if there is a pSphere1 in the scene"""

    objExist = cmds.objExists('pSphere1')

    string_key = "s_TfileIOStrings.rFileOpCancelledByUser"
    string_default = "File operation cancelled by user supplied callback."
    string_error = "There is a pSphere1 node in your scene"

    message = string_error if objExist else string_default
    cmds.displayString(string_key, replace=True, value=message)

    om.MScriptUtil.setBool(retCode, (not objExist))


cb_id = om.MSceneMessage.addCheckCallback(om.MSceneMessage.kBeforeSaveCheck, func)

关于python - 自定义 Maya 的 addCheckCallback 弹出消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31647878/

相关文章:

python - `mouseMoveEvent()` 鼠标移动速度太快

python - 从失败的 rq 作业中获取异常消息

c++ - 在 api 中检索 Maya 着色器的颜色

python - 程序城市生成器

python - 玛雅Python : Check to see if the attribute has any keyframes

python - 类变量根据其类型而表现不同(共享或不共享)

python - python 中用于存储命名数据的 3 维立方体的最佳数据结构

python - 如何从 Vim 在 shell 中加载 python,但不立即使用它?

raycasting - getClosestPoint 从鼠标光标位置到光线转换命中的第一个对象(maya mel 脚本)

python - Maya 2017 中的透明窗口