I see that you have your code working now, anyway here is another approach:
;; updated for theSwamp!
;; by default having the ability ON
(if (or (eq (getenv "RunSetLayerReactor") nil)
(eq (getenv "RunSetLayerReactor") ""))
(setenv "RunSetLayerReactor" "1"))
(defun setlayer (reactor params)
(if (eq (getenv "RunSetLayerReactor") "1")
(progn
(if (not
(wcmatch
(getvar "cmdnames")
"UNDO,U,REDO,OOPS,STYLE,COPYCLIP,COPYBASE,CUTCLIP"))
(progn
(if (and
(wcmatch (strcase (car params)) "*DIM*")
dim_enames)
(progn
(foreach obj (mapcar 'vlax-ename->vla-object
dim_enames)
(vla-put-layer obj "A-DIM"))
(setq dim_enames nil)))))
(setq dim_enames nil))))
(defun commandcancelled (reactor params)
(if (and (eq (getenv "RunSetLayerReactor") "1")
(wcmatch (strcase (car params)) "*DIM*"))
(setq dim_enames nil)))
(defun objectappended (reactor params)
(if
(and
(eq (getenv "RunSetLayerReactor") "1")
(not
(wcmatch
(getvar "cmdnames")
"UNDO,U,REDO,OOPS,STYLE,COPYCLIP,COPYBASE,CUTCLIP,NEW,QNEW,OPEN,*LAYOUT*,MOVE,COPY,*STRETCH*")))
(cond
((and
(wcmatch (getvar "cmdnames") "*DIM*")
params
(entget (cadr params))
(wcmatch (cdadr (entget (cadr params))) "DIMENSION")
(not
(vl-position (cadr params) dim_enames)))
(setq dim_enames
(cons (cadr params) dim_enames))))))
(if (not editor_reactor)
(setq editor_reactor
(vlr-set-notification
(vlr-editor-reactor
"editor"
'((:vlr-commandended . setlayer)
(:vlr-commandcancelled . commandcancelled)))
'active-document-only)))
(if (not acdb_reactor)
(setq acdb_reactor
(vlr-set-notification
(vlr-acdb-reactor
"acdb"
'((:vlr-objectappended . objectappended)))
'active-document-only)))
(princ)