Nice. It only placed them visually tough, not on the exact endpoints.
I changed it a little, seems to work now.
(defun c:foo (/ ss selPt obj pt1 pt2)
(while (not ss)
(setq ss (ssget "_+.:E:S" '((0 . "LINE"))))
)
(setq selPt (trans (cadr (nth 3 (car (ssnamex ss 0)))) 0 2)) ; get point of selection
(setq obj (vlax-ename->vla-object (ssname ss 0)))
(setq pt1 (vlax-curve-getStartPoint obj))
(setq pt2 (vlax-curve-getEndPoint obj))
;; Determine closer endpoint
(if (< (distance selPt (reverse (cdr (reverse (trans pt2 0 2)))))
(distance selPt (reverse (cdr (reverse (trans pt1 0 2)))))
)
(setq pt1 pt2)
)
(vla-put-color (vla-addcircle (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))) (vlax-3d-point pt1) 10) acRed) ;circle for testing
)