I edited your script to make it work for all points on the division. I hope the comments are clear else ask for it.
import rhinoscriptsyntax as rs
crv1 = rs.GetObject("Select a curve")
if rs.IsCurve(crv1):
length = 2.18
#points = rs.DivideCurveLength(crv1, length)
#for point in points: rs.AddPoint(point)
# get parameters on the curve to later use to get the frame on the curve
parameters = rs.DivideCurveLength(crv1, length,return_points=False)
obj = rs.GetObject("Select object to copy")
#set plane to copy from
startplane = rs.WorldYZPlane() #plane perpendicular or link orientation on curve
bbox = rs.BoundingBox(obj)
bbox_center = rs.PointDivide(rs.PointAdd(bbox[0],bbox[6]),2)# get boundingbox center
#
startplane.Origin = bbox_center #set startplane origin to center
#Links will be placed on the center of the division points
N = -1 # counter to check if we are at even link (even links are rotated)
#matrix to rotate around length axis 90deg
Xrotate = rs.XformRotation2(90,startplane.ZAxis,startplane.Origin)
#for each parameter (point on curve) transform the link to the point on the curve
for parameter in parameters:
N+=1 #add 1 to object counter
new_link = rs.CopyObject(obj)#copy original
if (N % 2 == 0): #even number so we first rotate
rs.TransformObject(new_link,Xrotate,copy=False)
# get plane perpendicular on curve at parameter
curve_frame = rs.CurvePerpFrame(crv1,parameter)
Xoncurve = rs.XformRotation1(startplane,curve_frame)
rs.TransformObject(new_link,Xoncurve,copy=False)