我得到的代码就像这样工作,直到我意识到顶点索引会改变超过100个顶点的几何...
我以为我可以拆分字符串,一切都会花花公子
import maya.cmds as mc
selPoints = mc.ls(sl = True) # list of names of selected vertices
objName = (str(selPoints[0]))[:-9]
print selPoints
print objName
这是它返回的内容:
[u'pCylinder25.vtx[4]', u'pCylinder25.vtx[24]']
pCylinder
我试图用' .vtx [整数]'
来破解这部分我可能会对此完全错误,并且可能有一种简单的方法可以做到这一点。
由于
答案 0 :(得分:4)
您可以使用-o标志从任何有效的选择字符串中获取对象:
cmds.ls("pCube1.vtx[0]", o=True)
# pCubeShape1
请注意,这将是形状,而不是变形 - 玛雅是迂腐的,但它是正确的。转换将是
cmds.listRelatives(cmds.ls("pCube1.vtx[0]", o=True), p=True)
您可能还会发现使用partition
分割组件很有帮助:
object, _, component = "pCube1.vtx[0]".partition(".")
其中_
是python俚语'忽略我'。
答案 1 :(得分:2)
无论如何,您应该经常参考documentation以获取有关您可以使用的各种string
方法的更多信息。真的一直派上用场!
要回答您的问题,您可以使用.split
或.find
,无论您喜欢哪种方式。
print selPoints[0].split('.vtx')[0]
print selPoints[0][0:selPoints[0].find('.vtx')]
split
方法返回由分隔符字符串'.vtx'
创建的字符串列表。然后,从该列表中取出第一个元素将始终是对象名称。
find
方法返回子字符串'.vtx'
的索引,因此第二个示例只使用切片语法返回正确的字符串。
答案 2 :(得分:0)
仅适用于东西,使用香草Maya命令:
ls
所述:cm.ls("pCube1.vtx[0]", o=1) # will return shape pCubeShape1
plugNode
(与plugAttr
相反):cm.plugNode("pCube1.vtx[0]") # will return transform pCube1