How to Turn on IAREA for Control Valves Automatically and also have it appear below the Fail Mode?
1. Close all Bentley apps.
2. Browse to the PID-SUP.LSP file in the location below:
Windows 32 bit OS: Location = C:\Documents and Settings\All Users\Application Data\Bentley\Plant V8i\P&ID
Windows 64 bit OS: Location = C:\ProgramData\Bentley\Plant V8i\P&ID
3. Open the PID-SUP.LSP file in Notepad.
4. Insert the attached LSP routine just above the “Drawing Initialization” section in the Pid-Sup.lsp file.
5. Save and Exit.
5. Re-open P&ID edit the valve's Symbol in Symbol Manager.
6. Add user_gate to the user function for the Valve wanting Automatic placement of the data. Save.
7. Place a new control valve.
;;;
(defun MoveOrGetAttributePosstion ( en tag p2 GetPointVal / el p4 p5)
(setq tag (strcase tag))
(while (and (setq el (entget (entnext en)))
(= (cdr (assoc 0 el)) (strcase "attrib"))
(/= (setq p4 (strcase (cdr (assoc 2 el)))) tag)
)
(setq en (entnext en))
)
(if (and el (= p4 tag))
(progn
(setq p4 (cdr (assoc 11 el))
p5 (cdr (assoc 10 el))
)
(if (not GetPointVal)
(progn
(setq el (subst (cons 10 (polar p5 (angle p4 p2)(distance p4 p2)))(assoc 10 el) el)
el (subst (cons 11 p2)(assoc 11 el) el)
el (entmod el)
)
(entupd en)
)
)
)
)
p4
)
(defun user_cvalve (link)
(if (and(setq XdataGot (at_asi_get_xgroup link -18002 ))
(setq eHand (cdar xdatagot))
(setq egot (handent eHand))
(entget egot)
)
(progn
(princ "\nUpdating...")
; 0 turn visibility on
; 1 turn visibility off
; (attvis egot "typ" 0)
(attvis egot "area" 0)
; (attvis egot "num" 0)
; (attvis egot "sz" 0)
; (attvis egot "ail_mode" 1)
(setq ptM (MoveOrGetAttributePosstion egot "FAIL_MODE" () T))
;;Uncomment and adjust for size attribute placement
(setq ptm (polar ptm 1.57 -.5))
(MoveOrGetAttributePosstion egot "PSZ" ptM ())
)
)
)
(princ)