本帖最后由 麻吉888888888 于 2015-12-4 01:35 编辑
已知套内面积,需要求建筑面积(建筑面积=套内面积/容积率)。
编了个小程序,发现只能对建筑面积的整数部分有效。经多次试验,应该是在提取数字上出了问题,百思不得其解。求教大侠,代码是哪儿错了,该怎么改?
处理前文字:120.33m^u2^u
输入容积率:0.3
处理后文字:401.10m^u2^u
文字为多行文本。
不好意思,新人不懂提问规矩 - (defun c:ttt(/ ss add en txt enl num0)
- (while(not (setq add (getreal "\n容积率:"))))
- (princ "\n选择文字:")
- (while (setq ss (ssget '((0 . "TEXT,mtext")(1 . "*m^u2^u*"))));;只有含有m^u2^u的才能被选
- 中
-
- (repeat (setq n (sslength ss))
- (setq en (ssname ss (setq n (1- n))))
- (setq txt (cdr (assoc 1 (setq enl (entget en)))));;可能问题就出在这里
- (setq num0 (atoi txt) num2 (atoi txt2)
- txt (substr txt (1- (strlen (rtos num0))));;1-仅针对于m^u2^u之前为两位小数的情况
- num2 (/ num2 add)
- txt (strcat (rtos num2 2 2) txt);;第一个2表示计算结果以小数表示,第二个2表示保留2
- 位
- enl (subst (cons 1 txt) (assoc 1 enl) enl)
- )
- (entmod enl)
- )
- )
- )
|