You can actually achieve this with a self-referencing text field (though, this has to be created programmatically):
(defun c:test ( / o p )
(if (setq p (getpoint "\nSpecify insertion point: "))
(progn
(setq o
(vla-addtext
(vlax-get-property (LM:acdoc)
(if (= 1 (getvar 'cvport))
'paperspace
'modelspace
)
)
" "
(vlax-3D-point (trans p 1 0))
(getvar 'textsize)
)
)
(vla-put-textstring o
(strcat
"%<\\AcObjProp Object(%<\\_ObjId "
(LM:objectid o)
">%).InsertionPoint \\f \"%lu2%pt3%pr1\">%"
)
)
(vla-regen (LM:acdoc) acactiveviewport)
)
)
(princ)
)
;; ObjectID - Lee Mac
;; Returns a string containing the ObjectID of a supplied VLA-Object
;; Compatible with 32-bit & 64-bit systems
(defun LM:objectid ( obj )
(eval
(list 'defun 'LM:objectid '( obj )
(if (vlax-method-applicable-p (vla-get-utility (LM:acdoc)) 'getobjectidstring)
(list 'vla-getobjectidstring (vla-get-utility (LM:acdoc)) 'obj ':vlax-false)
'(itoa (vla-get-objectid obj))
)
)
)
(LM:objectid obj)
)
;; Active Document - Lee Mac
;; Returns the VLA Active Document Object
(defun LM:acdoc nil
(eval (list 'defun 'LM:acdoc 'nil (vla-get-activedocument (vlax-get-acad-object))))
(LM:acdoc)
)
(vl-load-com) (princ)