Simple solution that makes use of vlax-curve-getpointatparam. Points in WCS.
; (ListPolyPoints (vlax-ename->vla-object (car (entsel))))
(defun ListPolyPoints (obj / endParam param ret)
(setq param 0)
(setq endParam (vlax-curve-getendparam obj))
(repeat (+ (fix endParam) (if (= :vlax-true (vla-get-closed obj)) 0 1))
(setq ret (cons (vlax-curve-getpointatparam obj param) ret))
(if (and (< param endParam) (/= 0 (vla-getbulge obj param)))
(setq ret (cons (vlax-curve-getpointatparam obj (+ 0.5 param)) ret))
)
(setq param (1+ param))
)
(reverse ret)
)