wandong 发表于 2014-11-3 19:38:05

使用getstring函数时,应判断值是否为""(按回车键),而""并不是nil。

ZZXXQQ 发表于 2014-11-3 21:12:00

9楼改了,再试试。

669423907 发表于 2014-11-3 22:56:23

ZZXXQQ 发表于 2014-11-2 18:29 static/image/common/back.gif


非常好!如果添加 t1=t2=0 时就无公差,也相当于还原作用,是不是更好呢

dhy 发表于 2014-11-4 08:31:13

ZZXXQQ 发表于 2014-11-3 21:12 static/image/common/back.gif
9楼改了,再试试。

谢谢,达到理想的效果,这才是我想要的

dhy 发表于 2014-11-4 11:17:03

ZZXXQQ 发表于 2014-11-2 18:29 static/image/common/back.gif


请问公差里面,明明是输入了+号的,为什么不显示+号呢,-号就有显示

ZZXXQQ 发表于 2014-11-4 11:30:37

dhy 发表于 2014-11-4 11:17 static/image/common/back.gif
请问公差里面,明明是输入了+号的,为什么不显示+号呢,-号就有显示

再改一下(defun C:G5 ()
(if (and
      (if (setq t11 (getreal
      (strcat "\n请指定上限公差值+" (if t1 (strcat "<" (rtos t1 2) ">: ") ": "))))
       (setq t1 t11) t1
      )
      (if (setq t21 (getreal
                  (strcat "\n请指定下限公差值-" (if t2 (strcat "<" (rtos t2 2) ">: ") ": "))))
       (setq t2 t21) t2
      )
      (princ "\n选择尺寸: ")
      (setq ss (ssget '((0 . "DIMENSION")))))
(progn
(setq t1f (if (> t1 0) "+" ""))
(setq t2f (if (> t2 0) "+" ""))
(if (equal t1 t2 1e-6)
   (setq txt (strcat "<>%%P" (rtos t1 2)))
   (setq txt (strcat "<>{\\H0.7x;\\S" t1f (rtos t1 2) "^" t2f (rtos t2 2) ";}"))
)
(repeat (setq i (sslength ss))
   (setq ent (entget(ssname ss (setq i (1- i)))))
   (entmod (subst (cons 1 txt) (assoc 1 ent) ent))
)
))
(princ)
)

dhy 发表于 2014-11-4 13:38:06

本帖最后由 dhy 于 2014-11-4 14:01 编辑

ZZXXQQ 发表于 2014-11-4 11:30 static/image/common/back.gif
再改一下
原来还可以这样,谢谢!.还想问一下,1e-6是什么意思呢?

ll_j 发表于 2014-11-4 15:02:51

dhy 发表于 2014-11-4 13:38 static/image/common/back.gif
原来还可以这样,谢谢!.还想问一下,1e-6是什么意思呢?

很小的实数,常用来表示精度,用作浮点数的“模糊”相等。
计算机进行运算时,整数和浮点数(实数)是不同的,整数用加法器运算,不会出现小数,最终结果是确定的等于。而小数则在计算机中不能准确表示,在计算机中用浮点数近似表示一个实数,这样在计算时也就会和需要表达的值有一个“误差”,而且在不断计算时,这些“误差”可能是累计的,这样,在进行浮点数计算时,可以近似把两个误差在一定范围内的数认为是“相等”,这个误差就是精度。1e-6就常表示这个精度。
页: 1 2 [3]
查看完整版本: 为什么这程序不能执行第二次呢