Try this. It worked for me.
Code:
; Append an object data field value to entities
(defun c:expr2od (/ odt odf expr ss odc i en val)
(if (setq odt (getstring "\nEnter the object Data Table name: "))
(if (setq odf
(getstring "\nEnter the Object Data Field name to append: ")
)
(if (setq expr (getstring "\nEnter the Expression to evaluate: " t))
(if (setq ss (ssget))
(progn
;; define the new object data field
(setq odc
(list
"columns"
(list
;; same name and description
(cons "colname" odf)
(cons "coldesc" odf)
'("coltype" . "character")
'("defaultval" . "")
)
)
)
;; add the new object data field to the table
(if (not (ade_odaddfield odt odc))
(princ "\nUnable to add new field to Object Data table")
)
;; append results of expression evaluation into od fields on entities
(repeat (setq i (sslength ss))
(setq
i (1- i)
en (ssname ss i)
val (ade_expreval en expr "string")
)
(if val
(if (not (ade_odsetfield en odt odf 0 val))
(princ "\nUnable to update OD field on entity ")
)
(princ "\nUnable to evaluate Expression on entity ")
)
(princ ".")
)
)
(princ "\nNo objects selected ")
)
(princ "\nNo Expression entered ")
)
(princ "\nNo Object Data Field name entered")
)
(princ "\nNo Object Data Table name entered")
)
(princ "\nDone")
(princ)
) ; c:expr2od
[ Moderator Action = ON ] What are [ CODE ] tags... [ Moderator Action = OFF ]