Isn't the old RTEXT and a few other things handled through persistent reactors?
I haven't played around with persistent reactors much, so I don't know how much of the code stays resident in the drawing.
Hint: It's hiding in ldata.
(defun _CleanReactors ( )
;; MP (distilled from code authored by Luis Esquivel)
;; See post: http://www.theswamp.org/index.php?topic=6870.msg112068#msg112068
(mapcar
(function
(lambda (reactor)
(cond
( (and
(equal (vlr-type reactor) :vlr-object-reactor)
(or
(vl-some 'vlax-erased-p (vlr-owners reactor))
(null (vlr-owners reactor))
)
)
(foreach owner (vlr-owners reactor)
(vlr-owner-remove reactor owner)
)
(vlr-data-set reactor nil)
(vlr-pers-release reactor)
)
( (and
(vlr-added-p reactor)
(not (equal (vlr-type reactor) :vlr-object-reactor))
(or
(vl-some 'vlax-erased-p (vlr-data reactor))
(not (vlr-data reactor))
)
)
(vlr-data-set reactor nil)
(vlr-pers-release reactor)
)
)
)
)
(vlr-pers-list)
)
)
Does this help?Code: [Select](defun _CleanReactors ( )
;; MP (distilled from code authored by Luis Esquivel)
;; See post: http://www.theswamp.org/index.php?topic=6870.msg112068#msg112068
(mapcar
(function
(lambda (reactor)
(cond
( (and
(equal (vlr-type reactor) :vlr-object-reactor)
(or
(vl-some 'vlax-erased-p (vlr-owners reactor))
(null (vlr-owners reactor))
)
)
(foreach owner (vlr-owners reactor)
(vlr-owner-remove reactor owner)
)
(vlr-data-set reactor nil)
(vlr-pers-release reactor)
)
( (and
(vlr-added-p reactor)
(not (equal (vlr-type reactor) :vlr-object-reactor))
(or
(vl-some 'vlax-erased-p (vlr-data reactor))
(not (vlr-data reactor))
)
)
(vlr-data-set reactor nil)
(vlr-pers-release reactor)
)
)
)
)
(vlr-pers-list)
)
)
See reply #6.
This is weird,..so I've made a test and delete all entities in the drawing and purge...
and I've discover that the program is running if a simple specific MTEXT is present in the drawings...
post the dwg
(defun c:ld ()
(defun AO (alert-object reactor-object parameter-list)
(alert "Reactor RUN")
)
(setq actdoc (vla-get-activedocument (vlax-get-acad-object)))
(setq mspace (vla-get-modelspace actdoc))
(setq vlaobj (vlax-ename->vla-object (car (entsel))))
(setq lineReactor (vlr-object-reactor (list vlaobj)
"TEST" '((:vlr-modified . AO))))
(princ)
)
(defun c:test (/ actdoc mspace vlaobj Objectreactor)
(vl-load-com)
(setq actdoc (vla-get-activedocument (vlax-get-acad-object)))
(setq mspace (vla-get-modelspace actdoc))
(setq vlaobj (vlax-ename->vla-object (car (entsel))))
(if Objectreactor (vlr-remove Objectreactor))
(setq Objectreactor (vlr-pers (vlr-object-reactor (list vlaobj)
"$DOC$" (list
(cons :vlr-modified (read (vl-princ-to-string (defun GG (a b c) (alert "\nTEST OK")))))))))
(if (not (vlax-object-released-p actdoc))(vlax-release-object actdoc))
(if (not (vlax-object-released-p mspace))(vlax-release-object mspace))
(princ)
)
)