@Steven P Since not all curve objects have an ActiveX length property (namely, arcs, circles, etc.); it may be better to obtain the midpoint using a function such as the following, which will work with any curve object of finite length:
 
(defun curvemidpoint ( ent )
    (vlax-curve-getpointatdist ent
        (/ (vlax-curve-getdistatparam ent (vlax-curve-getendparam ent)) 2.0)
    )
)