I have this, where you give the first number you want to start with, then select each block and they will be numbered in order.
Code:
(defun c:ano (/ TX TXVAL TXENT a# last#)
(setvar "cmdecho" 0)
(if (= last# nil)(setq last# "nil")(princ))
(setq a# (strcat (getstring (strcat "\nFirst No. <" last# ">:"))))
(if (= a# "")(setq a# last#))
(while
(setq TX (car (nentsel "\nPick Text : ")))
(setq TXENT (entget TX))
(if (or (= (cdr (assoc 0 TXENT)) "TEXT")(= (cdr (assoc 0 TXENT)) "ATTRIB"))
(progn
(setq TXENT (entget TX))
(setq TXVAL a#)
(do-it)
(setq a# (rtos (+ (distof a#) 1) 2 0))
(setq last# a#)
)
(progn
(alert "No Text or Attributes Selected!")
(c:ano)
)
)
)
(princ)
)
(defun do-it ()
(setq TXENT (subst (cons 1 TXVAL) (assoc 1 TXENT)
TXENT
)
)
(entmod TXENT)
(entupd TX)
(princ)
)
(princ)