使用常规的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/