Difficulties With Using Python Scripts (Blender 2.62)

As the title suggests, I’m having issues with using python scripts in Blender 2.62. I’ve tried to use them via the python console, the text editor in Blender, and by importing them as .py files (in every way I know how), but nothing is working. I’m wondering if it’s something I’m doing wrong, or some faulty code, or a combination. Any help would be great, but preferrably before Wednesday, as I need this working on that day at the latest. :stuck_out_tongue:

Here’s the code for anyone interested, or just for anyone to double check for any faults (and no, I did not write this, nor do I have any experience with writing code).


import Blender
from Blender import Mesh,Scene
scn=Scene.GetCurrent()
def generate(location, scale, level, currentVerts,currentFaces):
    height=2.
    x,y,z=location
    newVerts,newFaces=[],[]
    if level:
        scale/=2.0
        generate(location,scale,level-1,currentVerts,currentFaces)
        generate([x-scale,y-scale,z-scale*height],scale,level-1,currentVerts,currentFaces)
        generate([x+scale,y-scale,z-scale*height],scale,level-1,currentVerts,currentFaces)
        generate([x-scale,y+scale,z-scale*height],scale,level-1,currentVerts,currentFaces)
        generate([x+scale,y+scale,z-scale*height],scale,level-1,currentVerts,currentFaces)    
    else:
        start=len(currentVerts)
        currentVerts.extend([[x,y,z],\
        [x-scale,y-scale,z-scale*height],\
        [x+scale,y-scale,z-scale*height],\
        [x+scale,y+scale,z-scale*height],\
        [x-scale,y+scale,z-scale*height]])
        currentFaces.extend([[start,start+1,start+2],\
        [start,start+2,start+3],\
        [start,start+3,start+4],\
        [start,start+1,start+4],\
        [start+1,start+2,start+3,start+4]])
    return [currentVerts,currentFaces]
for i in range(6):
    v,f=generate([0,0,2],1,i,[],[])
    level=Mesh.New(str(i)+'level')
    level.verts.extend(v)
    level.faces.extend(f)
    ob=scn.objects.new(level,'gasket'+str(i))

The uppercase letters in the script tells that this is for Blender 2.4x. Devs are lazy nowadays, everything is in lowercase. :wink:

Anyway… I googled a bit around and I fixed your script. It works. And this is my very first script for Blender! So, thank you, I guess. :smiley:


import bpy

scn = bpy.context.scene

def generate(location, scale, level, currentVerts, currentFaces):
    height = 2.
    x, y, z = location
    newVerts,newFaces = [], []
    if level:
        scale /= 2.0
        generate(location, scale, level-1, currentVerts, currentFaces)
        generate([x-scale, y-scale, z-scale*height], scale, level-1,\
        currentVerts, currentFaces)
        generate([x+scale, y-scale, z-scale*height], scale, level-1,\
        currentVerts, currentFaces)
        generate([x-scale, y+scale, z-scale*height], scale, level-1,\
        currentVerts, currentFaces)
        generate([x+scale, y+scale, z-scale*height], scale, level-1,\
        currentVerts, currentFaces)    
    else:
        start=len(currentVerts)
        currentVerts.extend([[x, y, z],\
        [x-scale, y-scale, z-scale*height],\
        [x+scale, y-scale, z-scale*height],\
        [x+scale, y+scale, z-scale*height],\
        [x-scale, y+scale, z-scale*height]])
        currentFaces.extend([[start, start+1, start+2],\
        [start, start+2, start+3],\
        [start, start+3, start+4],\
        [start, start+1, start+4],\
        [start+1, start+2, start+3, start+4]])
    return [currentVerts, currentFaces]

for i in range(6):
    verts, faces = generate([0, 0, 2], 1, i, [], [])
    level = bpy.data.meshes.new(name=str(i)+'level')
    level.from_pydata(verts, [], faces)
    level.update()    
    ob = bpy.data.objects.new('gasket'+str(i), level)
    scn.objects.link(ob)

(If any pro scripter wants to add comments, you’re welcome.)