从选定的顶点获取网格名称

Get the mesh name from the selected vertex

我有一个脚本,用户可以在其中选择一个顶点,并且应该存储该顶点所属的网格的名称。

但是我不知道有什么方法可以优雅地获取该信息。它打印出来很好,例如pPipe1.vtx[242]。但仅获取 pPipe1 转换节点名称似乎并不简单。宁愿不求助于切断字符串中的字符。这似乎是不好的做法。

丑陋的方法是简单的方法 - 如果您将顶点条目按句点字符串拆分,您将获得变换父项。但是,您也可以将顶点条目传递给 cmds.ls(o=True),它会去除属性和组件名称以及 returns 只有对象:

cmds.select("pCube1.vtx[*]")
sel = cmds.ls(sl=True)
print sel
# [u'pCube1.vtx[0:7]']
obj = cmds.ls(*sel, o=True)
print obj
# [u'pCubeShape1']

对于一项:

sel = cmds.ls(sl=True)[0].split('.')[0]

对于项目列表:

sel = [i.split('.')[0] for i in cmds.ls(sl=True)]
sel = list(set(sel)) # Use this to remove multiple instance of an object