from win32com.client import constants as c

def main(oCrv):
	oCrvPrimitive = oCrv.ActivePrimitive
	oCrvPrimitive.Geometry.AddICEAttribute("EvenSpacedPoints", c.siICENodeDataVector3,c.siICENodeStructureArray, c.siICENodeContextSingleton )

	oAD = Application.AddProp("AttributeDisplay", oCrv, "", "", "")
	oAD = Application.Dictionary.GetObject(oAD[1])
	oAD.Parameters("attrname").Value = 'EvenSpacedPoints'
	oAD.displaymodecombo = "Points"
		
	oScop = XSIFactory.CreateScriptedOp("jj_evenCurve", "", "Python")
	oScop.AddOutputPort(oCrvPrimitive)
	oScop.AddInputPort(oCrvPrimitive)
	
	oPDef = XSIFactory.CreateParamDef2( "Resolution", 2, 40)
	oScop.AddParameter(oPDef)
	
	oScop.AlwaysEvaluate = 1
	oScop.Code = codeStr
	oScop.Connect(None, 1)
	Application.InspectObj(oScop)
	return

codeStr = """
def jj_evenCurve_Update(ctx, Out, oCrv):
	l = []
	oCrv = oCrv.Value.Geometry.Curves(0)
	res = ctx.Operator.Parameters("Resolution").Value
	if res > 1:
		for x in range(res + 1):
			u = oCrv.GetUFromPercentage((x/float(res))*100)
			l.append(oCrv.EvaluatePosition(u)[0])
		Out.Value.Geometry.ICEAttributes('EvenSpacedPoints').DataArray2D = [l]
"""		

oCrv = Application.Selection(0)
if oCrv and oCrv.Type == 'crvlist': 
	main(oCrv)