Maya + Python 数组收集

0 投票
1 回答
3765 浏览
提问于 2025-04-18 00:54

我有几个基本的问题,想通过这些问题来理解在Maya中使用Python处理数组。

  1. 我怎么才能把所有选中的节点放到一个叫做'curSel'的数组里呢?
  2. 接着,我怎么能把'curSel'数组里的'网格'部分收集到一个新的数组'meshArr'里呢?
  3. 然后,我又怎么能把'curSel'数组里的'曲线'部分放到一个新的数组'curvesArr'里呢?

简单来说,我就是想把所有选中的节点放到一个变量里。然后再通过从这个数组中提取特定的节点,创建两个新的数组。

1 个回答

2

这件事比想象中要复杂一些。

import maya.cmds as cmds
curSel = cmds.ls(sl=True)

这段代码会给你一个包含所选对象的列表。不过,列表里只会有变换信息,除非你明确选择了网格或曲线的形状节点,所以你不能仅仅通过这个列表来获取网格或形状。

要获取这些形状,你需要使用 listRelatives:

curveSel = []
meshSel = []
for xform in curSel:
   shapes = cmds.listRelatives(xform, shapes=True) # it's possible to have more than one
   for s in shapes:
       if cmds.nodeType(s) == 'mesh':
          curveSel.append(xform)
       if cmds.nodeType(s) == 'nurbsCurve':
          meshSel.append(xform)

这个方法会检查每个对象的形状,并根据形状的类型把它们分配到正确的列表中。

撰写回答