You could look into the GRREAD and GRVECS functions.
For example, to get you started, to draw a simple circle using a combination of GRREAD and GRVECS, look at the example below:
(defun c:test (/ gr lst i)
(while (not (eq 3 (car (setq gr (grread t 7 0)))))
(redraw)
(setq lst nil i 0)
(repeat 300
(setq lst
(cons
(polar (cadr gr)
(* i (/ pi 150))
(/ (getvar "VIEWSIZE") 20))
lst))
(setq i (1+ i)))
(grvecs (append '(3) (reverse lst))))
(princ))
In Pseudo code:
WHILE the user doesn't click a point
Set the variables to nil
Construct a list of points forming a "circle" (constructed from 300 segments)
Append the list with the colour (3 in this case), and display it with GRVECS.