I've got a ring of vertices. How can I add an edge from a newly added centre vertex, to every other vertex in the mesh (and then add faces between all of the new edges)?
It is not easy to extrude a single vertex multiple times to fit several others manually as you described it in your question, even using automated methods… gandalf3's method is the best way to do it if you want it that way. However, based on your comment above, I think these ways might be better… depending on how your mesh is set up.
Deleting the center vertex, A select all, E extrude,
then Alt+M > Merge at center.
Extruding then scaling to zero would also work. (either with Auto-Merge Editing enabled or Remove Doubles afterwards)
Using the Fill tool.
Select all and press Alt+F
Note that this is with the Beauty option off
With Beauty on:
since you have dispensed with the limitation that there should be a central vertex connecting them all (this would be bad for more extreme concave polygon shapes anyway). Because you are writing a script anyway, example code (bmesh.ops.edgenet_fill) ?
import bpy, bmesh # Get the active mesh obj = bpy.context.edit_object me = obj.data # Get a BMesh representation bm = bmesh.from_edit_mesh(me) edges = [edge for edge in bm.edges if edge.select] bmesh.ops.edgenet_fill(bm, edges=edges) # recalculate n-gon tessellation and update viewport. bmesh.update_edit_mesh(me, True)