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

2024-05-15 11:42:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图找到正确的代码,使玛雅选择我的场景中的所有几何体对象。 我在执行操作时尝试回显命令,得到的结果是:

SelectAllGeometry;
select -r `listTransforms -geometry`;

(编辑>;按类型全选>;几何体)

有人能把这个翻译成Python吗?


Tags: 对象代码命令gt编辑场景select按类型
3条回答

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;

很简单:

import maya.cmds as cmds

cmds.SelectAllGeometry()

您看到的是过程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的MEL和Python命令参考,了解selectlistRelativesls,以研究一个命令如何转换为另一个命令:


综合所有这些,实际调用的等效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)

相关问题 更多 >