For completeness I can report that I have managed to fix this problem myself, albeit in a rather "brute force" way - so if there's a simpler solution I'd be very interested.
Rather than try to measure the property of the servo itself, I obtained the position of the objects it was ultimately linked to using script such as the following for each object -
@@pos_mainarm_cylinder = this.get_position(1)
@@pos_mainarm_ram = this.get_position(1)
Then by computing the distance between the two objects I was able to limit the movement of the servo so as to remain within the correct range.
dist = distance(@@pos_mainarm_cylinder, @@pos_mainarm_ram)
joy = joystick(:lefty)
if ( dist > 1.000 && joy < 0 ) || ( dist < 0.380 && joy >0 ) || (dist < 1.000 && dist > 0.380)
@_mainarm = @_mainarm - joy
end
The limits of 1.00 and 0.38 were from the known dimensions of the objects. The local variable @_mainarm was then used to control the servo. The distance function uses Pythagoras's theory to calculate the distance between the middle of each object.
As I say - any simpler ideas? Nonetheless it now works as intended irrespective of the starting position of the servos.