Quickly,
(defun c:BI (/ *error* _toLayer style layer cmd sty attd pt lst)
;; Bubble Increment (MLeader style required)
;; Alan J. Thompson, 12.04.11
(setq style "BUBBLE" ; MLeader style (with single attribute block)
layer nil ; layer to place MLeader objects on (optional, nil for current layer)
)
(vl-load-com)
(defun *error* (msg)
(and cmd (setvar 'CMDECHO cmd))
(and sty (setvar 'CMLEADERSTYLE sty))
(and attd (setvar 'ATTDIA attd))
(and *AcadDoc* (vla-endundomark *AcadDoc*))
(if (and msg (not (wcmatch (strcase msg) "*BREAK*,*CANCEL*,*QUIT*,")))
(princ (strcat "\nError: " msg))
)
)
(setq _toLayer
(eval
(list
'lambda
'(e / d)
(if (and layer (snvalid layer))
'(entupd
(cdr (assoc -1 (entmod (subst (cons 8 layer) (assoc 8 (setq d (entget e))) d))))
)
)
)
)
)
(vla-startundomark
(cond (*AcadDoc*)
((setq *AcadDoc* (vla-get-activedocument (vlax-get-acad-object))))
)
)
(setq cmd (getvar 'CMDECHO)
sty (getvar 'CMLEADERSTYLE)
attd (getvar 'ATTDIA)
)
(setvar 'CMDECHO 0)
(setvar 'ATTDIA 0)
(cond ((not (vl-catch-all-error-p (vl-catch-all-apply 'setvar (list 'CMLEADERSTYLE style))))
(initget 6)
(setq *BI:Inc* (cond ((getint (strcat "\nSpecify starting number <"
(itoa (cond (*BI:Inc*)
((setq *BI:Inc* 1))
)
)
">: "
)
)
)
(*BI:Inc*)
)
)
(while (if lst
(progn (initget "Undo") (setq pt (getpoint "\nSpecify starting point [Undo]: ")))
(setq pt (getpoint "\nSpecify starting point: "))
)
(if (eq pt "Undo")
(progn (entdel (car lst)) (setq *BI:Inc* (1- *BI:Inc*)) (setq lst (cdr lst)))
(progn
(princ "\nSpecify other point: ")
(vl-cmdf "_.mleader" "_non" pt PAUSE)
(if (eq (logand 1 (getvar 'CMDACTIVE)) 1)
(progn (vl-cmdf *BI:Inc*)
(setq *BI:Inc* (1+ *BI:Inc*)
lst (cons (entlast) lst)
)
(_toLayer (car lst))
)
)
)
)
)
)
((alert (strcat style " multileader style not loaded!")))
)
(*error* nil)
(princ)
)