Helping Neuroscience with the Measure Tool

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
4 Likes