vla-get-length is limited, but you can use the vlax-curve* to get the length of any curve.
Here's a version that will allow you to take it from anything and you don't have to convert it to a vla-object.
Code:
(defun _length (ent)
((lambda (e)
(if (not (vl-catch-all-error-p e))
(vlax-curve-getDistAtParam ent e)
)
)
(vl-catch-all-apply (function vlax-curve-getEndParam) (list ent))
)
)
The error checking isn't required, it's just an example. I would never try an extract a property from something if it wasn't available (like trying to get the length of a block).
This is really all you need and it works on enames and vla-objects.
Code:
(vlax-curve-getDistAtParam ent (vlax-curve-getEndParam ent))