lenglion 发表于 2006-11-9 20:07:00

救命!对话框中提取数据-困扰菜鸟多天的问题

用lisp提取对话框中编辑框里的数据时,如何也无法给lisp中的变量赋对话框中的值。小弟刚学不久,望各位大哥不吝赐教!!!以下是对话框 文件

lenglion 发表于 2006-11-9 20:10:00

lisp文件~~~

rongyifei 发表于 2006-11-9 20:49:00

是不是你的对话框中的key值与驱动程序中get_tile的参数大小写不对应!

tcsl9621 发表于 2006-11-9 20:51:00

<P>你的“编揖框”名称是“b1”面不是“b”。</P>
<P>&nbsp;</P>
<P></P>
<P>&nbsp;</P>

tcsl9621 发表于 2006-11-9 20:55:00

你的程序最好分成几个函数,不要放到一起。这样读起来太麻烦。你才开始编程没多长时间吧?能有这水平是很不错的了。一定要好好努力。你的CAD应用水平一定很好了。好像程序还有点毛病。不能生成正确的齿轮轮廓。

lenglion 发表于 2006-11-9 21:15:00

<P>多谢指教,已经改了,但是lisp程序还是没有按对话框中的 值进行赋值,而只是使用变量的 初始值,好像act 函数没有被调用,再帮帮忙啊,多谢~~~~~</P>

tcsl9621 发表于 2006-11-9 22:30:00

我查了,赋值没有错。对话框赋值没有问题。体计是你程序的问题。请你自己再好好查一下。
以下语句有问题。我没时间去看这些齿轮的基本概念。多少年不用了。都忘了。

(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))
)
)


tcsl9621 发表于 2006-11-9 22:44:00

这一句错了。
(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命令。
插刀的齿顶和底用圆弧过渡就好了。加工的齿轮就光滑了。

lenglion 发表于 2006-11-10 17:55:00

多谢tcsl大哥的帮助和鼓励!这个程序还有很多地方有待完善,接触编程时间不长,还有很多要学习的,谢谢tcsl大哥的建议~~~

tcsl9621 发表于 2006-11-10 23:29:00

程序过了吧?
页: [1] 2
查看完整版本: 救命!对话框中提取数据-困扰菜鸟多天的问题