找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 500|回复: 9

[求助] 非模态对话框下,xdrx_drag_jig回调期间如何中断

[复制链接]

已领礼包: 58个

财富等级: 招财进宝

发表于 2017-8-19 00:58:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 brainstorm 于 2017-8-19 01:08 编辑

如下代码如何中断正在执行的回调函数,去执行 c:test/Form1/TextButton1#OnClicked

  1. (defun c:tt (/ p1 p e rtn)  (dcl-project-import
  2.     '("YWt6A/4FAAAwB6ynBuLz7UUxKj9m+KF9kkz/U3b347s4Xi7OH2m6e1XduHw7Pod9dVLeUum+3Lq4"
  3.       "qDoVy45ZBjMuBVSSUleGf1igRBxczMChDgj5jXhtmRpQsQnlR40DrS9F1F+QUyvqz/9UXH7hJf9I"
  4.       "JS6vI7hCjGY6f1tqF+qd1PJn0A1GsQfwQ7kg3vO3NOroTjTRH4Sb12efRgrCL7Nc8Cwcb/gWR5Jd"
  5.       "sA4r2vE7UgbTtxKpB9B4nSuvBfIOyqNR3ndnRRpF0uP79Vb3Zck3I71UqM+y/pBxrM9czB3GabyJ"
  6.       "+mF2qfqJ+5F1QW0AXOLw7IIliiW8MJIJryeBrYbpo1PKqjsIV5Df4QKFvBUJRTafOg3jP4Gixkc0"
  7.       "hAFyBBGBIIb9jsiO3+LZleG3h+quvov7NsGmTbNIBpKpYskxzSrIJsvpz7fPtN5VaEztxsENzcb2"
  8.       "BANxXhJD/q2DxU6/h3RUxv0nUq8YcFBbRwZdRwRbgiSG2w7bDz+ACaPsjgydZNx9NZ7UlpF0QeiG"
  9.       "oWVJC7I5v6BZmvmGAT0V/MW7gRlG8anhLP0zDgvv5XYnwhrigNG6w3Mrnd3CbRDt1KzUIDeS7Ge5"
  10.       "Exqnaccl+yFoKUdQWtRBEQAxW5Dn3rFkMXigTeB0graG1aoOMa6J54AYnkudlYwkEHbxdfF3PSDV"
  11.       "wN8gh+FtERRM4IF8xImsdw=="
  12.      )
  13.   )
  14.   (dcl-form-show test/form1)
  15.   (setq loop t)
  16.   (vl-acad-defun 'move)
  17.   (defun move (p)
  18.     (xdrx_setpropertyvalue e "center" p)
  19.   )
  20.   (setq e (car (entsel)))
  21.   (setq p1 (getvar "lastpoint"))
  22.   (while loop
  23.     (setq rtn
  24.            (xdrx_drag_jig
  25.              "move"
  26.              "选择圆心"
  27.              ""
  28.              (+ 2 128)
  29.              0
  30.              p1
  31.            )
  32.     )
  33.     (if        (eq rtn -1)
  34.       (setq loop nil)
  35.     )
  36.   )
  37. )
  38. (defun c:test/Form1/TextButton1#OnClicked (/)
  39.   (setq loop nil)
  40.   (setq en (car (entsel "\n选择圆:")))
  41. )




论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 20个

财富等级: 恭喜发财

发表于 2017-8-19 09:15:00 | 显示全部楼层
按按钮你想做什么?
试试 dcl_sendstring
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 58个

财富等级: 招财进宝

 楼主| 发表于 2017-8-19 09:21:21 来自手机 | 显示全部楼层
按钮是重新选择一个图元,(car(entsel))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 58个

财富等级: 招财进宝

 楼主| 发表于 2017-8-19 09:32:11 | 显示全部楼层

可能用xdrx_pointmonitor就可以了,按钮lclicked事件激活(xdrx_pointmonitor),
要是xdrx_drag_jig也有这样一个中断函数就好了,用起来比较方便
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2017-8-19 09:39:11 | 显示全部楼层

重新选个圆,然后拖动另外个圆?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 58个

财富等级: 招财进宝

 楼主| 发表于 2017-8-19 09:51:38 | 显示全部楼层
大概是这个意思,其实很多跟非模态对话框相关的可能都需要暂时中断
这个只是为了说明问题的一个示例。
比如这样一个应用,沿着一条曲线拖动,根据坡度计算标高,在拖动过程中突然发现需要
调整起点标高,想拾取一个表格哦文字并取得该文字值作为起点标高,这时可能调用(car(entsel))命令中断一下
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2017-8-19 09:53:15 | 显示全部楼层
本帖最后由 marting 于 2017-8-19 10:30 编辑

点按钮先发送 \n 结束拖动,
选实体后,再继续拖动新的圆,试试

  1. (defun c:tt (/ p1 p e rtn)
  2.   (dcl-project-import
  3.     '("YWt6A/4FAAAwB6ynBuLz7UUxKj9m+KF9kkz/U3b347s4Xi7OH2m6e1XduHw7Pod9dVLeUum+3Lq4"
  4.       "qDoVy45ZBjMuBVSSUleGf1igRBxczMChDgj5jXhtmRpQsQnlR40DrS9F1F+QUyvqz/9UXH7hJf9I"
  5.       "JS6vI7hCjGY6f1tqF+qd1PJn0A1GsQfwQ7kg3vO3NOroTjTRH4Sb12efRgrCL7Nc8Cwcb/gWR5Jd"
  6.       "sA4r2vE7UgbTtxKpB9B4nSuvBfIOyqNR3ndnRRpF0uP79Vb3Zck3I71UqM+y/pBxrM9czB3GabyJ"
  7.       "+mF2qfqJ+5F1QW0AXOLw7IIliiW8MJIJryeBrYbpo1PKqjsIV5Df4QKFvBUJRTafOg3jP4Gixkc0"
  8.       "hAFyBBGBIIb9jsiO3+LZleG3h+quvov7NsGmTbNIBpKpYskxzSrIJsvpz7fPtN5VaEztxsENzcb2"
  9.       "BANxXhJD/q2DxU6/h3RUxv0nUq8YcFBbRwZdRwRbgiSG2w7bDz+ACaPsjgydZNx9NZ7UlpF0QeiG"
  10.       "oWVJC7I5v6BZmvmGAT0V/MW7gRlG8anhLP0zDgvv5XYnwhrigNG6w3Mrnd3CbRDt1KzUIDeS7Ge5"
  11.       "Exqnaccl+yFoKUdQWtRBEQAxW5Dn3rFkMXigTeB0graG1aoOMa6J54AYnkudlYwkEHbxdfF3PSDV"
  12.       "wN8gh+FtERRM4IF8xImsdw=="
  13.      )
  14.   )
  15.   (dcl-form-show test/form1)
  16.   (setq loop t)
  17.   (vl-acad-defun 'move)
  18.   (defun move (p)
  19.     (xdrx_setpropertyvalue e "center" p)
  20.   )
  21.   (setq e (car (entsel)))
  22.   (setq p1 (getvar "lastpoint"))
  23.   (_drag)
  24. )
  25. (defun _drag ()
  26.   (setq p1 (getvar "lastpoint"))  (setq loop t)
  27.   (while loop
  28.     (setq rtn
  29.            (xdrx_drag_jig
  30.              "move"
  31.              "\r选择圆心:"
  32.              ""
  33.              (+ 2 128)
  34.              0
  35.              p1
  36.            )
  37.     )
  38.     (if        (eq rtn -1)
  39.       (setq loop nil)
  40.     )
  41.   )
  42.   (princ)
  43. )
  44. (defun _sel ()
  45.   (setq loop nil)
  46.   (setq e (car (entsel "\n选择圆:")))
  47.   (_drag)
  48.   (princ)
  49. )
  50. (defun c:test/Form1/TextButton1#OnClicked (/)
  51.   (dcl_sendstring "\n(_sel)\n")
  52.   (princ)
  53. )



论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 58个

财富等级: 招财进宝

 楼主| 发表于 2017-8-19 10:04:11 | 显示全部楼层
谢谢 我试试这样应用很多
如下图,插入门窗过程中 想换另一种门窗 这时需要拾取门窗样本 就需要中断
这样的功能drag_jig能实现么


window.gif
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 58个

财富等级: 招财进宝

 楼主| 发表于 2017-8-19 10:15:37 | 显示全部楼层
本帖最后由 brainstorm 于 2017-8-19 10:30 编辑

试了 重新选择圆后 cad不响应 呈死机状态 需强制退出
可以了 在(defun _drag() 加上(setq p1(getvar "lastpoint"))

原理明白就好办了 谢谢 受益很多 因为回调函数是空值时loop结束 其实就是发个空的字符串
高手思路就是不一样
真心感谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2017-8-19 10:31:25 | 显示全部楼层

代码修改了,你再试试。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-19 18:21 , Processed in 0.412440 second(s), 50 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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