第二部分:
- ;; TextOverlap.lsp CAB 12.27.07
- ;; Circle Text overlap in current space
- ;; Returns the list of circles created to flag the overlaps
- (defun c:TOL() (c:TextOverlap))
- (defun c:TextOverlap (/ ss *doc* lay olst obj1 obj2 intlst olf)
- (vl-load-com)
- ;;==============================================================
- ;; return a list of intersect points
- ;;==============================================================
- (defun get_interpts (obj1 obj2 / iplist)
- (if (not (vl-catch-all-error-p
- (setq iplist (vl-catch-all-apply
- 'vlax-safearray->list
- (list
- (vlax-variant-value
- (vla-intersectwith obj1 obj2 acextendnone)
- ))))))
- iplist
- )
- )
- (defun makecircle (pts)
- (entmakex (list (cons 0 "CIRCLE")
- (cons 8 "OVERLAP")
- (cons 10 (list (car pts) (cadr pts)))
- (cons 40 10.0) ; radius
- ))
- )
-
- (and (setq *doc* (vla-get-activedocument (vlax-get-acad-object)))
- (setq lay (vla-add (vla-get-layers *doc*) "OVERLAP"))
- (or (vla-put-color lay acred) t)
- (setq ss (ssget "_x"
- (list (cons 0 "TEXT,MTEXT") (cons 410 (getvar "ctab")))))
- (setq olst (mapcar 'vlax-ename->vla-object (mapcar 'cadr (ssnamex ss))))
- (princ (strcat "\n" (itoa(length olst)) " items to process, Please wait....\n"))
- (while (setq obj1 (car olst) olst (cdr olst))
- (foreach obj2 olst
- (if (setq pts (get_interpts obj1 obj2))
- (setq intlst (cons (cons obj1 obj2) intlst)
- olf (cons (makecircle pts) olf))
- )
- )
- )
- )
- olf
- )
|