Python变量字符串连接

时间:2014-05-24 15:19:57

标签: python python-2.7 maya

我试图在maya python中迭代循环(选择顶点),但是在循环中正确地连接变量(sel)的语法......

sel = mc.ls(sl=True)
for num in range(0,noOfVerts, 2):
    mc.select("sel.vtx[%d]" % num, add = True)

将变量用作字符串而不是对象本身

4 个答案:

答案 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]