我试图在maya python中迭代循环(选择顶点),但是在循环中正确地连接变量(sel)的语法......
sel = mc.ls(sl=True)
for num in range(0,noOfVerts, 2):
mc.select("sel.vtx[%d]" % num, add = True)
将变量用作字符串而不是对象本身
答案 0 :(得分:0)
您需要删除此引号并直接使用您的变量作为第一个参数,而不是代表变量名称的字符串:
sel = mc.ls(sl=True)
for num in range(0,noOfVerts, 2):
mc.select(sel.vtx[num], add=True)
答案 1 :(得分:0)
因为您告诉它将其视为字符串。我怀疑你想要的东西:
mc.select(sel.vtx[num], add = True)
答案 2 :(得分:0)
您需要从变量中组合字符串,而不是仅使用文字sel
sel = mc.ls(sl=True)
for num in range(0,noOfVerts, 2):
mc.select("%s.vtx[%d]" % (sel[0], num), add = True)
这假设您只选择了一个对象。否则你只需要循环sel
答案 3 :(得分:0)
你可以进行循环但你最终会在撤销堆栈中添加许多内容。如果你有很多顶点,这将变得非常慢。 尽量避免这种情况。 Maya确实提供了通配符选择器,因此您可以执行以下操作:
for item in mc.ls(sl=True):
mc.select("%s.vtx[*]" % item, add=True)
而不是一次选择一个非常慢的。另一种方法是生成许多名称并一次选择它们。因此,当一个选择执行时,不要调用许多选择。这会降低您的内存消耗并使其更快(如果您有1000个或更多顶点,这是很重要的。)
另一方面,您还可以使用以下方法回避整个代码:
mc.select(mc.polyListComponentConversion(toVertex=True))
Ps:maya也像python一样知道组件选择的切片操作。因此可以选择obj.vtx [0:100]