明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 8436|回复: 17

[函数] 【函数分享】利用GRREAD写的--超级GETPOINT函数.

[复制链接]
发表于 2013-6-4 11:27 | 显示全部楼层 |阅读模式
;;;============={  超级getpoint函数 BY-wowan1314  }=======================;;
;;功能:得到鼠标点击位置坐标,如果按键就返回按键值。
;;用法:(YY:getpoint '(NIL 5 0))
;;参数:表。 表内元素同GRREAD函数的参数意义.
;;返回值:PT或STR.  PT是左键点击时鼠标坐标点,STR是按键的值.
;;用途:尚不明确。
  1. ;;;============={  超级getpoint函数 BY-wowan1314  }=======================;;
  2. ;;功能:得到鼠标点击位置坐标,如果按键就返回按键值。
  3. ;;用法:(YY:getpoint '(NIL 5 0))
  4. ;;参数:表。 表内元素同GRREAD函数的参数意义.
  5. ;;返回值:PT或STR.  PT是左键点击时鼠标坐标点,STR是按键的值.
  6. ;;用途:尚不明确。
  7. (DEFUN YY:getpoint (LST / LOOP CODE)
  8. (setq loop T)
  9. (while loop
  10.   (setq code (APPLY 'grread LST))
  11.   (cond
  12.     ((= (car code) 5)     NIL )                                       ;;; 鼠标移动
  13.     ((= (car code) 3)     (SETQ LOOP NIL CODE (CADR CODE)))           ;;; 鼠标左键
  14.     ((= (car code) 11)    (SETQ LOOP NIL CODE NIL))                   ;;; 鼠标右键,右键设置为回车时
  15.     ((= (car code) 25)    (SETQ LOOP NIL CODE NIL))                   ;;; 鼠标右键,右键设置为屏幕菜单时
  16.     ((equal code '(2 0))  (SETQ LOOP NIL CODE "CTRL-@"))              ;;; CTRL-@
  17.     ((equal code '(2 1))  (SETQ LOOP NIL CODE "CTRL-A"))              ;;; CTRL-A
  18.     ((equal code '(2 2))  (SETQ LOOP NIL CODE "CTRL-B或F9"))          ;;; CTRL-B或F9
  19.     ((equal code '(2 3))  (SETQ LOOP NIL CODE "CTRL-C或F12"))         ;;; CTRL-C或F12
  20.     ((equal code '(2 4))  (SETQ LOOP NIL CODE "CTRL-D或F6"))          ;;; CTRL-D或F6
  21.     ((equal code '(2 5))  (SETQ LOOP NIL CODE "CTRL-E或F5"))          ;;; CTRL-E或F5
  22.     ((equal code '(2 6))  (SETQ LOOP NIL CODE "CTRL-F或F3"))          ;;; CTRL-F或F3
  23.     ((equal code '(2 7))  (SETQ LOOP NIL CODE "CTRL-G或F7"))          ;;; CTRL-G或F7
  24.     ((equal code '(2 8))  (SETQ LOOP NIL CODE "CTRL-H或退格"))        ;;; CTRL-H或退格
  25.     ((equal code '(2 9))  (SETQ LOOP NIL CODE "CTRL-I或TAB"))         ;;; CTRL-I或Tab
  26.     ((equal code '(2 10)) (SETQ LOOP NIL CODE "CTRL-J"))              ;;; CTRL-J
  27.     ((equal code '(2 11)) (SETQ LOOP NIL CODE "CTRL-K"))              ;;; CTRL-K
  28.     ((equal code '(2 12)) (SETQ LOOP NIL CODE "CTRL-L"))              ;;; CTRL-L
  29.     ((equal code '(2 13)) (SETQ LOOP NIL CODE "CTRL-M或回车"))        ;;; CTRL-M或回车
  30.     ((equal code '(2 14)) (SETQ LOOP NIL CODE "CTRL-N"))              ;;; CTRL-N
  31.     ((equal code '(2 15)) (SETQ LOOP NIL CODE "CTRL-O或F8"))          ;;; CTRL-O或F8
  32.     ((equal code '(2 16)) (SETQ LOOP NIL CODE "CTRL-P"))              ;;; CTRL-P
  33.     ((equal code '(2 17)) (SETQ LOOP NIL CODE "CTRL-Q"))              ;;; CTRL-Q
  34.     ((equal code '(2 18)) (SETQ LOOP NIL CODE "CTRL-R"))              ;;; CTRL-R
  35.     ((equal code '(2 19)) (SETQ LOOP NIL CODE "CTRL-S"))              ;;; CTRL-S
  36.     ((equal code '(2 20)) (SETQ LOOP NIL CODE "CTRL-I或F4"))          ;;; CTRL-T或F4
  37.     ((equal code '(2 21)) (SETQ LOOP NIL CODE "CTRL-U或F10"))         ;;; CTRL-U或F10
  38.     ((equal code '(2 22)) (SETQ LOOP NIL CODE "CTRL-V"))              ;;; CTRL-V
  39.     ((equal code '(2 23)) (SETQ LOOP NIL CODE "CTRL-W或F11"))         ;;; CTRL-W或F11
  40.     ((equal code '(2 24)) (SETQ LOOP NIL CODE "CTRL-X"))              ;;; CTRL-X
  41.     ((equal code '(2 25)) (SETQ LOOP NIL CODE "CTRL-Y"))              ;;; CTRL-Y
  42.     ((equal code '(2 26)) (SETQ LOOP NIL CODE "CTRL-Z"))              ;;; CTRL-Z
  43.     ((equal code '(2 27)) (SETQ LOOP NIL CODE "CTRL-[或ESC"))         ;;; CTRL-[或ESC
  44.     ((equal code '(2 28)) (SETQ LOOP NIL CODE "CTRL-反斜杠"))         ;;; CTRL-\
  45.     ((equal code '(2 29)) (SETQ LOOP NIL CODE "CTRL-]"))              ;;; CTRL-]
  46.     ((equal code '(2 30)) (SETQ LOOP NIL CODE "CTRL-^"))              ;;; CTRL-^
  47.     ((equal code '(2 31)) (SETQ LOOP NIL CODE "CTRL-_"))              ;;; CTRL-_
  48.     ((equal code '(2 32)) (SETQ LOOP NIL CODE "空格"))                ;;; 空格键
  49.     ((equal code '(2 33)) (SETQ LOOP NIL CODE "!"))                   ;;; !键
  50.     ((equal code '(2 34)) (SETQ LOOP NIL CODE "双引号"))              ;;; "键
  51.     ((equal code '(2 35)) (SETQ LOOP NIL CODE "#"))                   ;;; #键
  52.     ((equal code '(2 36)) (SETQ LOOP NIL CODE "$"))                   ;;; $键
  53.     ((equal code '(2 37)) (SETQ LOOP NIL CODE "%"))                    ;;; %键
  54.     ((equal code '(2 38)) (SETQ LOOP NIL CODE "&"))                   ;;; &键
  55.     ((equal code '(2 39)) (SETQ LOOP NIL CODE "单引号"))              ;;; '键
  56.     ((equal code '(2 40)) (SETQ LOOP NIL CODE "("))                   ;;; (键
  57.     ((equal code '(2 41)) (SETQ LOOP NIL CODE ")"))              ;;; )键
  58.     ((equal code '(2 42)) (SETQ LOOP NIL CODE "星号"))                ;;; *键
  59.     ((equal code '(2 43)) (SETQ LOOP NIL CODE "+"))                   ;;; +键
  60.     ((equal code '(2 44)) (SETQ LOOP NIL CODE ","))                   ;;; ,键
  61.     ((equal code '(2 45)) (SETQ LOOP NIL CODE "-"))                   ;;; -键
  62.     ((equal code '(2 46)) (SETQ LOOP NIL CODE "点"))                  ;;; .键
  63.     ((equal code '(2 47)) (SETQ LOOP NIL CODE "/"))                   ;;; /键
  64.     ((equal code '(2 48)) (SETQ LOOP NIL CODE "0"))                   ;;; 0键
  65.     ((equal code '(2 49)) (SETQ LOOP NIL CODE "1"))                   ;;; 1键
  66.     ((equal code '(2 50)) (SETQ LOOP NIL CODE "2"))                   ;;; 2键
  67.     ((equal code '(2 51)) (SETQ LOOP NIL CODE "3"))                   ;;; 3键
  68.     ((equal code '(2 52)) (SETQ LOOP NIL CODE "4"))                   ;;; 4键
  69.     ((equal code '(2 53)) (SETQ LOOP NIL CODE "5"))                   ;;; 5键
  70.     ((equal code '(2 54)) (SETQ LOOP NIL CODE "6"))                   ;;; 6键
  71.     ((equal code '(2 55)) (SETQ LOOP NIL CODE "7"))                   ;;; 7键
  72.     ((equal code '(2 56)) (SETQ LOOP NIL CODE "8"))                   ;;; 8键
  73.     ((equal code '(2 57)) (SETQ LOOP NIL CODE "9"))                   ;;; 9键
  74.     ((equal code '(2 58)) (SETQ LOOP NIL CODE "冒号"))                ;;; :键
  75.     ((equal code '(2 59)) (SETQ LOOP NIL CODE "分号"))                ;;; ;键
  76.     ((equal code '(2 60)) (SETQ LOOP NIL CODE "小于号"))              ;;; <键
  77.     ((equal code '(2 61)) (SETQ LOOP NIL CODE "等号"))                ;;; =键
  78.     ((equal code '(2 62)) (SETQ LOOP NIL CODE "大于号"))              ;;; >键
  79.     ((equal code '(2 63)) (SETQ LOOP NIL CODE "问号"))                ;;; ?键
  80.     ((equal code '(2 64)) (SETQ LOOP NIL CODE "@"))                   ;;; @键
  81.     ((equal code '(2 65)) (SETQ LOOP NIL CODE "A"))                   ;;; A键
  82.     ((equal code '(2 66)) (SETQ LOOP NIL CODE "B"))                   ;;; B键
  83.     ((equal code '(2 67)) (SETQ LOOP NIL CODE "C"))                   ;;; C键
  84.     ((equal code '(2 68)) (SETQ LOOP NIL CODE "D"))                   ;;; D键
  85.     ((equal code '(2 69)) (SETQ LOOP NIL CODE "E"))                   ;;; E键
  86.     ((equal code '(2 70)) (SETQ LOOP NIL CODE "F"))                   ;;; F键
  87.     ((equal code '(2 71)) (SETQ LOOP NIL CODE "G"))                   ;;; G键
  88.     ((equal code '(2 72)) (SETQ LOOP NIL CODE "H"))                   ;;; H键
  89.     ((equal code '(2 73)) (SETQ LOOP NIL CODE "I"))                   ;;; I键
  90.     ((equal code '(2 74)) (SETQ LOOP NIL CODE "J"))                   ;;; J键
  91.     ((equal code '(2 75)) (SETQ LOOP NIL CODE "K"))                   ;;; K键
  92.     ((equal code '(2 76)) (SETQ LOOP NIL CODE "L"))                   ;;; L键
  93.     ((equal code '(2 77)) (SETQ LOOP NIL CODE "M"))                   ;;; M键
  94.     ((equal code '(2 78)) (SETQ LOOP NIL CODE "N"))                   ;;; N键
  95.     ((equal code '(2 79)) (SETQ LOOP NIL CODE "O"))                   ;;; O键
  96.     ((equal code '(2 80)) (SETQ LOOP NIL CODE "P"))                   ;;; P键
  97.     ((equal code '(2 81)) (SETQ LOOP NIL CODE "Q"))                   ;;; Q键
  98.     ((equal code '(2 82)) (SETQ LOOP NIL CODE "R"))                   ;;; R键
  99.     ((equal code '(2 83)) (SETQ LOOP NIL CODE "S"))                   ;;; S键
  100.     ((equal code '(2 84)) (SETQ LOOP NIL CODE "T"))                   ;;; T键
  101.     ((equal code '(2 85)) (SETQ LOOP NIL CODE "U"))                   ;;; U键
  102.     ((equal code '(2 86)) (SETQ LOOP NIL CODE "V"))                   ;;; V键
  103.     ((equal code '(2 87)) (SETQ LOOP NIL CODE "W"))                   ;;; W键
  104.     ((equal code '(2 88)) (SETQ LOOP NIL CODE "X"))                   ;;; X键
  105.     ((equal code '(2 89)) (SETQ LOOP NIL CODE "Y"))                   ;;; Y键
  106.     ((equal code '(2 90)) (SETQ LOOP NIL CODE "Z"))                   ;;; Z键
  107.     ((equal code '(2 91)) (SETQ LOOP NIL CODE "["))                   ;;; [键
  108.     ((equal code '(2 92)) (SETQ LOOP NIL CODE "反斜杠"))              ;;; \键
  109.     ((equal code '(2 93)) (SETQ LOOP NIL CODE "]"))                ;;; ]键
  110.     ((equal code '(2 94)) (SETQ LOOP NIL CODE "^"))                   ;;; ^键
  111.     ((equal code '(2 95)) (SETQ LOOP NIL CODE "_"))                   ;;; _键
  112.     ((equal code '(2 96)) (SETQ LOOP NIL CODE "单引号"))              ;;; `键
  113.     ((equal code '(2 97)) (SETQ LOOP NIL CODE "a"))                   ;;; a键
  114.     ((equal code '(2 98)) (SETQ LOOP NIL CODE "b"))                   ;;; b键
  115.     ((equal code '(2 99)) (SETQ LOOP NIL CODE "c"))                   ;;; c键
  116.     ((equal code '(2 100))(SETQ LOOP NIL CODE "d"))                   ;;; d键
  117.     ((equal code '(2 101))(SETQ LOOP NIL CODE "e"))                   ;;; e键
  118.     ((equal code '(2 102))(SETQ LOOP NIL CODE "f"))                   ;;; f键
  119.     ((equal code '(2 103))(SETQ LOOP NIL CODE "g"))                   ;;; g键
  120.     ((equal code '(2 104))(SETQ LOOP NIL CODE "h"))                   ;;; h键
  121.     ((equal code '(2 105))(SETQ LOOP NIL CODE "i"))                   ;;; i键
  122.     ((equal code '(2 106))(SETQ LOOP NIL CODE "j"))                   ;;; j键
  123.     ((equal code '(2 107))(SETQ LOOP NIL CODE "k"))                   ;;; k键
  124.     ((equal code '(2 108))(SETQ LOOP NIL CODE "l"))                   ;;; l键
  125.     ((equal code '(2 109))(SETQ LOOP NIL CODE "m"))                   ;;; m键
  126.     ((equal code '(2 110))(SETQ LOOP NIL CODE "n"))                   ;;; n键
  127.     ((equal code '(2 111))(SETQ LOOP NIL CODE "o"))                   ;;; o键
  128.     ((equal code '(2 112))(SETQ LOOP NIL CODE "p"))                   ;;; p键
  129.     ((equal code '(2 113))(SETQ LOOP NIL CODE "q"))                   ;;; q键
  130.     ((equal code '(2 114))(SETQ LOOP NIL CODE "r"))                   ;;; r键
  131.     ((equal code '(2 115))(SETQ LOOP NIL CODE "s"))                   ;;; s键
  132.     ((equal code '(2 116))(SETQ LOOP NIL CODE "t"))                   ;;; t键
  133.     ((equal code '(2 117))(SETQ LOOP NIL CODE "u"))                   ;;; u键
  134.     ((equal code '(2 118))(SETQ LOOP NIL CODE "v"))                   ;;; v键
  135.     ((equal code '(2 119))(SETQ LOOP NIL CODE "w"))                   ;;; w键
  136.     ((equal code '(2 120))(SETQ LOOP NIL CODE "x"))                   ;;; x键
  137.     ((equal code '(2 121))(SETQ LOOP NIL CODE "y"))                   ;;; y键
  138.     ((equal code '(2 122))(SETQ LOOP NIL CODE "z"))                   ;;; z键
  139.     ((equal code '(2 123))(SETQ LOOP NIL CODE "大开括号"))            ;;; {键
  140.     ((equal code '(2 124))(SETQ LOOP NIL CODE "|"))                ;;; |键
  141.     ((equal code '(2 125))(SETQ LOOP NIL CODE "大闭括号"))            ;;; }键
  142.     ((equal code '(2 126))(SETQ LOOP NIL CODE "~"))                   ;;; ~键
  143.     ((equal code '(2 127))(SETQ LOOP NIL CODE "删除键"))              ;;; Delete键
  144.   )
  145. )
  146. CODE
  147. )      ;;;END DEFUN
主要参考文献: 风之影--GRREAD函数之大杀器.
地址:[风之影][源码]grread函数之大杀器
http://bbs.mjtd.com/forum.php?mo ... 0839&fromuid=282351

评分

参与人数 2明经币 +2 收起 理由
crazylsp + 1 赞一个! 书写清晰
cnks + 1 再给你加回来~_~

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下

本帖被以下淘专辑推荐:

 楼主| 发表于 2013-6-4 11:29 | 显示全部楼层
沙发我坐!
函数用途:
1、既然是超级GETPOINT。 我想他可代替initget+getpoint组合。实时响应关键词。写法:(YY:getpoint '(nil 5 0))
     (不过此GRREAD函数不支持捕捉,可利用G版的带捕捉的GRREAD函数来改造下。)
2、可代替initget+getkword组合。 实时响应关键词。写法:(YY:getpoint '(nil 5 1))
3、可改造initget+entsel组合。 使其关键词实时响应。写法:(YY:getpoint '(nil 5 2))
。。其他用途还待研究。
发表于 2013-6-4 11:55 | 显示全部楼层
先来顶一下

评分

参与人数 1明经币 +1 收起 理由
wowan1314 + 1 谢谢支持!奖励下!哈哈

查看全部评分

 楼主| 发表于 2013-6-4 12:04 | 显示全部楼层
看来大家不是很喜欢!
我觉的对于优化程序还是有点用处的!
发表于 2013-6-4 12:11 | 显示全部楼层
wowan1314 发表于 2013-6-4 12:04
看来大家不是很喜欢!
我觉的对于优化程序还是有点用处的!

很好的想法啊,只不过懂的人不愿意发言,不懂的人毫无用处,所以反应冷淡
发表于 2013-6-4 13:15 | 显示全部楼层
不错。先收藏,总会有用的。
发表于 2013-6-4 14:15 | 显示全部楼层
来点实际的啊,哈哈,先顶着吧 ,
发表于 2013-6-4 14:26 | 显示全部楼层
不支持捕捉的GETpoint,还是少用为妙,即便是GU版的GRREAD,也还是有些小问题的(有时速度慢)

点评

完全同意,能不用GRREAD选点尽量不用。  发表于 2014-6-15 17:45
发表于 2013-6-4 17:01 | 显示全部楼层
我喜欢 不过我建议在参数里传递函数 这样鼠标移动的行为也能定制了 想捕捉也问题不大了
或者干脆把循环去掉 用的时候移到外面 何时停止循环全部自定义更合适
发表于 2013-6-6 07:56 | 显示全部楼层
我顶楼主!感谢大侠的源码分享!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-7 23:20 , Processed in 0.429681 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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