弯头绘制程序,输入I系列直径(小数点)时出错求指导
(defun C:yj_wt ()(setvar "osmode" 0)
(setq p0 (getpoint "\n set basepoint:"))
(setq p1 (getpoint p0 "\n input zhijing:"))
(setq tt (getdist p1 "\n input bihou:"))
(setq ang (angle p0 p1))
(setq l (distance p0 p1))
(yj_wtsj l)
(setq p00 (polar p0 ang(+ A (/ l 2))))
(setq p2 (polar p0 ang (* 0.5 l)))
(setq p3 (polar p2 (- ang (/ pi 4)) (* (sqrt 2) A)))
(setq p6 (polar p0 ang tt))
(setq p7 (polar p1 ang (* tt -1)))
(setq p4 (polar p00 (- ang (/ pi 2)) (- A (/ l 2))))
(setq p5 (polar p00 (- ang (/ pi 2)) (+ A (/ l 2))))
(setq p8 (polar p4 (- ang (/ pi 2)) tt))
(setq 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)
(print)
)
(defun yj_wtsj (x)
(setq data21 '(
(l DN A)
(
(322525)
(33.72525)
(383232)
(42.43232)
(454038)
(48.34038)
(575051)
(60.35051)
(736564)
(766564)
(88.98076)
(898076)
(101.69089)
(108100102)
(114.3100102)
(133125127)
(141.3125127)
(159150152)
(168.3150152)
(219200203)
(219.1200203)
(273250254)
(273250254)
(323.9300305)
(325300305)
(355.6350356)
(377350356)
(406.4400406)
(426400406)
(457450457)
(480450457)
(508500508)
(530500508)
(559550559)
(610600610)
(630600610)
)
)
)
(setq blm (car data21)
sjz (cadr data21)
)
(mapcar 'set blm (assoc x sjz));从数据表中取出数据对l、DN、A进行赋值
(princ)
)
本帖最后由 liu22737 于 2014-5-26 13:58 编辑
没时间搞懂你的程式,不过你的表有问题
可以把表换一下
(assoc x sjz);assoc是按点对表的第一位提取的,X必须于第一位对应
如果X是序号可以用 NTH 提取
(setq data21(list
(list'l 'DN 'A)
'(
(322525)
(33.72525)
(383232)
(42.43232)
(454038)
(48.34038)
(575051)
(60.35051)
(736564)
(766564)
(88.98076)
(898076)
(101.69089)
(108100102)
(114.3100102)
(133125127)
(141.3125127)
(159150152)
(168.3150152)
(219200203)
(219.1200203)
(273250254)
(273250254)
(323.9300305)
(325300305)
(355.6350356)
(377350356)
(406.4400406)
(426400406)
(457450457)
(480450457)
(508500508)
(530500508)
(559550559)
(610600610)
(630600610)
)
)
) 本帖最后由 llsheng_73 于 2014-5-26 14:32 编辑
(defun yj_wtsj (x)
(SETQ x(assoc x'((322525)
(33.72525)
(383232)
(42.43232)
(454038)
(48.34038)
(575051)
(60.35051)
(736564)
(766564)
(88.98076)
(898076)
(101.69089)
(108100102)
(114.3100102)
(133125127)
(141.3125127)
(159150152)
(168.3150152)
(219200203)
(219.1200203)
(273250254)
(273250254)
(323.9300305)
(325300305)
(355.6350356)
(377350356)
(406.4400406)
(426400406)
(457450457)
(480450457)
(508500508)
(530500508)
(559550559)
(610600610)
(630600610))))
(mapcar 'set (LIST 'l 'DN 'A)(IF x x'(NIL NIL NIL)))
;;如果输入的X找不到将 l dn a 均赋为空,如果需要赋为0或者别的,可以把'(nil nil nil)相应的修改一下
)
另外,此处给L dn a赋了值,但调用该子程序后一直没用到DN?不清楚你这些数据的意义
llsheng_73 发表于 2014-5-26 14:24 static/image/common/back.gif
另外,此处给L dn a赋了值,但调用该子程序后一直没用到DN?不清楚你这些数据的意义
是个绘制弯头的程序,好多程序都是用DN,找到L与A的值,但这里暂时用不到,所以没DN了。。
把这个子函数替换后还是不可以使用,你直径输入114.3试试。。 liu22737 发表于 2014-5-26 13:47 static/image/common/back.gif
没时间搞懂你的程式,不过你的表有问题
可以把表换一下
(assoc x sjz);assoc是按点对表的第一位提取的, ...
失败了,第一列数据是管子的外径,在运行后输入第一列中的数据,输整数的话没问题,输小数的话就提示参数类型错误。 梦里水香 发表于 2014-5-26 16:06 static/image/common/back.gif
失败了,第一列数据是管子的外径,在运行后输入第一列中的数据,输整数的话没问题,输小数的话就提示参数 ...
(setq l (distance p0 p1))返回值与表对应不上,表内是整数,L是实数, liu22737 发表于 2014-5-26 16:22 static/image/common/back.gif
(setq l (distance p0 p1))返回值与表对应不上,表内是整数,L是实数,
可能是主函数里用的自定义函数用错了或是摆错位置了吧。。
因为加载子函数后查询!A值都是正确的,就是运行主函数后第一列小数对应的A值出不来,第一列整数对应的A值都没错。
纠结好几天了。。 梦里水香 发表于 2014-5-26 21:22 static/image/common/back.gif
可能是主函数里用的自定义函数用错了或是摆错位置了吧。。
因为加载子函数后查询!A值都是正确的,就是运 ...
(YJ_WTSJ 219.1)
(219.1 200 203)
_$ l
219.1
_$ dn
200
_$ a
203
_$ (YJ_WTSJ 33.7)
(33.7 25 25)
_$ l
33.7
_$ dn
25
_$ a
25
_$ llsheng_73 发表于 2014-5-26 21:50 static/image/common/back.gif
(YJ_WTSJ 219.1)
(219.1 200 203)
_$ l
对啊,就是这样,单独运行子命令是正确。 (yj_wtsj l)
改为
(yj_wtsj(rtos L 2 0))
再把表内第一位改为整数加引号
例(114.3100102)改为(“114” 100102)
页:
[1]
2