按类型选择全部:几何。等效的Python脚本?

时间:2014-01-31 21:22:38

标签: python select scripting geometry maya

我试图找到合适的代码,让maya选择场景中的所有几何对象。 我尝试在执行操作时回显命令,我得到了这个:

SelectAllGeometry;
select -r `listTransforms -geometry`;

(编辑>按类型选择全部>几何)

有人可以将其翻译成Python吗?

3 个答案:

答案 0 :(得分:5)

您所看到的是程序SelectAllGeometry及其内容:

select -r `listTransforms -geometry`;

该命令是几个部分。反引号中的部分:

listTransforms -geometry

实际上是MEL程序。运行命令help listTransforms以查看.mel文件的路径。读到这个命令,实际上是

listRelatives("-p", "-path", eval("ls", $flags));

该输出是:

的参数
select -r the_list_of_geometry_transforms

请查看Maya的selectlistRelativesls的MEL和Python命令参考,以研究一个命令如何转换为另一个命令:


将所有这些组合在一起,实际调用的等效MEL是:

select -r `listRelatives("-p", "-path", eval("ls", $flags))`

和Python一样,那就是:

from maya import cmds
cmds.select(cmds.listRelatives(cmds.ls(geometry=True), p=True, path=True), r=True)

扩展为更具可读性:

from maya import cmds
geometry = cmds.ls(geometry=True)
transforms = cmds.listRelatives(geometry, p=True, path=True)
cmds.select(transforms, r=True)

答案 1 :(得分:2)

ls -type(或cmds.ls)使用maya节点层次结构(laid out in the docs。因此,您可以使用ls -type geometryShape获取所有几何形状,因为 geometryShape 是所有其他类型的几何体派生的节点。(通过选择不同的类型和子类型,检查链接中的列表以获得改进方法)

要获得转换,请添加listRelatives -p。所以总数将是

string $sh[] = `ls -type geometryShape`;
string $t[] = `listRelatives -p $sh`;
select -r $t;

答案 2 :(得分:1)

很简单:

{{1}}