为什么我会收到对象无效错误?
why am i getting an object invalid error?
我认为我的命名约定有问题,但我不确定如何解决。它一直给我一个无效的对象,即使试图根据顶点命名它也请帮助。
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
我这周没有maya,所以我无法真正检查这段代码的结果
第一段代码对我来说是最好的解决方案,但你也有第二段代码。
请注意,在您的代码中,字符“[”和“]”在 maya 中保留用于组件:vtx[]、e[]、f[]...等
所以你不能用它们来命名
其次,当您创建迭代时 'i',它在您的函数之外,因此 i 和您的函数 cactus() 之间没有真正的联系
所以你必须考虑如何创造仙人掌。这就是为什么我写了这两个例子:
首先考虑你正在创建仙人掌元素
第二个只是为了创造一堆仙人掌
你可以超越 kwargs 并尝试模仿 cmds.polyCylinder
以防万一 python 玛雅课程:https://www.youtube.com/watch?v=PDKxDbt6EGQ&t=4s
def nameChecker(name, start=0, max=100000, stringFormat=True):
if not '{' in name:
stringFormat = False
a = start
while a < max:
if stringFormat:
confName = name.format(a)
else:
confName = name + str(a)
if not cmds.objExists(confName):
return confName
a+=1
def create_cactus(baseName='cactus1_Base_{:03d}'):
name_conform = nameChecker(baseName)
cactus = cmds.polyCylinder(sc=1,sa=10,sh=10, n=name_conform)[0]
return cactus
cactus_output = []
for i in range(1,100):
cactus = create_cactus()
cactus_output.append(cactus)
print(cactus_output )
或更简单:
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]
我认为我的命名约定有问题,但我不确定如何解决。它一直给我一个无效的对象,即使试图根据顶点命名它也请帮助。
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
我这周没有maya,所以我无法真正检查这段代码的结果 第一段代码对我来说是最好的解决方案,但你也有第二段代码。
请注意,在您的代码中,字符“[”和“]”在 maya 中保留用于组件:vtx[]、e[]、f[]...等 所以你不能用它们来命名
其次,当您创建迭代时 'i',它在您的函数之外,因此 i 和您的函数 cactus() 之间没有真正的联系 所以你必须考虑如何创造仙人掌。这就是为什么我写了这两个例子: 首先考虑你正在创建仙人掌元素 第二个只是为了创造一堆仙人掌
你可以超越 kwargs 并尝试模仿 cmds.polyCylinder
以防万一 python 玛雅课程:https://www.youtube.com/watch?v=PDKxDbt6EGQ&t=4s
def nameChecker(name, start=0, max=100000, stringFormat=True):
if not '{' in name:
stringFormat = False
a = start
while a < max:
if stringFormat:
confName = name.format(a)
else:
confName = name + str(a)
if not cmds.objExists(confName):
return confName
a+=1
def create_cactus(baseName='cactus1_Base_{:03d}'):
name_conform = nameChecker(baseName)
cactus = cmds.polyCylinder(sc=1,sa=10,sh=10, n=name_conform)[0]
return cactus
cactus_output = []
for i in range(1,100):
cactus = create_cactus()
cactus_output.append(cactus)
print(cactus_output )
或更简单:
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]