Maya2016中MStatus中的改变

来源:互联网 发布:webgis python 编辑:程序博客网 时间:2024/05/17 01:24
之前Maya Python API 中 MStatus 的用法是:
return OpenMaya.MStatus.kSuccess
但是Maya2016中已经移除了MStatus这个类,所以有新的处理方式

http://help.autodesk.com/view/MAYAUL/2016/ENU/?guid=__files_Maya_Python_API_Using_the_Maya_Python_API_htm
在C++的API里有两种方式能返回MStatus的值,一种是作为方法的返回值:
MStatus someMethod(Type arg1, Type arg2, ...) 

另一种是通过变量列表里一个可选的、指向MStatus变量的指针返回,通常情况下是最后一个变量:
Type someMethod(Type arg1, Type arg2, ..., MStatus* ReturnStatus = NULL) 

MStatus作为方法的函数值返回

当方法将一个MStatus的值当做函数值返回时,返回值在Python中是这样处理的:

  • 当status值是“MS::kUnknownParameter”时,将字符串unknown返回给Python
  • 当status值是“MS::kSuccess” 时,什么也不返回,并且不引发异常(exception)
  • 当status是其他值是,什么也不返回,但是触发一个RuntimeError的异常

MStatus通过一个指针变量返回
当API方法将MStatus通过变量列表中一个指针返回时,MStatus是这样处理的。

  • 当status值是“MS::kSuccess” 时,不引发异常(exception)
  • 如果status是其他值,什么也不返回,但是触发一个RuntimeError的异常

这意味着使用C++写插件的用户依然可以像之前一样返回MStatus,不管这段代码是从C++还是Python调用的。在必要的时候Maya会在内部将这些代码转化成Python中的exceptions。
用Python写插件的人,应该引发异常而不是返回MStatus值,unless they want their compute()method to indicate that it is not going to handle a plug(这句不会翻译了),在这种情况下应该返回OpenMaya.MStatus.kSuccess。


简而言之:
return OpenMaya.MStatus.kSuccess --------> return

returnOpenMaya.kUnknownParameter--------> print 'error or something' /return

需要判断的时候try except



原创粉丝点击