Here is my solution. All you have to do is feed it a center point, radius, and amount of segments to be used. It will exclude items on locked layers and objects that cannot be trimmed.
(defun rjp-trimcircle (cen rad segs / cut el lst trim trim2 x cnt)
(setq cnt 0)
(repeat segs
(setq lst (cons (polar cen (+ 0 (* cnt (/ (* pi 2) segs))) rad)
lst
)
cnt (1+ cnt)
)
)
(setq lst (append lst (list (nth 0 lst))))
(if (setq trim (ssget "_f" lst))
(progn
(setq trim (vl-remove-if 'listp (mapcar 'cadr (ssnamex trim))))
(mapcar
'(lambda (x)
(setq el (entget x))
(if
(and (wcmatch (cdr (assoc 0 el))
"ARC,CIRCLE,LINE,*POLYLINE,SPLINE"
)
(/= 4
(cdr
(assoc
70
(entget
(tblobjname "layer" (cdr (assoc 8 el)))
)
)
)
)
)
(setq trim2 (cons x trim2))
)
)
trim
)
(if trim2
(progn
(setq cut (entmakex (list (cons 0 "CIRCLE")
(cons 10 cen)
(cons 40 rad)
)
)
)
(mapcar
'(lambda (x)
(command "._trim" cut "" "f")
(apply 'command lst)
(command "" "")
)
trim2
)
(entdel cut)
)
)
)
)
(princ)
)
(rjp-trimcircle (getpoint) (getdist) 12)