救命!对话框中提取数据-困扰菜鸟多天的问题
用lisp提取对话框中编辑框里的数据时,如何也无法给lisp中的变量赋对话框中的值。小弟刚学不久,望各位大哥不吝赐教!!!以下是对话框 文件lisp文件~~~
是不是你的对话框中的key值与驱动程序中get_tile的参数大小写不对应! <P>你的“编揖框”名称是“b1”面不是“b”。</P><P> </P>
<P></P>
<P> </P> 你的程序最好分成几个函数,不要放到一起。这样读起来太麻烦。你才开始编程没多长时间吧?能有这水平是很不错的了。一定要好好努力。你的CAD应用水平一定很好了。好像程序还有点毛病。不能生成正确的齿轮轮廓。 <P>多谢指教,已经改了,但是lisp程序还是没有按对话框中的 值进行赋值,而只是使用变量的 初始值,好像act 函数没有被调用,再帮帮忙啊,多谢~~~~~</P> 我查了,赋值没有错。对话框赋值没有问题。体计是你程序的问题。请你自己再好好查一下。
以下语句有问题。我没时间去看这些齿轮的基本概念。多少年不用了。都忘了。
(setq mt (/ mn (cos b)))
(setq a(/ pi 9) d (* mt z)
da (abs (+ d (* 2 (* (+ ha x) mn))))
dj (+ d (* mt x))
p(* pi mt)
h(* mt (+ ha 0.25))
hf (* mt h)
)
(setq l1 (/ h (cos a))
l2 (- (/ p 2) (* 2 h (/ (sin a) (cos a))))
)
(setq pt0 (list x_pt0 y_pt0 z_pt0)
pt1 (list (car pt0) (cadr pt0))
pt2 (polar pt1 (- (/ pi 2) a) (* 2 l1))
pt3 (polar pt2 0 l2)
pt4 (polar pt3 (- a (/ pi 2)) (* 2 l1))
pt5 (polar pt4 0 l2)
)
(command "ucs" "o" pt0)
(setq i 0)
(while (< i (+ z 3))
(setq pt11 (list (+ (car pt1) (* i p)) (cadr pt1))
pt21 (list (+ (car pt2) (* i p)) (cadr pt2))
pt31 (list (+ (car pt3) (* i p)) (cadr pt3))
pt41 (list (+ (car pt4) (* i p)) (cadr pt4))
pt51 (list (+ (car pt5) (* i p)) (cadr pt5))
)
(command "line" pt11 pt21 pt31 pt41 pt51 "")
(setq i (+ i 1))
)
(setq pt12 (list (+ (car pt11) p) (cadr pt1))
pt22 (list (+ (car pt21) p) (cadr pt2))
pt32 (list (+ (car pt31) p) (cadr pt3))
pt42 (list (+ (car pt41) p) (cadr pt4))
)
(command "line" pt12 pt22 pt32 pt42 "")
(setq pt6 (polar pt1 (- 0 (/ pi 2)) (* 2 mt))
pt7 (polar pt42 (- 0 (/ pi 2)) (* 2 mt))
)
(command "line" pt1 pt6 pt7 pt42 "")
(setq pt_c (polar pt32 (/ pi 2) da)
pt8(polar pt_c (- 0 (/ pi 2)) (+ (/ d 2) (* x mn)))
pt9(polar pt32 (- a (/ pi 2)) l1)
)
(command "circle" pt_c "d" da)
(command "zoom" "a")
(setq pt_b (list (+ (car pt32) l1) (cadr pt32)))
(command "region" "w" pt6 pt_b "")
(setq st1 (ssget "w" pt6 pt_b))
(setq pt_c1 (polar pt_c (- (/ pi 4) pi) (* 1.5 da))
pt_c2 (polar pt_c (/ pi 4) (* 1.5 da))
)
(command "region" "w" pt_c1 pt_c2 "")
(setq st2 (ssget "w" pt_c1 pt_c2))
(setq degree (/ 360 ang))
(setq j 0)
(setq step (* (/ ang 360) pi d))
(while (< j degree)
(setq pt91 (polar pt8 0 (* j step)))
(command "rotate" st2 "" pt_c ang)
(command "copy" st1 "" pt9 pt91)
(setq st3 (ssget "L"))
(command "subtract" st2 "" st3 "")
(setq j (+ j 1))
)
)
这一句错了。
(setq a(/ pi 9)
d(* mt z)
da (abs (+ d (* -2 (* (+ ha x) mn))));错误处
dj (+ d (* mt x))
p(* pi mt)
h(* mt (+ ha 0.25))
hf (* mt h)
)
程序很不错,模拟了插齿机的加工过程。不错,你一定能编出好程序。希望你多看些LISP书,最好用VL编程。少用COMMAND命令。
插刀的齿顶和底用圆弧过渡就好了。加工的齿轮就光滑了。
多谢tcsl大哥的帮助和鼓励!这个程序还有很多地方有待完善,接触编程时间不长,还有很多要学习的,谢谢tcsl大哥的建议~~~ 程序过了吧?
页:
[1]
2