Haber, prueba con esto, le falta cuando se llama a PLACEVIEW (que es un comando interno - lo removi tal como esta en el link que te di, tu deberas de colocarlo de nuevo) - espero te sirva:
;; by default turn the ability ON
(if (or (eq (getenv "RunPlaceViewLayer") nil)
(eq (getenv "RunPlaceViewLayer") ""))
(setenv "RunPlaceViewLayer" "1"))
(if (SETQ ssvp (SSGET "X" '((0 . "VIEWPORT") (-4 . ">") (69 . 1))))
(REPEAT (SETQ ct (SSLENGTH ssvp))
(SETQ objlst (CONS (VLAX-ENAME->VLA-OBJECT (SSNAME ssvp (SETQ ct (1- ct)))) objlst))))
(defun reactor-editor (reactor params)
(if (eq (getenv "RunPlaceViewLayer") "1")
(progn
(if (not (wcmatch
(getvar "cmdnames")
"UNDO,U,REDO,OOPS,STYLE,COPYCLIP,COPYBASE,CUTCLIP"))
(progn
(if objlst
(progn (if posible_viewport_enames
(setq objlst
(append
objlst
(mapcar 'vlax-ename->vla-object posible_viewport_enames))))
(mapcar '(lambda (vp)
(IF (and (not (vlax-erased-p vp))
(= (VLA-GET-DISPLAYLOCKED vp) :VLAX-TRUE))
(VLA-PUT-COLOR vp ACBYLAYER)
(if (not (vlax-erased-p vp))
(VLA-PUT-COLOR vp ACCYAN))))
objlst)
(setq posible_viewport_enames nil)))))
(setq posible_viewport_enames nil))))
(defun acdb-objectappended (reactor params)
(if
(and
(eq (getenv "RunPlaceViewLayer") "1")
(not
(wcmatch
(getvar "cmdnames")
"UNDO,U,REDO,OOPS,STYLE,COPYCLIP,COPYBASE,CUTCLIP,NEW,QNEW,OPEN,*LAYOUT*,MOVE,COPY,*STRETCH*")))
(cond ((and params
(entget (cadr params))
(eq (cdadr (entget (cadr params))) "VIEWPORT")
(not (vl-position (cadr params) posible_viewport_enames)))
(setq posible_viewport_enames (cons (cadr params) posible_viewport_enames))))))
(if (not dwiz_editor_reactor)
(setq dwiz_editor_reactor
(vlr-set-notification
(vlr-editor-reactor
"editor"
'((:vlr-commandended . reactor-editor)
(:vlr-commandcancelled . reactor-editor)))
'active-document-only)))
(if (not dwiz_acdb_reactor)
(setq dwiz_acdb_reactor
(vlr-set-notification
(vlr-acdb-reactor
"acdb"
'((:vlr-objectappended . acdb-objectappended)))
'active-document-only)))
(princ)