done_dialog疑问
(setq dcl_id (load_dialog "dcl.dcl"))(new_dialog "cx" dcl_id)
(action_tile "accept" "(s_rect)(done_dialog)")
(action_tile "cancel" "(done_dialog 0)")
(start_dialog)
(unload_dialog dcl_id)
运行这段代码的时候,点取消按钮也会执行主程序(相当于点确定),是咋回事?
(done_dialog n)返回对话框于屏幕左上角坐标,在new_dialog 时可以使用用于指定对话框位置
n是点击相应bottom的响应值,最终在 (start_dialog)记录返回,其中点击accept/cancel默认n为1/0,有cancel则点击x关闭--- (start_dialog)也返回0
aCt ion-tile OK,cancel可以不写,默认点了返回1/0,反正都要结束对话框,根据返回值为1执行(s_rect)就行 (defun c:tt ()
(setq dcl_id (load_dialog "dcl.dcl"))
(new_dialog "cx" dcl_id)
(action_tile "accept" "(s_rect)(setq dd (done_dialog))")
(action_tile "cancel" "(setq dd(done_dialog 0))")
(start_dialog)
(unload_dialog dcl_id)
(cond ((= dd 0) (princ "no"))
(t (princ "ok"))
)
(princ)
) 抠搜的 你这代码太少了 正常要通过 start_dialog 的返回值来判断运行什么(action_tile "accept" "(s_rect)(done_dialog)")这里的done_dialog后也没给值 返回的就是0 飞雪神光 发表于 2023-8-2 14:33
抠搜的 你这代码太少了 正常要通过 start_dialog 的返回值来判断运行什么(action_tile "accept" "(s_rect ...
哈哈怕被别人偷学;P liuhe 发表于 2023-8-2 17:17
哈哈怕被别人偷学
就是个取值函数,跟问题没什么关系,所以没贴上来
(DEFUN S_RECT ()
(SETQ jj (ABS (ATOF (GET_TILE "RECT_W"))))
(setq cd (ABS (ATOF (GET_TILE "RECT_H"))))
(setq zg (ABS (ATOF (GET_TILE "RECT_ZG"))))
(setq qszh (abs (atof (GET_TILE "RECT_LAY"))))
) xyp1964 发表于 2023-8-2 20:38
谢谢指点。:handshake 飞雪神光 发表于 2023-8-2 14:33
抠搜的 你这代码太少了 正常要通过 start_dialog 的返回值来判断运行什么(action_tile "accept" "(s_rect ...
不是抠搜,是不会哈。谢谢回复! wzg356 发表于 2023-8-2 20:47
aCt ion-tile OK,cancel可以不写,默认点了返回1/0,反正都要结束对话框,根据返回值为1执行(s_rect)就 ...
好的,谢谢。。。。。 xyp1964 发表于 2023-8-2 20:38
测试了一下你的代码,不管点确定还是取消都是输出ok,检查dd变量都是一个坐标值,应该是对话框对上角的坐标值。
然后把你的(start_dialog)改成(setq a (start_dialog)),再用a的值来判断,返回的才是ok或no。
CAD2018下测试。不知道是不是和CAD版本有关系?
页:
[1]
2