Here's a quick one for each line...
(defun c:foo (/ n o s str)
(if (setq s (ssget '((0 . "MTEXT") (1 . "*`**"))))
(foreach e (vl-remove-if 'listp (mapcar 'cadr (ssnamex s)))
(setq str (vla-get-textstring (setq o (vlax-ename->vla-object e))))
(setq n (eval (cons '* (read (strcat "(" (vl-string-translate "*" " " str) ")")))))
(vla-put-textstring o (strcat str " = " (vl-princ-to-string n)))
)
)
(princ)
)
And one to tally them up:
(defun c:foo (/ i n o s str)
(setq i 0)
(if (setq s (ssget '((0 . "MTEXT") (1 . "*`**"))))
(foreach e (vl-remove-if 'listp (mapcar 'cadr (ssnamex s)))
(setq str (vla-get-textstring (setq o (vlax-ename->vla-object e))))
(setq n (eval (cons '* (read (strcat "(" (vl-string-translate "*" " " str) ")")))))
(setq i (+ i n))
;; (vla-put-textstring o (strcat str " = " (vl-princ-to-string n)))
)
)
(if (and (> i 0)
(setq o (car (entsel "\nPick text to place result: ")))
(= "MTEXT" (cdr (assoc 0 (entget o))))
)
(vla-put-textstring (vlax-ename->vla-object o) (vl-princ-to-string i))
)
(princ)
)