execution time for a program in python blender

I have a little problem :) I need to do a program in python , blender , in wich i must built a structure of many cubes. i am a absolutely beginner , and i have no experience in python. I realize a functional program in python and i succeded to built the structure , but i don't know how to make a mini-movie in which i would see how really my structure construct itself. this is the program i have made :

import bpy

for i in range(6):
for x in range(-i,i+1):
for y in range(-i,i+1):
for z in range(-i,i+1):
if(x<0):
xx=-x
else:
xx=x

if(y<0):
yy=-y
else:
yy=y

if(z<0):
zz=-z
else:
zz=z

if(xx+yy+zz==i):


That is all.. I have been looking for a tutorial for more than a mouth , and i can't see one who would be useful for my program . Help meeee!!!

• you want to render a frame for each new block being added? – zeffii Feb 5 '16 at 13:05
• yes , but i talk about more than 400 cubes – user21553 Feb 5 '16 at 13:09
• i was thinking about puting sleeptime after every iteration , but my program waited and show me nothing until the program is finished – user21553 Feb 5 '16 at 13:12
• related, possible duplicate: blender.stackexchange.com/questions/28673/… – zeffii Feb 5 '16 at 14:27
• sleep() wont work, but if you want to see this code running in 3dview in realtime then the above link shows a few approaches. it's not exactly clear what you want to produce as an outcome. Please elaborate. – zeffii Feb 5 '16 at 14:40

import bpy
from itertools import product

mesh = bpy.data.meshes['Cube']
objects_scene = bpy.context.scene.objects
objects_data  = bpy.data.objects
actions_data  = bpy.data.actions

def create_cube(name, location):
obj = objects_data.new(name, mesh)
obj.location = location
return obj

def create_animation(obj, time):
obj.animation_data_create()
obj.animation_data.action = action = actions_data.new("Action")
fcurves = [action.fcurves.new(data_path) for data_path in ("hide", "hide_render")]
for fcu in fcurves:
fcu.keyframe_points.insert(   0, 1, {'FAST'}).interpolation = "CONSTANT"
fcu.keyframe_points.insert(time, 0, {'FAST'}).interpolation = "CONSTANT"
fcu.extrapolation = "CONSTANT"

n = 6
time = 1
for i in range(n):
for indices in product(range(-i, i+1), repeat=3):
if sum(abs(j) for j in indices) == i:
cube = create_cube("Cube", indices)
create_animation(cube, time)
time += 1


The result rendered using the OpenGL Viewport Renderer:

Note

I scaled down the default cube manually and deleted it afterwards before i ran the script.

• you are a genius ! Can i move my camera around the construction , while it is building? – user21553 Feb 6 '16 at 21:26