设为首页收藏本站

晓东CAD家园-论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 62|回复: 5

[求助] 拖动过程如何避免闪烁

[复制链接]

签到天数: 111 天

连续签到: 1 天

[LV.6]常住居民II

已领礼包: 56个

财富等级: 招财进宝

发表于 2017-8-11 21:40:43 | 显示全部楼层 |阅读模式

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

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

x
我这个代码想实现在拖动过程中,支持一键回车,可能代码写的有点问题,在按S键时会闪烁
给指点一下,另外xdrx_inget放到那里比较合适,回调函数内,还是xdrx_drag_jig
  1. (defun c:tt (/ e loop mark p1 promptstr rtn1 dragtable)
  2.   (setq e (car(entsel)))
  3.   (vl-acad-defun 'dragtable)
  4.   (defun dragtable (p)
  5.     (xdrx_initget "S")   
  6.     (xdrx_setpropertyvalue e "position" p)
  7.   )
  8.   (setq p1 (getvar "lastpoint"))
  9.   (setq loop t)
  10.   (setq mark nil)
  11.   (if mark
  12.     (setq promptstr "\nÑ¡Ôñ±í¸ñ2åèëμã,μ±Ç°í¬ê±±ê×¢·¿¼äÄú2¿<SÇD»»>: ")
  13.     (setq promptstr "\nÑ¡Ôñ±í¸ñ2åèëμã,μ±Ç°½öêä3ö±í¸ñ<SÇD»»>: ")
  14.   )
  15.   (while loop
  16.     (setq rtn1
  17.            (xdrx_drag_jig
  18.              ;; Name of callback - finction
  19.              "dragtable"
  20.              ;; Prompt string
  21.              promptstr
  22.              ;; Keyword string
  23.              "S"
  24.              ;; Input flag
  25.              (+ 2 128 2048)
  26.              ;; Allow entering empty and 3D-points
  27.              ;; Cursor type
  28.              0
  29.              ;;  RubberBand
  30.              ;; Base point (in UCS)
  31.              p1
  32.            )
  33.     )
  34.     (if        (equal rtn1 "S")
  35.       (if mark
  36.         (progn
  37.           (setq mark nil)
  38.           (setq promptstr "\nÑ¡Ôñ±í¸ñ2åèëμã,μ±Ç°½öêä3ö±í¸ñ<SÇD»»>: ")
  39.         )
  40.         (progn
  41.           (setq mark t)
  42.           (setq
  43.             promptstr "\nÑ¡Ôñ±í¸ñ2åèëμã,μ±Ç°í¬ê±±ê×¢·¿¼äÄú2¿<SÇD»»>: "
  44.           )
  45.         )
  46.       )
  47.       (setq loop nil)
  48.     )
  49.   )

  50.   (REDRAW)  
  51.   (xdrx_initget)  
  52. )






上一篇:xdrx_setpropertyvalue开源吗?
下一篇:xdrx_drag_jig建议
0011.gif
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复
百度谷歌雅虎搜狗搜搜有道360奇虎

使用道具 举报

签到天数: 893 天

连续签到: 13 天

[LV.10]以坛为家III

已领礼包: 39个

财富等级: 招财进宝

发表于 2017-8-11 23:13:15 | 显示全部楼层

(xdrx_initget "S") 这个函数完成的是
(initget "S") + 一键回车的初始设置,而且这个函数要通过 (xdrx_end) 来消除作用,并且下一个xdrx_init的调用抹除前一个的。

如果你的程序有好几个地方要用 不同的关键字组合去交互,那么你就要保证在你当前的getXXXX函数前调用这个函数

比如

(xdrx_initget "S")
(while (setq a (getstring "...[XX(S]"))
    (progn
       ...
       (xdrx_initget "A")
       (if (setq b (getstring "....XX(A)"))
          (progn
             ....
          )
       )
    )
)

这种情况,循环第二次时候,S就失去作用了。

要继续使得S起作用,那 xdrx_initget就要放循环里面。


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

使用道具 举报

签到天数: 893 天

连续签到: 13 天

[LV.10]以坛为家III

已领礼包: 39个

财富等级: 招财进宝

发表于 2017-8-11 23:15:39 | 显示全部楼层
本帖最后由 newer 于 2017-8-11 23:18 编辑

拖动闪烁,这个以前讨论过,可以搜索下。

这个避免不了,是AcGeJig类的特性

如果想不闪烁,可以用点监视器xdrx_pointmointor实现拖到,具体你可以去看看开源函数库里面的

xd::drag:Gmove (这个强大,支持你自定义回调函数)
xd::doc:simplemove函数

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

使用道具 举报

签到天数: 111 天

连续签到: 1 天

[LV.6]常住居民II

已领礼包: 56个

财富等级: 招财进宝

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

使用道具 举报

签到天数: 111 天

连续签到: 1 天

[LV.6]常住居民II

已领礼包: 56个

财富等级: 招财进宝

 楼主| 发表于 2017-8-12 11:05:49 | 显示全部楼层
  1. (setq rtn1
  2.            (xdrx_drag_jig
  3.              ;; Name of callback - finction
  4.              "dragtable"
  5.              ;; Prompt string
  6.              promptstr
  7. ;;;             "\nÑ¡Ôñ±í¸ñ2åèëμã[êÇ·ñí¬ê±±ê×¢·¿¼äÄú]<SêÇ>: "
  8.              ;; Keyword string
  9.              "S"
  10.              ;; Input flag
  11.              (+ 4 128 256 2048)
  12.              ;; Allow entering empty and 3D-points
  13.              ;; Cursor type
  14.              0
  15.              ;;  RubberBand
  16.              ;; Base point (in UCS)
  17.              p1
  18.            )
  19.     )

input flag 已经设值4,为什么按esc键仍然退出?此时rtn1返回值为-4,但是在回到函数中(if (equal rtn1 -4)(vla-erase vlatbl))无法删除,本意是如果用户退出,则删除原来的图元,如何实现?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 111 天

连续签到: 1 天

[LV.6]常住居民II

已领礼包: 56个

财富等级: 招财进宝

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

使用道具 举报

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

本版积分规则

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

辽公网安备 21040202000005号

GMT+8, 2018-1-19 01:24 , Processed in 0.523537 second(s), 82 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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