| 本帖最后由 springwillow 于 2015-2-7 19:00 编辑 
 虽然vectra兄的程序也能满足你的要求,但是感觉不够简练,通用性也不是很高。试试我这个吧!其中的xxexp函数可以去一刀屠文的帖子找
  (defun c:tt ( / endnum ent firstendnum ss sslen txt txt1)
(vl-load-com)
  (princ"by springwillow")
  (vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
  (setq firstendnum (getvar 'Lastprompt))
  (princ "\n选择文字: ")
  (if (setq ss (ssget ":S" '((0 . "TEXT"))))
    (repeat (setq sslen (sslength ss))
      (setq ent (entget (ssname ss (setq sslen (1- sslen))))
      txt1 (cdr (assoc 1 ent)))
      (while (vl-string-search "\U+03B401" txt1)
            (setq txt1 (vl-string-subst "" "\U+03B401" txt1)))
      (setq txt (vl-string-left-trim "xx="  (vl-string-left-trim " " txt1))
      txt (apply 'strcat (xxexp"[\\d+-/x\\\+]" txt "")))
      (while (vl-string-search "x" txt)
            (setq txt (vl-string-subst "*" "x" txt)))
      (command "cal" txt)
      (setq endnum (getvar 'Lastprompt))
      (if (/= endnum "表达式语法错误")
      (entmod (subst (cons 1 (strcat txt1 "=" endnum)) (assoc 1 ent) ent)))
      (setq firstendnum endnum)
    )
  )
  (vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
  (princ)
)
 |