(yj_wtsj l)
改为
(yj_wtsj(rtos L 2 0))
(yj_wtsj (rtos l 2 0)
("114.3" 100 102)
这样的话小数倒是管用了,可是整数又不管用了。。好郁闷 本帖最后由 llsheng_73 于 2014-5-26 22:47 编辑
梦里水香 发表于 2014-5-26 22:01 static/image/common/back.gif
对啊,就是这样,单独运行子命令是正确。
问题在于你的L是从两个点用DISTANCE计算出来的,那两个点是你GETPOINT得到的,这就无法保证它能够刚好在你的列表里边,(setq l (distance p0 p1))改为(setq l (ATOF(RTOS(distance p0 p1)2 1)))估计可以,因为你既然这样做,那两个点的距离应该很接近你想要的数值的
至于实数与整数,只要数值相等是可以的
(YJ_WTSJ 508.0)
(508 500 508)
_$ l
508
_$ dn
500
_$ a
508
_$ llsheng_73 发表于 2014-5-26 22:46 static/image/common/back.gif
问题在于你的L是从两个点用DISTANCE计算出来的,那两个点是你GETPOINT得到的,这就无法保证它能够刚好在你 ...
在谢谢了,这个问题想了两天脑袋都想破了,现在终于解决了。
再次感谢! 梦里水香 发表于 2014-5-26 22:56 static/image/common/back.gif
在谢谢了,这个问题想了两天脑袋都想破了,现在终于解决了。
再次感谢!
(defun C:yj_wt ()
(setvar "osmode" 0)
(while
(null(vl-remove'nil(yj_wtsj(atof(rtos(distance(setq p0(getpoint"\n set basepoint:"))(setq p1(getpoint p0"\n input zhijing:")))2 1)))))
)
(setq tt (getdist p1 "\n input bihou:")
ang (angle p0 p1)
p00 (polar p0 ang (+ A (/ l 2)))
p2 (polar p0 ang (* 0.5 l))
p3 (polar p2 (- ang (/ pi 4)) (* (sqrt 2) A))
p6 (polar p0 ang tt)
p7 (polar p1 ang (* tt -1))
p4 (polar p00 (- ang (/ pi 2)) (- A (/ l 2)))
p5 (polar p00 (- ang (/ pi 2)) (+ A (/ l 2)))
p8 (polar p4 (- ang (/ pi 2)) tt)
p9 (polar p5 (+ ang (/ pi 2)) tt))
(command "_.line" p0 p1 "")
(command "_.line" p4 p5 "")
(command "_.arc" "c" p00 p1 p4)
(command "_.arc" "c" p00 p0 p5)
(command "_.arc" "c" p00 p6 p9)
(command "_.arc" "c" p00 p7 p8)
(command "_.arc" "c" p00 p2 p3)
(princ)
)
先对P0,P1两点得到的距离进行检查,如果有不小心点错了马上重新获取p0,p1
页:
1
[2]