Hello ConnemaraPony,
here is a procedure that gives you the desired three length measures.

Open a new macro window from âPlugins > New > Macroâ and
enter the macro text that follows at the end of this message

Select the âPointâselection tool

Click on an arbitrary point of the top line

Type Cmdt (Mac) or Ctrlt (PC)

Click on another point of the top line (far away from the first point)

Type Cmdt (Mac) or Ctrlt (PC)

Click on the point at the downward end of the yellow line

Type Cmdt (Mac) or Ctrlt (PC)

Click on the point at the downward end of the blue line

Type Cmdt (Mac) or Ctrlt (PC)

Click on the point at the downward end of the green line

Type Cmdt (Mac) or Ctrlt (PC)

Bring the âMacro.txtâwindow to the front and type Cmdr (Mac) or Ctrlr (PC)
// Begin length macro
requires("1.51i");
run( "Set Measurements...", " redirect=None decimal=3" );
roiManager ( "multimeasure measure_all" );
wait(100);
selectWindow( "ROI Manager" );
run( "Close" );
param = newArray( 2 );
x = newArray( 5 );
y = newArray( 5 );
for ( i = 0; i<5; i++ ) {
x[i] = getResult( "X", i );
y[i] = getResult( "Y", i );
}
selectWindow( "Results" );
run( "Close" );
//straight line
points2line( x[0], y[0], x[1], y[1], param );
a = param[0]; b = param[1];
//length 1..3
print( "length1 = " + d2s( length( x[2], y[2], param ), 1) );
print( "length2 = " + d2s( length( x[3], y[3], param ), 1) );
print( "length3 = " + d2s( length( x[4], y[4], param ), 1) );
exit();
//
function points2line( x_0, y_0, x_1, y_1, prm ) {
prm[1] = ( y_0  y_1 ) / ( x_0  x_1 );
prm[0] = y_0  prm[1] * x_0;
}
function length( x_0, y_0, prm ) {
//intersection
x_1 = x_0 + prm[1] * ( y_0  prm[0] ) / ( prm[1] * prm[1] + 1 );
y_1 = prm[1] * x_1 + prm[0];
//length
return sqrt( pow( x_0  x_1, 2 ) + pow( y_0  y_1, 2 ) );
}
// End
HTH
George