Here’s a one-liner:
lengths = list((s.points[0].co - s.points[-1].co).length for s in bpy.data.grease_pencils["Annotations"].layers['RulerData3D'].frames[0].strokes)
Or maybe:
def get_lengths():
lengths = []
ruler_data = bpy.data.grease_pencils["Annotations"].layers['RulerData3D']
frame = ruler_data.frames[0]
for stroke in frame.strokes:
p1, p2 = stroke.points[0], stroke.points[-1]
length = (p1.co - p2.co).length
lengths.append(length)
return lengths