先回答第一个:
有几个问题:
1、rtos 后面的两个参数是整型,所以你的m必须是整形,你用getreal就不行了,用getint
2、注意系统变量dimzin的影响,可能导致后续的0无法显示需要的位数。
3、程序中给nr_2和nr_3赋值的时候有问题,自己看看,这是粗心的错误。。。
- (defun c:ae ()
- (setq m (getint "\n请输入保留的小数位数:"))
- (setq dim (getvar "dimzin"))
- (setvar "dimzin" 0)
- (prompt "\n选择所要改变的数字:")
- (setq ss (ssget '((0 . "text"))))
- (setq i 0)
- (repeat (sslength ss)
- (setq s1 (entget (ssname ss i))
- nr (assoc 1 s1)
- nr_1 (cdr nr)
- nr_2 (atof nr_1)
- nr_3 (rtos nr_2 2 m)
- )
- (setq s1 (subst (cons 1 nr_3) nr s1))
- (entmod s1)
- (setq i (1+ i))
- )
- (setvar "dimzin" dim)
- (princ)
- )
|