The First scripts adds empties to vertices and is quick.
The second script add bones and constraints to the empties,
why on large mesh does the second script bring blender to its knees?
import bpy
import bmesh
context = bpy.context
scene = context.scene
obj = context.edit_object
mesh = obj.data
bm = bmesh.from_edit_mesh(mesh)
empties = []
# selected verts
for v in [v for v in bm.verts if v.select]:
empty = bpy.data.objects.new("Empty", None)
empty.parent = obj
empty.parent_type = 'VERTEX'
empty.parent_vertices = [v.index] * 3
scene.objects.link(empty)
empty.matrix_parent_inverse.identity()
empties.append((v.index, empty))
THE SECOND SCRIPT
import bpy
context = bpy.context
scene = context.scene
Empty = [o for o in scene.objects if o.type == 'EMPTY']
for l in Empty:
# add bone
bpy.ops.object.armature_add(location=l.location)
bpy.ops.object.posemode_toggle()
bpy.ops.pose.constraint_add(type='COPY_LOCATION')
bpy.context.object.pose.bones["Bone"].constraints["Copy Location"].target = l
bpy.ops.object.posemode_toggle()
