yxp 发表于 2006-6-10 08:51:00

对CAD中的数字批量进行加减乘除以及乘方的运算的lisp

(defun C:tadd ( / sa k ss str yusf n shzi h hh)<BR>&nbsp;(princ "\n 选择所有文字:")<BR>&nbsp;(setq ss (ssget&nbsp; '((0 . "text")))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str (getstring "\n 输入四则运算符及数值:")<BR>&nbsp;&nbsp;&nbsp;&nbsp; yusf (substr str 1 1)<BR>&nbsp;&nbsp;&nbsp;&nbsp; shzi (atof (substr str 2))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n (sslength ss) k 0 )<BR>&nbsp;(while (&lt; k n) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq names (ssname ss k)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sa (entget names)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; h (assoc '1 sa)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hh (atof(cdr h)))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (= yusf "+")(setq&nbsp; str1 (rtos (+ hh shzi) 2)))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (= yusf "-")(setq&nbsp; str1 (rtos (- hh shzi) 2)))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (= yusf "*")(setq&nbsp; str1 (rtos (* hh shzi) 2)))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (= yusf "/")(setq&nbsp; str1 (rtos (/ hh shzi) 2)))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (= yusf "^")(setq&nbsp; str1 (rtos (expt hh shzi) 2)))<BR>&nbsp;(setq h1 (cons 1 str1))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq sa (subst h1 h sa))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (entmod sa)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq k (+ k 1))<BR>&nbsp;)(princ)<BR>)<BR>

nochao 发表于 2020-2-20 05:28:58

不考虑一下支持多行文字吗?
页: [1]
查看完整版本: 对CAD中的数字批量进行加减乘除以及乘方的运算的lisp