这个程序是我很早以前做的,你做个参考吧 我一般都是复制一个,然后选择这个被复制的文字,就可以出结果了 (defun c:dx() (setq a (ssget )) (setq len (sslength a)) ;取得对象的个数 (setq n 0) (repeat len (setq en (ssname a n)) (setq b (entget en)) ;得到实体的联合列表 (setq c (assoc 1 b)) ;取出字的内容(群码为1) (setq d (cdr c)) ;取出文字 (setq djq (cdr (assoc 0 b))) (if (= djq "TEXT") (hehe) ) ;end if (setq n (1+ n)) ) ;end repeat ;;;子程序 (defun hehe() (setq f (vl-string-search '* d)) ;找出*的位置(程序只给出从左数的第一个,其余不计) (setq g (substr d 2 (- f 1) )) ;找出第一个数字(字符串) (setq g4 (atoi g)) ;变成整数 (setq g1 (substr d (+ f 2))) ;找出第一个*后面的字符串 (setq f1 (vl-string-search '* g1)) ;找出*的位置 (去掉第一个*前面的以后) (setq g2 (substr g1 1 f1)) ;找出第二个数字 (setq g5 (atoi g2)) ;变成整数 (setq g3 (substr g1 (+ f1 2) 20)) ;找出第三个数字 (setq g6 (atoi g3)) ;变成整数 (setq chengji (/ (* g4 g5 g6 7.85) 1000000)) ;计算它们的积 (setq jieguo (rtos chengji 2 1)) ;保留一位小数 (setq m (cons 1 jieguo)) (setq b (subst m c b )) (entmod b) )
|