找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 639|回复: 15

[求助] 如何监测鼠标是否静止或移动????

[复制链接]
发表于 2018-2-18 09:10:54 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 挚友01 于 2018-2-18 09:12 编辑

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

已领礼包: 19个

财富等级: 恭喜发财

发表于 2018-2-18 11:50:24 | 显示全部楼层
如你所说,那没信息,就是没移动呗。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-2-18 12:02:23 | 显示全部楼层
楼主到底想做什么?

grread的帮助文档

  1. (grread [track] [allkeys [curtype]])
  2. 只有特殊用途的 AutoLISP 应用程序才需调用本函数,AutoLISP 的大多数输入应使用各种 getxxx 函数来完成。

  3. 参数

  4. track

  5. 如果提供该参数且其值不为 nil,则输入设备移动时,本函数能从定点设备中返回坐标。

  6. allkeys

  7. 整数型,决定 grread 要执行的功能。allkeys 的几个位值相加可以获得组合功能。可以指定如下值:

  8. 1 (位0) 返回“拖动模式”坐标。如果设置了该位,而且用户只是移动定点设备而没有按下按钮或键盘,grread 函数就返回一个表,其第一个成员是类型代码 5,第二个成员是当前定点设备(鼠标或数字化仪)的位置坐标 (X,Y),这就是 AutoCAD 实现拖动的方法。
复制代码


这个函数就是做你想要的,只要移动鼠标就返回一个表。

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

使用道具 举报

 楼主| 发表于 2018-2-18 16:10:15 | 显示全部楼层
我想要做的是,在鼠标静止时,十字光标是一种图案,移动后将转换成另一种图案,(grread函数移动后才返回状态,不移动了就....
(setq n nil)
(while n
  (setq a (grread...
    (if (= (car a) 5)
      (progn
         移动了。。。
     )
.....
    不移动呢,怎么判断....
   
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2018-2-18 16:53:46 | 显示全部楼层

你循环前设个变量,循环体里面,移动后,把移动信息写到变量里面。循环里面判断,如果变量没变,就说明没移动。变了就说明移动了。



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

使用道具 举报

 楼主| 发表于 2018-2-18 17:32:37 | 显示全部楼层
可静止时(grread不返回任何信息(停着呢),用(grread监测不到....
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5060个

财富等级: 富甲天下

发表于 2018-2-18 19:14:46 来自手机 | 显示全部楼层
用arx 类似左下角的坐标位置实时显示
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2018-2-18 21:03:30 | 显示全部楼层

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

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2018-2-18 21:06:27 | 显示全部楼层
  1. (defun c:tt()
  2.   (setq laststate nil)
  3.   (while (setq a (grread 1 .....))
  4.     (if (not (equal a laststate))
  5.       (progn
  6.         ....鼠标移动了
  7.       )
  8.       (progn
  9.         ....没动
  10.       )
  11.     )
  12.     (setq laststate a)
  13.   )
  14.   ....
  15. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6056个

财富等级: 富甲天下

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

使用道具 举报

 楼主| 发表于 2018-2-19 18:25:18 | 显示全部楼层
不行,只有(grread 1无论是静止或移动都要不断返回状态信息才可以实际"十字光标是一种图案,移动后将转换成另一种图案"
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-2-19 22:02:16 | 显示全部楼层

给你的是个思路,当前状态如何和前一个状态比较,你适当修改下就可以了
你把上面HK的代码,加入到循环里面就行了,注意要加入循环结束的条件。
(setq loop t)
(while loop
   ...
)


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

使用道具 举报

 楼主| 发表于 2018-2-20 15:20:23 | 显示全部楼层
本帖最后由 挚友01 于 2018-2-20 15:22 编辑

(while (setq pt1 (grread 1))
   (setq qpt2 (cadr pt1))
   (if (and (equal (setq qpt4 (getvar "LASTPOINT")) qpt2) ss_2008)
      (progn
        (setq n_n_dF nil)
        (while n_n_dF
          (setq qpt6 (cadr (grread 1)))       ;******到这系统就要等待鼠标动作,停下来了,实际我想要做到的是鼠标静止时要进入一个循环,不断显示某个图标,关建的是进入循环的出口, (cadr (grread 1))试过,不行,他要等待用户的动作....
;(prin1 qpt2)(prin1 " ")(prin1 qpt4)(prin1 " ")(prin1 (getvar "LASTPOINT"))(prin1 " ")(terpri)
(if (not (equal qpt6 qpt2))(setq n_n_dF nil))
;(equal (distance qpt5 (setq qpt6 (cadr (grread 1)))) 0 1)  ;n_n_dF ;(equal (cadr (grread 1))(getvar "LASTPOINT"))
;(prin1 qpt2)(prin1 " ")(prin1 (cadr (grread 1)))(prin1 (distance qpt2 (cadr (grread 1))))(terpri)
        ;(prin1 " ")(prin1 qpt4)(prin1 " ")(prin1 (getvar "LASTPOINT"))
          (if (null t1)(setq t1 (atoi (substr (rtos (getvar "CDATE") 2 8) 16 2))))
          (setq t2 (atoi (substr (rtos (getvar "CDATE") 2 8) 16 2)))
          (if (> t1 t2)
            (setq t3 (- 100 t1) t4 (+ t3 t2))
            (setq t4 (- t2 t1))
          )
;(prin1 ss_2008)(prin1 t4)(terpri)
          (if (> t4 20)
            (progn
              (cond ((= "DISP_POINT1" (strcase (cdr (assoc 2 (entget ss_2008)))))
                       (entmod (subst (cons (car (assoc 2 (entget ss_2008))) "DISP_POINT2")(assoc 2 (entget ss_2008)) (entget ss_2008)))
                    )
                    ((= "DISP_POINT2" (strcase (cdr (assoc 2 (entget ss_2008)))))
                       (entmod (subst (cons (car (assoc 2 (entget ss_2008))) "DISP_POINT3")(assoc 2 (entget ss_2008)) (entget ss_2008)))
                    )
                    ((= "DISP_POINT3" (strcase (cdr (assoc 2 (entget ss_2008)))))
                       (entmod (subst (cons (car (assoc 2 (entget ss_2008))) "DISP_POINT22")(assoc 2 (entget ss_2008)) (entget ss_2008)))
                    )
                    ((= "DISP_POINT22" (strcase (cdr (assoc 2 (entget ss_2008)))))
                       (entmod (subst (cons (car (assoc 2 (entget ss_2008))) "DISP_POINT1")(assoc 2 (entget ss_2008)) (entget ss_2008)))
                    )
               )
               (entmod (subst (cons (car (assoc 10 (entget ss_2008))) qpt2)(assoc 10 (entget ss_2008)) (entget ss_2008)))
               (setq h (* 30 (/ (getvar "viewsize") (cadr (getvar "screensize")))(getvar "pickbox")))
               (entmod (subst (cons (car (assoc 41 (entget ss_2008))) h)(assoc 41 (entget ss_2008)) (entget ss_2008)))
               (entmod (subst (cons (car (assoc 42 (entget ss_2008))) h)(assoc 42 (entget ss_2008)) (entget ss_2008)))
               (setq t1 t2)              
           ) )
           ;(if (grread 1)(setq n_n_dF nil))
           ;(if (not (equal (cadr (grread 1)) (getvar "LASTPOINT")))(setq n_n_dF nil))
           (setq qpt2 qpt6)
        )
     )
     (progn
       (setq t1 nil t2 nil)
       (cond ((= (car pt1) 5)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2018-2-20 16:01:30 | 显示全部楼层

你不用把 grread 放到循环的判断条件,设置一个变量,循环体里面根据条件修改这个变量来作为循环继续与否的条件
(setq loop t)
(while loop
     .....
     (if 结束循环
         (setq loop nil)
     )
)

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-28 18:50 , Processed in 0.489573 second(s), 56 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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