当用户保存文件时,我希望在保存之前进行检查。如果检查失败,则不会保存。我使用 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)
Run Code Online (Sandbox Code Playgroud)
现在它显示
用户提供的回调取消了文件操作。
import maya.api.OpenMaya as om
verticePos = [(-0.5, -0.5, 0.5, 1), (0.5, -0.5, 0.5, 1), (-0.5, 0.910894, 0.5, 1), (0.5, 0.910894, 0.5, 1), (-0.5, 0.910894, -0.383361, 1), (0.5, 0.910894, -0.383361, 1), (-0.5, -0.5, -0.383361, 1), (0.5, -0.5, -0.383361, 1), -0.5, -0.5, 1.06715, 1), (0.5, -0.5, 1.06715, 1), (0.5, 0.910894, 1.06715, 1), (-0.5, 0.910894, 1.06715, 1), (-0.5, -1.12433, -0.383361, 1), (0.5, -1.12433, -0.383361, 1), (0.5, -1.12433, 0.5, 1), …Run Code Online (Sandbox Code Playgroud) 我是C++的新手,我在docs上工作的东西告诉我只看它没有解释任何东西,所以我试图破译它.
我来了一个函数的声明,但我不完全理解它.
只是第一个功能
我得到的部分是我没有得到的是在MHWRender :: MPxShaderOverride(obj)之后然后它作为参数列表开始(或者它叫做我不知道的)
我猜我会在哪里找到指定的输入.
再一次,我不知道这是做什么,所以我有点迷失在如何解释它.
完整代码可以在这里找到:http: //help.autodesk.com/view/MAYAUL/2016/ENU/?guid = _cpp_ref_hw_phong_shader_2hw_phong_shader_8cpp_example_html
hwPhongShaderOverride(const MObject& obj)
: MHWRender::MPxShaderOverride(obj)
, fShaderNode(NULL)
, fTextureData(NULL)
, fDrawUsingShader(true) // Disabling this will use fixed-function which only has an OpenGL implementation
, fShaderBound(false)
, fTexture(NULL)
, fInColorPass(false)
, fColorShaderInstance(NULL)
, fInShadowPass(false)
, fShadowShaderInstance(NULL)
, fTransparency(0.0f)
{
// Create a shader instance to use for drawing
//
if (fDrawUsingShader)
{
createShaderInstance();
}
fAmbient[0] = fAmbient[1] = fAmbient[2] = 0.0f;
fDiffuse[0] = fDiffuse[1] = fDiffuse[2] = …Run Code Online (Sandbox Code Playgroud)