Ok, mientras llega mi bocata te escribí una función que debería hacerlo, no está muy testeada aún pero pareciera funcionar

Espero que te sirva

xsi = Application
def ChainFromCurve(in_curve):
points = in_curve.ActivePrimitive.Geometry.Points
root = xsi.ActiveSceneRoot.Add2DChain(points[0].Position, points[1].Position)
root.Name = "%s_root" % (in_curve.Name)
root.Effector.Name = "%s_eff" % (in_curve.Name)
for i in range( 2, len(points) ):
root.AddBone(points[i].Position)
for i in range(len(root.Bones)):
if i<10: zero = "00"
elif i<100: zero = "0"
else: zero = ""
root.Bones[i].Name = "%s_%s%i_bone" % (in_curve.Name, zero, i)
return root
ChainFromCurve(xsi.Selection[0])