oyxx1023 发表于 2023-8-2 14:11:58

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)

运行这段代码的时候,点取消按钮也会执行主程序(相当于点确定),是咋回事?

wzg356 发表于 2023-8-4 15:26:50


(done_dialog n)返回对话框于屏幕左上角坐标,在new_dialog 时可以使用用于指定对话框位置
n是点击相应bottom的响应值,最终在 (start_dialog)记录返回,其中点击accept/cancel默认n为1/0,有cancel则点击x关闭--- (start_dialog)也返回0

wzg356 发表于 2023-8-2 20:47:04

aCt ion-tile   OK,cancel可以不写,默认点了返回1/0,反正都要结束对话框,根据返回值为1执行(s_rect)就行

xyp1964 发表于 2023-8-2 20:38:03

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

飞雪神光 发表于 2023-8-2 14:33:27

抠搜的 你这代码太少了 正常要通过 start_dialog 的返回值来判断运行什么(action_tile "accept" "(s_rect)(done_dialog)")这里的done_dialog后也没给值 返回的就是0

liuhe 发表于 2023-8-2 17:17:30

飞雪神光 发表于 2023-8-2 14:33
抠搜的 你这代码太少了 正常要通过 start_dialog 的返回值来判断运行什么(action_tile "accept" "(s_rect ...

哈哈怕被别人偷学;P

oyxx1023 发表于 2023-8-3 10:58:27

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

oyxx1023 发表于 2023-8-3 10:59:53

xyp1964 发表于 2023-8-2 20:38


谢谢指点。:handshake

oyxx1023 发表于 2023-8-3 11:01:12

飞雪神光 发表于 2023-8-2 14:33
抠搜的 你这代码太少了 正常要通过 start_dialog 的返回值来判断运行什么(action_tile "accept" "(s_rect ...

不是抠搜,是不会哈。谢谢回复!

oyxx1023 发表于 2023-8-3 11:03:38

wzg356 发表于 2023-8-2 20:47
aCt ion-tile   OK,cancel可以不写,默认点了返回1/0,反正都要结束对话框,根据返回值为1执行(s_rect)就 ...

好的,谢谢。。。。。

oyxx1023 发表于 2023-8-3 23:09:28

xyp1964 发表于 2023-8-2 20:38


测试了一下你的代码,不管点确定还是取消都是输出ok,检查dd变量都是一个坐标值,应该是对话框对上角的坐标值。
然后把你的(start_dialog)改成(setq a (start_dialog)),再用a的值来判断,返回的才是ok或no。
CAD2018下测试。不知道是不是和CAD版本有关系?
页: [1] 2
查看完整版本: done_dialog疑问