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就常表示这个精度。