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_######" ?