Python 为什么我得到一个对象无效错误?

Python 为什么我得到一个对象无效错误?,python,maya,Python,Maya,我认为我的命名约定有问题,但我不确定如何修复它。它一直给我一个无效的对象,即使是在试图根据顶点命名它时,请帮助 for i in range(1,100): print i def cactus(): #creating base of cactus cmds.polyCylinder(sc=1,sa=10,sh=10, n= "cactus1_Base["+str(i)+"]") 我得到的错误是: # Error: TypeError: file <maya cons

我认为我的命名约定有问题,但我不确定如何修复它。它一直给我一个无效的对象,即使是在试图根据顶点命名它时,请帮助

for i in range(1,100):
    print i

def cactus():
#creating base of cactus
    cmds.polyCylinder(sc=1,sa=10,sh=10, n= "cactus1_Base["+str(i)+"]")
我得到的错误是:

# Error: TypeError: file <maya console> line 17: Object cactus1_Base[99].e[140:169] is invalid this is the error im getting and the code is
#错误:类型错误:文件第17行:对象cactus1_Base[99]。e[140:169]无效这是我收到的错误,代码为

本周我没有maya,因此我无法真正检查此代码的结果 第一条代码对我来说是最好的解决方案,但你也有第二条

请注意,在代码中,角色“[”和“]”在maya中是为以下组件保留的:vtx[]、e[]、f[]等 所以你不能用它们来命名

第二,当您创建迭代“i”时,它在您的函数之外,因此i和您的函数cactus()之间没有真正的联系 所以你必须考虑如何创造仙人掌。这就是为什么我写了这两个例子: 首先考虑你正在创造仙人掌元素。 第二个只是为了创造一堆仙人掌

您可以超越kwargs,尝试模仿cmds.polyCylinder

以防万一,为maya学习一点python课程:

或根据选择:

def create_cactusVtx():
    mysel = cmds.ls(sl=True, fl=True)
    for i in range(len(mysel)):
        id = mysel.split('[')[-1][:-1]
        name = "cactus1_Base_{}".format(i)
        cactus = cmds.polyCylinder(sc=1,sa=10,sh=10, n=name)[0]

@Kayla,你应该提供你正在使用的代码。如果您不理解您的代码,您应该从python基础知识开始:字符串操作、循环、列表、定义、返回语句,这些基础知识足以在maya中完成所有需要的工作。当您熟悉python基础知识时,您应该能够跳转到maya“基于mel的python”,maya python doc确实是我所需要的,而且它太具体了,以至于无法筛选我已经做了几个星期的几个小时的视频,而这些都没有真正帮助我。我的作业是创建这个仙人掌,并将其移动到选定的点,同时随机旋转和大小。我感谢您对命名约定的帮助,但它仍然不起作用。如果您能帮助我将随机功能添加到这段代码中,我将不胜感激<代码>列表中的版本:vertPos=cmds.xform(ver,q=True,ws=True,t=True)obj=cactus()cmds.move(vertPos[0],vertPos[1],vertPos[2],obj,a=True,r=True)键入“python随机模块”,然后使用cmds.setAttr。ive链接的视频非常有趣,可以创建球体并移动球体。1小时的视频似乎不是什么大不了的事。。。。继续creativecrash,下载一个随机化脚本并查看学习代码。
def create_cactus(nb_of_cactus=100):
    cactus_output = []
    for nb in range(nb_of_cactus):
        name = "cactus1_Base_{}".format(nb)
        cactus = cmds.polyCylinder(sc=1,sa=10,sh=10, n=name)[0]
        cactus_output.append(cactus)
    return cactus
myCactus= create_cactus(100)
print(myCactus)
def create_cactusVtx():
    mysel = cmds.ls(sl=True, fl=True)
    for i in range(len(mysel)):
        id = mysel.split('[')[-1][:-1]
        name = "cactus1_Base_{}".format(i)
        cactus = cmds.polyCylinder(sc=1,sa=10,sh=10, n=name)[0]