(defun c:pp()
(setq p (car (entsel "Polyline?")))
(setq ssC (ssget "X" (list (cons 0 "Circle"))))
(setq dist (getdist " distance?"))
(setq pl(entget p)
pl (member (assoc 10 pl) pl)
points nil)
(while pl
(setq points (cons (cdar pl) points) pl (cdr pl) pl (member (assoc 10 pl) pl))
)
(setq i 0)
(repeat (1- (length points))
(setq A (nth i points) B (nth (setq i (1+ i)) points))
(repeat (setq j (sslength ssC))
(setq C (cdr (assoc 10 (entget (setq M (ssname ssC (setq j (1- j))))))))
(if (= (distan A B) (+ (distan A C) (distan C B))) (move M A C dist))
)
)
)
(defun distan (a b / c d)
(setq c (- (car a) (car b)) d (- (cadr a) (cadr b)))
(sqrt (+ (* c c) (* d d)))
)
(defun move (e a b dist)
(setq p (polar (cdr (assoc 10 (entget e))) (+ (/ PI 2.0) (angle a b)) dist))
(setq el (entget M)
el (subst (cons 10 p) (assoc 10 el) el)
el (entmod el))
)
Wrote it in a hurry... it can be improved, but first give me a feed-back to be sure it's what you need.
Yes, it's very possible.
One query, do the polylines have any bulges on them? Or any curves? If not, then I might just do ssget F on each vertex to select the circles.
Many ways to do this, Tharwat wrote one with leaders from text placement to the point: https://www.cadtutor.net/forum/topic/68126-require-lisp-3-in-1-for-xyz-coordinates-with-leader/?tab=comments#comment-552696
another: https://www.cadtutor.net/forum/topic/62823-xy-coordinates-for-a-selected-object/?tab=comments#comment-518368