我在Ubuntu 21,10上使用Blender 3.0为什么这个代码不起作用?我正在尝试随机生成一个立方体的六个顶点的x、y和z值并创建它
这个代码的灵感来自Chris Holt的https://youtu.be/mljWBuj0Gho
进口bpy导入随机name=";"新对象";verts=[]edges=[]面=[]
床=300#,单位:mm打印("床="+str(床))
xmin=-床/2ymin=-床/2zmin=-床/2xmax=床/2ymax=床/2zmax=床/2
print("xmin"+str(xmin))print("xmax"+str(xmax))print("ymin"+str(ymin))print("ymax"+str(ymax))print("zmin"+str(zmin))print("zmax"+str(zmax))
生成坐标
左上角
a1=随机随机随机点(xmin,0)a2=随机随机随机点(ymin,0)a3=随机随机随机点(0,zmax)
右上角
b1=随机随机随机点(xmin,0)b2=随机随机随机点(0,ymax)b3=随机随机随机点(0,zmax)
右上前部
c1=随机随机随机点(0,xmax)c2=随机随机随机点(0,ymax)c3=随机随机随机点(0,zmax)
左上前部
d1=随机随机随机点(0,xmax)d2=随机随机随机点(ymin,0)d3=随机随机随机点(0,zmax)
左下角
e1=随机随机随机点(xmin,0)e2=随机随机随机点(ymin,0)e3=随机随机随机点(zmin,0)
右下角
f1=随机随机随机点(xmin,0)f2=随机随机随机点(0,ymax)f3=随机随机随机点(zmin,0)
右下前部
g1=随机随机随机点(0,xmax)g2=随机随机随机点(0,ymax)g3=随机随机随机点(zmin,0)xmax
左下前部
h1=随机随机随机点(0,xmax)h2=随机随机随机点(ymin,0)h3=随机随机随机点(zmin,0)
打印("\n")打印("\n")print("a1="+str(a1))print("a2="+str(a2))print("a3="+str(a3))
打印("\n")print("b1="+str(b1))print("b2="+str(b2))print("b3="+str(b3))
打印("\n")print("c1="+str(c1))print("c2="+str(c2))print("c3="+str(c3))
打印("\n")print("d1="+str(d1))print("d2="+str(d2))print("d3="+str(d3))
打印("\n")print("e1="+str(a1))print("e2="+str(e2))print("e3="+str(e3))
打印("\n")print("f1="+str(f1))print("f2="+str(f2))print("f3="+str(f3))
打印("\n")print("g1="+str(g1))print("g2="+str(g2))print("g3="+str(g3))
打印("\n")print("h1="+str(h1))print("h2="+str(h2))print("h3="+str(h3))打印("结束")
#8个顶点verts.append([#index 0a1,#xa2,#ya3#z])verts.append([#index 1b1,#xb2,#yb3#z])verts.append([#index 2c1,#xc2,#yc3#z])verts.append([#index 3d1#d2,#yd3#z])verts.append([#index 4e1,#xe2,#ye3#z])verts.append([#index 5f1,#xf2,#yf3#z])verts.append([#index 6g1,#xg2,#yg3#z])verts.append([#index 7h1,#xh2,#yh3#z])
#12个边缘#顶部edges.append([0,1])edges.append([1,2])edges.append([2,3])edges.append([3,0])#底部edges.append([4,5])edges.append([5,6])edges.append([6,7])edges.append([7,4])#连接edges.append([0,4])edges.append([1,5])edges.append([2,6])edges.append([3,7])
打印(vert[7])打印(边缘[0])
#6面#顶部faces.append([0,1,2,3])#底部faces.append([4,5,6,7])#侧面
背面
faces.append([2,6,10,11])
前部
faces.append([0,1,4,5])
右侧
faces.append([1,2,5,6])
左侧
faces.append([0,3,7])
打印";faces[1]="+"str(faces[1]))#不起作用
打印(面[1])
mesh=bpy.data.meshs.new(名称)print("mesh="+str(mesh))obj=bpy.data.objects.new(名称,网格)print("obj="+str(obj))col=bpy.data.collections.get("集合")print("col="+str(col))col.objects.link(obj)bpy.context.view_layer.objects.active=对象#mesh.from_pydata(verts,edges,faces)mod_skin=obj.modifiers.new('skin','skin')
我收到的错误信息是
追踪(最近一次通话):文件"/"dem.py";,第188行,inAttributeError:"NoneType"对象没有属性"objects"错误:Python脚本失败,请检查系统控制台中的消息
bpy.data.collections
返回一个bpy.prop_collection
,您可以使用get()
方法按关键字在其中进行搜索。在这里,您似乎正在搜索一个不存在的密钥。它返回None
,因此返回您的错误。
使用for循环迭代bpy.data.collections
对象
for collection in bpy.data.collections:
print(collection)
你可以看到唯一的会员是
<bpy_struct, Collection("Collection") at 0x7f20e4359848>
当你打开一个新项目时,这只是blender的默认集合。如果您创建一个名为";集合2";或者for
循环将为您提供另一个集合对象。
也许你的意思是
bpy.data.collections.get("Collection")
哪个将为您提供默认集合?