@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)
)
)