明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 911|回复: 12

[提问] done_dialog疑问

[复制链接]
发表于 2023-8-2 14:11:58 | 显示全部楼层 |阅读模式
(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)

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

发表于 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

回复 支持 1 反对 0

使用道具 举报

发表于 2023-8-2 20:47:04 来自手机 | 显示全部楼层
aCt ion-tile   OK,cancel可以不写,默认点了返回1/0,反正都要结束对话框,根据返回值为1执行(s_rect)就行
回复 支持 1 反对 0

使用道具 举报

发表于 2023-8-2 20:38:03 | 显示全部楼层
  1. (defun c:tt ()
  2.   (setq dcl_id (load_dialog "dcl.dcl"))
  3.   (new_dialog "cx" dcl_id)
  4.   (action_tile "accept" "(s_rect)(setq dd (done_dialog))")
  5.   (action_tile "cancel" "(setq dd(done_dialog 0))")
  6.   (start_dialog)
  7.   (unload_dialog dcl_id)
  8.   (cond        ((= dd 0) (princ "no"))
  9.         (t (princ "ok"))
  10.   )
  11.   (princ)
  12. )

评分

参与人数 1明经币 +1 收起 理由
oyxx1023 + 1 很给力!

查看全部评分

回复 支持 1 反对 0

使用道具 举报

发表于 2023-8-2 14:33:27 | 显示全部楼层
抠搜的 你这代码太少了 正常要通过 start_dialog 的返回值来判断运行什么  (action_tile "accept" "(s_rect)(done_dialog)")这里的done_dialog后也没给值 返回的就是0
回复 支持 1 反对 0

使用道具 举报

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

哈哈  怕被别人偷学
 楼主| 发表于 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"))))
)
 楼主| 发表于 2023-8-3 10:59:53 | 显示全部楼层
 楼主| 发表于 2023-8-3 11:01:12 | 显示全部楼层
飞雪神光 发表于 2023-8-2 14:33
抠搜的 你这代码太少了 正常要通过 start_dialog 的返回值来判断运行什么  (action_tile "accept" "(s_rect ...

不是抠搜,是不会哈。谢谢回复!
 楼主| 发表于 2023-8-3 11:03:38 | 显示全部楼层
wzg356 发表于 2023-8-2 20:47
aCt ion-tile   OK,cancel可以不写,默认点了返回1/0,反正都要结束对话框,根据返回值为1执行(s_rect)就 ...

好的,谢谢。。。。。
 楼主| 发表于 2023-8-3 23:09:28 | 显示全部楼层

测试了一下你的代码,不管点确定还是取消都是输出ok,检查dd变量都是一个坐标值,应该是对话框对上角的坐标值。
然后把你的(start_dialog)改成(setq a (start_dialog)),再用a的值来判断,返回的才是ok或no。
CAD2018下测试。不知道是不是和CAD版本有关系?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-17 00:19 , Processed in 0.184987 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表