p0 = gC (l=1, d=2, h=3)
p1 = gC (5, 3, 30)
p2 = rs.VectorAdd(p1, rs.VectorScale( dVec, 55.5 ))
p3 = gC (10, 0, 39)
p4 = rs.VectorAdd(p0, rs.VectorScale( dVec, -88.5 ))

coords = [p0, p1, p2, p3, p4, p0]

#rs.AddCurve( coords, 1)
crv = rs.AddCurve( coords, 2)
coords = rs.DivideCurve( crv, 8, 1)

allCoordsLists = []
for cor in coords:
    paraX = rs.CurveClosestPoint(crv, cor) ### CurveClosestPoint(curve_id, test_point, segment_index=-1) 
    planeX = rs.CurvePerpFrame( crv, paraX )  ### 
    rs.ObjectColor( rs.AddPlaneSurface( planeX, 10,10), [110,200,110])
    circ = rs.AddCircle( planeX, 5.0)
    rs.ObjectColor( rs.AddRectangle( planeX, 10, 10), [0,0,200])
    allCoordsLists.append( rs.DivideCurve( circ, 32, 1))
    rs.AddLine( cor, rs.VectorAdd( cor, rs.VectorScale( rs.VectorUnitize(planeX[0]), 20)) )
    rs.AddLine( cor, rs.VectorAdd( cor, rs.VectorScale( rs.VectorUnitize(planeX[1]), 20)) )
    rs.AddLine( cor, rs.VectorAdd( cor, rs.VectorScale( rs.VectorUnitize(planeX[2]), 20)) )
i = 0
for i in range( 32 ):
    coords = []
    for coordList in allCoordsLists:
        coords.append( coordList[i] )
    rs.ObjectColor(rs.AddCurve( coords, 3 ), [100,100,190] )
    rs.ObjectColor(rs.AddInterpCurve( coords, degree=3, knotstyle=3), [190,100,190] )