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

Python 从选定顶点获取网格名称,python,polygon,mesh,maya,vertex,Python,Polygon,Mesh,Maya,Vertex,我有一个脚本,用户在其中选择一个顶点,并应存储该顶点所属网格的名称 然而,我不知道如何优雅地获取这些信息。它打印得很好,例如pPipe1.vtx[242]。但是,仅获取pPipe1转换节点名称似乎并不十分简单。我宁愿不要切断字符串中的字符。这似乎是不好的做法。丑陋的方法是简单的方法-如果在周期上对顶点条目进行字符串拆分,则将得到变换父项。但是,您也可以将顶点条目传递给cmds.ls(o=True),该操作会去除属性和组件名称,并仅返回对象: cmds.select("pCube1.vtx[*]"

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


然而,我不知道如何优雅地获取这些信息。它打印得很好,例如
pPipe1.vtx[242]
。但是,仅获取pPipe1转换节点名称似乎并不十分简单。我宁愿不要切断字符串中的字符。这似乎是不好的做法。

丑陋的方法是简单的方法-如果在周期上对顶点条目进行字符串拆分,则将得到变换父项。但是,您也可以将顶点条目传递给
cmds.ls(o=True)
,该操作会去除属性和组件名称,并仅返回对象:

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']

丑陋的方法是简单的方法-如果在周期上分割顶点条目,将得到变换父对象。但是,您也可以将顶点条目传递给
cmds.ls(o=True)
,该操作会去除属性和组件名称,并仅返回对象:

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
对于一个项目:

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