I currently have the values of a bar scale linked to the viewport's object custom scale with some formulas for the bar scale deviations. It is using a field expressions and a field formula.

If a drafter deletes a viewport and creates a new one then the bar scale gets fudged because the values are referencing an object that has been deleted so I need something to associate the bar scale to the new viewport object scale values.

So far I have the following:

Code:
(defun c:link_bar_scale (/ vp_ent vp_name vp_obj vp_oid bs_ent bs_obj scale x y )
;    (initerr)
    (vl-load-com)
    (setq vp_ent (car (entsel "\nPick Viewport: ")))
    (setq vp_obj (vlax-ename->vla-object vp_ent) )
    (setq vp_oid (vla-get-objectid vp_obj))

    (setq bs_ent (car (entsel "\nPick Bar Scale: ")))
    (setq bs_obj (vlax-ename->vla-object bs_ent))
    
    
    ;(setq txt (strcat "%<\\AcObjProp Object(%<\\_ObjId " (itoa oid) ">%).Area \\f \"%pr2%lu2%ct4%qf1 sq ft>%"))
    ;(setq scale (strcat "%<\\AcObjProp.16.2 Object(%<\\_ObjId " (itoa oid) ">%).CustomScale \\f \"%sn\">%"))
    ;(setq scale1 (strcat "%<\\AcObjProp.16.2 Object(%<\\_ObjId " (itoa vp_oid) ">%).CustomScale \\f \"%lu2%f2816\">%"))
    ;(setq scale2 (strcat "%<\\AcObjProp.16.2 Object(%<\\_ObjId " (itoa vp_oid) ">%).CustomScale \\f \"%lu2%f2816\">%"))
    ;(setq scale3 (strcat "%<\\AcObjProp.16.2 Object(%<\\_ObjId " (itoa vp_oid) ">%).CustomScale \\f \"%lu2%f2816\">%"))
    ;(setq scale4 (strcat "%<\\AcObjProp.16.2 Object(%<\\_ObjId " (itoa vp_oid) ">%).CustomScale \\f \"%lu2%f2816\">%"))
    ;(setq scale5 (strcat "%<\\AcObjProp.16.2 Object(%<\\_ObjId " (itoa vp_oid) ">%).CustomScale \\f \"%lu2%f2816\">%"))
    ;%<\AcObjProp Object(%<\_ObjId 2039422450752>%).CustomScale \f "%lu2%qf2816">%

    (setq scale1 "%<\\AcExpr ((1/%<\\_FldPtr 2040354225904>%)*3) \\f \"%lu2\">%")
    (setq scale2 "%<\\AcExpr ((1/%<\\_FldPtr 2040354225904>%)*3) \\f \"%lu2\">%")
    (setq scale3 "%<\\AcExpr ((1/%<\\_FldPtr 2040354225904>%)*3) \\f \"%lu2\">%")
    (setq scale4 "%<\\AcExpr ((1/%<\\_FldPtr 2040354225904>%)*3) \\f \"%lu2\">%")
    (setq scale5 "%<\\AcExpr ((1/%<\\_FldPtr 2040354225904>%)*3) \\f \"%lu2\">%")

    (mapcar '(lambda (X Y)(vla-put-textstring X Y))
	    (vlax-invoke bs_obj "getattributes")
	    (list scale1 scale2 scale3 scale4 scale5)
	    );mapcar

        
;    (reset)
    (princ)
)
(princ)
My question is how do I reference the field formula for a field expression?

I know how to get the viewport object's CustomScale using
Code:
(setq scale1 (strcat "%<\\AcObjProp.16.2 Object(%<\\_ObjId " (itoa vp_oid) ">%).CustomScale \\f \"%lu2%f2816\">%"))
but I am struggling with the formula part
Code:
(setq scale1 "%<\\AcExpr ((1/%<\\_FldPtr 2040354225904>%)*3) \\f \"%lu2\">%")
How do I get the "FldPtr_######" ?