Is it possible to create an incremental array? The effect I am trying to achieve is an array that is fully editable in one instance, with Text labels incrementing in value, i.e. 1, 2, 3 etc. Is this possible? I know by nature it is not possible by using the Array modifier, but is there some workaround?

The sort of result I am going for is like this:



What I was thinking is making a script to duplicate like with Alt+D and shove a count value into the Text element of the duplicated group. 

Some things I am looking for/implementation suggestions:


Editable offset
Duplicates editable text element
Use a count variable to set the value of the text element
Make it expandable
Start from 1, go to at least 32 (non-limited is best)
Honesty as to the difficulty to create this feature
Here you go!

Keywords: Number Array Watch Dial



import bpy

from bpy.props import IntProperty,FloatProperty

class NumberArray(bpy.types.Operator):
    """Add a simple box mesh"""
    bl_idname = "mesh.primitive_number_array"
    bl_label = "Add Number Array"
    bl_options = {'REGISTER', 'UNDO'}

    start = IntProperty(name="Start",description="Start value",min=0, max=100,default=1 )
    count = IntProperty(name="Count",description="Number of items to create",min=1, max=100, default=1  )
    offset = FloatProperty(name="Offset",description="Distance",min=0.01, max=100.0, default=1.0 )

    def execute(self, context):
        x = 0.0
        pos = self.start
        end = self.count + self.start
        print(context)
        while pos &lt; end:
            bpy.ops.object.text_add(view_align=False, enter_editmode=False, location=(x, 0, 0), layers=(True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False))
            ob=bpy.context.object
            ob.data.body = str(pos)
            x = x + self.offset
            pos = pos +1
        return {'FINISHED'}

def menu_func(self, context):
    self.layout.operator(NumberArray.bl_idname, icon='MESH_CUBE')

def register():
    bpy.utils.register_class(NumberArray)
    bpy.types.INFO_MT_mesh_add.append(menu_func)

def unregister():
    bpy.utils.unregister_class(NumberArray)
    bpy.types.INFO_MT_mesh_add.remove(menu_func)

if __name__ == "__main__":
    register()


Updated (works with 2.74):


https://github.com/3dbug/blender



Run the script in Object Mode by Add / Curve / Create Dials and Scales.