(defun groupCircle (obj lst / rad ) (setq rad (vla-get-radius obj) rad (cond ((> rad 10000) 10000)((> rad 5000) 5000)((> rad 1000) 1000) ((> rad 500) 500)((> rad 475) 475)((> rad 450) 450)((> rad 425) 425) ((> rad 400) 400)((> rad 375) 375)((> rad 350) 350)((> rad 325) 325) ((> rad 300) 300)((> rad 275) 275)((> rad 250) 250)((> rad 225) 225) ((> rad 200) 200)((> rad 175) 175)((> rad 150) 150)((> rad 125) 125) ((> rad 100) 100)((> rad 75) 75)((> rad 50) 50)((> rad 25) 25)(T 1))) (if (assoc rad lst) (subst (cons rad (append (cdr (assoc rad lst))(list obj)))(assoc rad lst) lst) (append lst (list (list rad obj))) ) ) (defun makeBlockCircle (blockname rad / ip blkobj sArray) (setq BlkCol (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) pto (vlax-3D-point '(0.0 0.0 0.0)) BlkBal (vla-add BlkCol pto blockname) blkobj (vla-addCircle BlkBal pto rad) ) ) (defun c:RepCir2Blk ( / i ss obj CiLst blkNm) (vl-load-com) (if (setq CiLst nil i 0 ss (ssget '((0 . "circle")))) (progn (setq *doc* (vla-get-activedocument (vlax-get-acad-object))) (while (< i (sslength ss)) (setq obj (vlax-ename->vla-object (ssname ss i)) CiLst (groupCircle obj CiLst) i (1+ i)) ) (foreach cir CiLst (setq blkNm (strcat "Circle" (itoa (car cir)))) (if (not (tblsearch "block" blkNm))(makeBlockCircle blkNm (car cir))) (foreach cirobj (cdr cir) (if (vla-insertblock (vla-get-ModelSpace *Doc*) (vla-get-center cirobj) blkNm 1 1 1 0) (vla-delete cirobj) ) ) ) ) ) (princ) )