jms, cambo, and possibly others have done work which has made the following script possible in CVS version of blender. cambo had made this code from that work ->

```
# Converts particles into a mesh with edges for strands
from Blender import Scene, Mathutils, Effect, Mesh, Object
scn= Scene.GetCurrent()
ob= scn.getActiveObject()
me= Mesh.New()
effects= Effect.Get()
for eff in effects:
for p in eff.getParticlesLoc():
# p is either a vector or a list of vectors. me.verts.extend() will deal with either
print p
me.verts.extend(p)
if type(p)==list: # Are we a strand or a pair, then add edges.
if len(p)>1:
edges= [(i, i+1) for i in range(len(me.verts)-len(p), len(me.verts)-1)]
me.edges.extend( edges )
print len(me.verts)
ob= Object.New('Mesh')
ob.link(me)
scn.link(ob)
```

I have done a quick blend where I went one step further by converting the resulting mesh to a bunch of curves with “Edge to Curve”, and then applied a BevelObject and a Taper to those curves.

Grab the blend here. Again, you need a current build to use the script but you can play with the resulting mesh in 2.42.

Thanks again jms and cambo!