Bom dia,

Gostaria de armazenar o nome do bloco inserido numa pilha ou estrutura semelhante para uma posterior manipulação desses dados, tentei modificar uma rotina encontrada que numera os blocos inseridos. Gostaria que essa rotina ficasse rodando automaticamente. A rotina ficou assim:

;;-----------------=={ AutoLabel Attributes }==------------------;;
;; ;;
;; Automatically labels a specific attribute in a set of ;;
;; blocks, renumbering if blocks are added, copied or ;;
;; erased. ;;
;;---------------------------------------------------------------;;
;; Author: Lee Mac, Copyright © 2011 - www.lee-mac.com ;;
;;---------------------------------------------------------------;;
;; Version 1.0 - 14-09-2011 ;;
;;---------------------------------------------------------------;;

;;---------------------------------------------------------------;;
;; Settings ;;
;;---------------------------------------------------------------;;

;;[Note: Block names and Attribute Tags *aren't* case-sensitive] ;;

(setq *blockname* "BALÃO_AF" ;; Name of Block to be Updated
lismattig '"" ;;Pilha de armazenagem de material
)



;;---------------------------------------------------------------;;
;; Main Program ;;
;;---------------------------------------------------------------;;

(defun ObjectReactorCallback:Stack::Push ( object reactor params )
(setq *reactor* reactor)
(vlr-command-reactor "temp" '((:vlr-commandended . CommandReactorCallback:Stack::Push)))
(vlr-remove reactor)
(princ)
)

;;;;;---------------------------------------------------------------;;

(defun CommandReactorCallback:UndoCheck ( reactor params )
(setq *undoflag* (wcmatch (strcase (car params)) "*U,*UNDO"))
(princ)
)

;;;;;---------------------------------------------------------------;;

(defun CommandReactorCallback:BlockInserted ( reactor params / e l )
(if
(and
(not *undoflag*)
(wcmatch (strcase (car params)) "*I,*INSERT,*EXECUTETOOL")
(setq e (entlast))
(setq l (entget e))
(eq "INSERT" (cdr (assoc 0 l)))
(= 1 (cdr (assoc 66 l)))
(eq *blockname* (AutoLabel:EffectiveName (vlax-ename->vla-object e)))
)
(stackush *blockname* 'lismattig)
(princ lismattig)
)
(princ)
)


;;---------------------------------------------------------------;;


;; http://www.cplusplus.com/reference/stl/stack/push/
;; (setq lst '(0 1 2 3 4 5))
;; (stackush 6 'lst) ==> lst = (6 0 1 2 3 4 5)
(defun stackush ( *x* *stack* )
(set *stack* (cons *x* (eval *stack*)))
(princ)
)




;;---------------------------------------------------------------;;
;; http://www.cplusplus.com/reference/stl/stack/pop/
;; (setq lst '(0 1 2 3 4 5))
;; (stackop 'lst) ==> lst = (1 2 3 4 5)
(defun stackop ( *stack* )
(set *stack* (cdr (eval *stack*)))
(princ)
)


;;;;;------------------------------------------------------------;;

(defun AutoLabel:EffectiveName ( obj )
(strcase
(if (vlax-property-available-p obj 'effectivename)
(vla-get-effectivename obj)
(vla-get-name obj)
)
)
)

;;---------------------------------------------------------------;;
;; Loading Expressions ;;
;;---------------------------------------------------------------;;

(vl-load-com)

(
(lambda ( / i s l o )
(setq
*blockname* (strcase *blockname*)
*reacdata* "AutoBlockLabel"
*reactor* nil
*undoflag* nil
)
(foreach r1 (vlr-reactors)
(foreach r2 (cdr r1)
(if (eq *reacdata* (vlr-data r2)) (vlr-remove r2))
)
)
(if
(setq s
(ssget "_X"
(setq *filter*
(list
'(0 . "INSERT")
'(66 . 1)
(cons 2 (strcat "`*U*," *blockname*))
(cons 410 (getvar 'CTAB))
)
)
)
)
(progn
(repeat (setq i (sslength s))
(if (eq *blockname*
(AutoLabel:EffectiveName
(setq o (vlax-ename->vla-object (ssname s (setq i (1- i)))))
)
)
(setq l (cons o l))
)
)
(vlr-command-reactor *reacdata*
(list
(cons :vlr-commandended 'CommandReactorCallback:BlockInserted)
)
)
)
)
)
)

(princ)

;;---------------------------------------------------------------;;
;; End of File ;;
;;---------------------------------------------------------------;;

Será que seria mais fácil fazer em VBA. Alguém poderia me ajudar?