I don't know why you have so many vertices when the shapes are apparently arcs, but
Either way it seems to me that if the midpoint (i.e. middle distance) is higher (Y axis) than the ends, then it is convex, and vice versa for concave. Now if your UCS isn't World you'll have to do comparisons using the trans function. Then again, if you DView;Twist it gets more confusing, but at least you could temporarily set your UCS to View.
Getting the midpoint of a polyline would go something this (off the top of my head)
(defun @midpoly (e)
(vlax-curve-getpointatdist e
(* 0.5
(+
(vlax-curve-getdistatpoint e (vlax-curve-getstartpoint e))
(vlax-curve-getdistatpoint e (vlax-curve-getendpoint e))
)
)
)
)
Hmm, it can get more technical. You really have to compare the Y value of the actual midpoint (using @midpoly) to the midpoint between the startpoint and endpoint...
(defun @midp (p1 p2)
(mapcar '* '(0.5 0.5 0.5)(mapcar '+ p1 p2))
)