import bpy
import math
'''
for x in bpy.context.scene.objects:
bpy.context.scene.objects.unlink(x)
for x in bpy.data.objects:
bpy.data.objects.remove(x)
for x in bpy.data.objects:
x.select = True
bpy.ops.object.delete()
'''
msh = bpy.data.meshes.new('cylinderMesh')
obj = bpy.data.objects.new('cylinder', msh)
bpy.context.scene.objects.link(obj)
m = 10
n = 10
w = 1.0/float(m)
h = 2.0/float(n)
dt = 2.0*math.pi/float(m)
def vert():
for v in range(n):
for u in range(m):
theta = float(u)*dt
x = cos(theta)
y = sin(theta)
yield(x, y, h*float(v))
def edge():
for v in range(n-1):
for u in range(m-1):
yield(v*m+u, (v+1)*m+u)
yield((v+1)*m+u, v*m+u+1)
u=m-1
yield(v*m+u, (v+1)*m+u)
yield((v+1)*m+u, v*m)
yield(v*m, (v+1)*m)
def face():
for v in range(n-1):
for u in range(m-1):
yield(v*m+u, (v+1)*m+u, v*m+u+1)
yield((v+1)*m+u, v*m+u+1, (v+1)*m+u+1)
u=m-1
yield(v*m+u, (v+1)*m+u, v*m)
yield((v+1)*m+u, v*m, (v+1)*m)
msh.from_pydata(list(vert()), [], list(face()))
msh.update()