I suppose this is a starting point...
(defun c:bound (/ cEnt cObj i j)
(if (and (setq cEnt (car (entsel "\nSelect Curve: ")))
(member (cdr (assoc 0 (entget cEnt)))
'("POLYLINE" "LWPOLYLINE" "REGION")))
(progn
(setq cObj (vlax-ename->vla-object cEnt)
i (vlax-curve-getStartParam cObj) j 1)
(while (<= i (- (vlax-curve-getEndParam cObj)
(if (vlax-curve-isClosed cObj) 1 0)))
(Make_Text (vlax-curve-getPointatParam cObj i) (itoa j) 0.0)
(setq i (1+ i) j (1+ j))))
(princ "\n<!> Incompatible Curve Selected <!>"))
(princ))
(defun Make_Text (pt val rot)
(entmake (list '(0 . "TEXT")
'(8 . "0")
(cons 10 pt)
(cons 40 (getvar "TEXTSIZE"))
(cons 1 val)
(cons 50 rot)
(cons 7 (getvar "TEXTSTYLE"))
'(71 . 0)
'(72 . 1)
'(73 . 2)
(cons 11 pt))))