First of all, I have no desire to make a 'perfect' tool. Just offer some tool that could help and would be good just enough to serve its purpose.
I did my homework, and I did check your sample beforehand and -- found a couple of rounded-looking segments - but those all were linearized. So I assumed that there was no need to consider bulges. So, the routine thus completely ignores them - it considers them as straight.
However, Express Tools offers a function that you can play with - it linearizes arcs based on the specified precision. Higher precision, slower performance. See below.
Another simple solution would be checking the polylines for bulges and if there are any, simply mark them in a different color.
I think I got one polyline that had the textmc point right at the center in that case it did not highlight it red but again this happens very few times.
If you want an explanation or fix, you need to post the dwg.
;; REQUIRES EXPRESS TOOLS
(vl-load-com)
(defun c:MCOutside ( / *error* LM:UniqueFuzz s a z i s w e m)
(defun *error* (errmsg)
(if (not (wcmatch errmsg "Function cancelled,quit / exit abort,console break,end"))
(princ (strcat "\nError: " errmsg)))
(if z (command-s "_zoom" "_p"))
(setvar 'cmdecho 1)
(if a (mapcar 'entdel a))
(princ))
;; Lee Mac - http://www.lee-mac.com/uniqueduplicate.html#uniquefuzz
(defun LM:UniqueFuzz ( l f ) (if l (cons (car l) (LM:UniqueFuzz (vl-remove-if (function (lambda ( x ) (equal x (car l) f))) (cdr l)) f))))
(if (and (setq s (ssget "_X" '((0 . "LWPOLYLINE") (8 . "SPACE") (410 . "Model"))))
(setq a (ssget "_X" '((0 . "TEXT") (8 . "SPACENAME") (410 . "Model"))))
(setq a (vl-remove-if '(lambda (x) (/= 1 (cdr (assoc 72 (entget x))))) (vl-remove-if 'listp (mapcar 'cadr (ssnamex a)))))
(setq a (mapcar '(lambda (x) (entmakex (list '(0 . "POINT") (cons 10 (cdr (assoc 11 (entget x))))))) a))
(setvar 'cmdecho 0)
(setq z (vl-cmdf "_.zoom" "_e"))
(setq m 0)
)
(repeat (setq i (sslength s))
(setq e (ssname s (setq i (1- i))))
(if (or (not (setq w (ssget "_CP" (LM:UniqueFuzz (acet-geom-object-point-list e 1e-4) 1e-6) '((0 . "POINT") (8 . "0")))))
(/= 1 (sslength w)))
(progn
(setpropertyvalue e "Color" 1)
(setq m (1+ m))))))
(if m (princ (strcat (itoa m) " polylines marked.")))
(*error* "end")
)