Here's a sample for you. This function requires a line to be passed to as an argument and will perform a polar array, creating lines at 30 degree increments for a full circle. Then it labels each line with the degrees. Modify and adpt to your specific use as desried. The routine assumes that the object passed is either a Ename or Vla-object, that it is a line, and that *doc* has been previously set as a global variable of:
(vla-get-activedocument (vlax-get-acad-object))
(defun polar_label (lin)
(if (or (eq (type lin) 'VLA-OBJECT)
(and (eq (type lin) 'ENAME)
(setq lin (vlax-ename->vla-object lin))
)
)
(progn
(setq polar_lines (append (vlax-invoke lin "arraypolar" 12 (* 2 pi) (vlax-get lin "startpoint")) (list lin))
hgt (if (= 0.0 (vla-get-height (vla-get-activetextstyle *doc*)))
(vlax-invoke *doc* "getvariable" "textsize")
(vla-get-height (vla-get-activetextstyle *doc*))
)
)
(mapcar '(lambda (x / txt)
(setq rot (vlax-get x "angle")
insPt (vlax-get x "endpoint"))
(setq txt (vlax-invoke (vla-get-modelspace *doc*) "addtext" (angtos rot 1 4) insPt hgt))
(vlax-put txt "rotation" rot)
(vlax-put txt "alignment" acAlignmentMiddleLeft)
(vlax-put txt "textalignmentpoint" inspt)
)
polar_lines)
)
)
)