从选定的顶点获取网格名称
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
我有一个脚本,用户可以在其中选择一个顶点,并且应该存储该顶点所属的网格的名称。
但是我不知道有什么方法可以优雅地获取该信息。它打印出来很好,例如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