I wanted something that did something similar, but with text strings instead of attributed blocks. I couldn't find one offhand, but it seemed pretty simple, so I went ahead and wrote one...
You can enter text strings to use as a prefix and/or suffix to the number, and change the step size...
; autonum.lsp v1.00
; Autonumbering utility
; Richard Sincovec Oct. 20, 2005
(defun C:autonum (/ inp)
(if (null *AUTONUM:num*)
(setq *AUTONUM:num* 1)
) ;_ if
(if (null *AUTONUM:step*)
(setq *AUTONUM:step* 1)
) ;_ if
(if (null *AUTONUM:prefix*)
(setq *AUTONUM:prefix* "")
) ;_ if
(if (null *AUTONUM:suffix*)
(setq *AUTONUM:suffix* "")
) ;_ if
(while (progn
(initget "Number sTep Prefix Suffix Reset Clear")
(setq
inp
(getpoint
(strcat
"\nNext: "
*AUTONUM:prefix*
(rtos *AUTONUM:num* 2 0)
*AUTONUM:suffix*
" Step: "
(rtos *AUTONUM:step* 2 0)
"\nSelect point, <N>umber, s<T>ep, <P>refix, <S>uffix, <R>eset count, or <C>lear settings: "
) ;_ strcat
) ;_ getpoint
) ;_ setq
) ;_ progn
(cond
((= (type inp) 'STR)
(cond
((= inp "Number")
(progn
(initget 2)
(setq *AUTONUM:num*
(cond
((getint
(strcat "\nNew number <"
(rtos *AUTONUM:num* 2 0)
">: "
) ;_ strcat
) ;_ getint
)
(*AUTONUM:num*)
) ;_ cond
) ;_ setq
) ;_ progn
)
((= inp "sTep")
(progn
(initget 2)
(setq *AUTONUM:step*
(cond
((getint
(strcat "\nNew step <"
(rtos *AUTONUM:step* 2 0)
">: "
) ;_ strcat
) ;_ getint
)
(*AUTONUM:step*)
) ;_ cond
) ;_ setq
) ;_ progn
)
((= inp "Prefix")
(setq *AUTONUM:prefix*
(getstring 1 "\nEnter new prefix: ")
) ;_ setq
)
((= inp "Suffix")
(setq *AUTONUM:suffix*
(getstring 1 "\nEnter new suffix: ")
) ;_ setq
)
((= inp "Reset")
(setq *AUTONUM:num* *AUTONUM:step*)
)
((= inp "Clear")
(setq *AUTONUM:num* 1)
(setq *AUTONUM:step* 1)
(setq *AUTONUM:prefix* "")
(setq *AUTONUM:suffix* "")
)
) ;_ cond
)
((= (type inp) 'LIST)
(progn
(command "text"
"j"
"mc"
inp
""
(strcat *AUTONUM:prefix*
(rtos *AUTONUM:num* 2 0)
*AUTONUM:suffix*
) ;_ strcat
) ;_ command
(setq *AUTONUM:num* (+ *AUTONUM:num* *AUTONUM:step*))
) ;_ progn
)
) ;_ cond
) ;_ while
(princ)
) ;_ defun