使用常规的python对象,很容易看到它们的详细信息。
例如。

vec = (1, 2, 3)
print vec


=>

(1, 2, 3)


当使用等效的OpenMaya(OM)对象时,所有print或str()显示的都是对象的类型:

vec = OpenMaya.MFloatVector(1,2,3)
print vec


=>

<maya.OpenMaya.MFloatVector; proxy of <Swig Object of type 'MFloatVector *' at 0x000000002A346060> >


有没有一般的方法可以要求MObject提供更多详细信息?
我想要一个类似的结果:

MFloatVector(1, 2, 3)


-----编辑-----

从C ++文档中,我可以通过ostream <

  使用的格式为[x,y,z]


所以问我问题的另一种方法是:在python中,如何在内存中创建一个ostream,将对象发送给它,然后以字符串的形式获取结果?

-----编辑2 -----

我的进口声明是:

import maya.OpenMaya as OpenMaya


这意味着我正在使用Maya Python API的版本1。 (因为某些版本2的东西是存根,例如MGlobal。我正在查看示例使用这些版本1的功能,所以我坚持使用版本1。)

我已经发布了自己的答案,即使用版本2来获得所需的行为。 TBD是否需要版本2的所有内容,以及将版本1的示例转换为版本2所需的内容。现在,我坚持使用版本1。如果有人可以获取版本1来提供更多有用的打印详细信息,那就是我会接受的答案。

最佳答案

Maya Python API的版本2对python更友好。

要访问版本2,请从以下位置更改导入语句

import maya.OpenMaya as OpenMaya




import maya.api.OpenMaya as OpenMaya


这将需要对脚本进行更改,因为许多方法都经过了调整,使其对python更友好。

完成此操作后,“ print vec”,“ str(vec)”和“ len(vec)”都将变为有用的操作:

vec = OpenMaya.MFloatVector(1, 2, 3)
print vec
print str(vec)
print len(vec)


=>

(1, 2, 3)
(1, 2, 3)
3

关于python - OpenMaya API(python):从MObjects打印更多有用的信息?例如。 MFloatVector(x,y,z),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20153859/

10-12 18:34
查看更多