明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1959|回复: 9

不用回车的keyword;超级Key_getpoint;Key_entsel

  [复制链接]
发表于 2025-7-15 21:05:28 | 显示全部楼层 |阅读模式
本帖最后由 尘缘一生 于 2025-7-18 07:13 编辑

本坛http://bbs.mjtd.com/forum.php?mo ... 83057&highlight=key
帖子有段代码,写得比较晦涩
觉得这个还是不错,完善修改一下子
2025,7.18更新,源码发布,增加Key_getpoint  Key_entsel

2025.7.16再次改写
  1. ;不用回车的keyword-----(一级)-----
  2. ;Modify By SLdesign V3.0 尘缘一生 QQ:15290049
  3. ;按Key取Key|左键取点|其余键取缺省
  4. ;返回:目标key字符串或点
  5. ;例(Gets_Key_Word "\n->[实体(A)/钢筋砼(B)/素砼(Z)/墙体(4)/阳台(5)/卫生间(6)/厨房(7)]:<A>"  '("A" "B" "Z" "4" "5" "6" "7") "A")
  6. (defun Gets_Key_Word (msg lst def / bb pnum kw loop)
  7.   (setq lst (apply 'append (mapcar '(lambda (e) (list (ascii (strcase e)) (ascii (strcase e t)))) lst)) loop t)
  8.   (prompt msg)
  9.   (while loop
  10.     (setq bb (grread nil 0) pnum (cadr bb))
  11.     (cond
  12.       ((member pnum lst) ;按到列表Key时
  13.         (setq kw (strcase (chr pnum)) loop nil)
  14.       )
  15.       ((= (car bb) 3) ;左键,取点位
  16.         (setq kw pnum loop nil)
  17.       )
  18.       (t ;其余键时,取缺省
  19.         (setq kw (strcase def) loop nil)
  20.       )
  21.     )
  22.   )
  23.   kw
  24. )
  25. ;测试,单独取Key----
  26. (defun c:tt (/ key)
  27.   (setq key (Gets_Key_Word "\n->[实体(A)/钢筋砼(B)/素砼(Z)/墙体(4)/阳台(5)/卫生间(6)/厨房(7)]: <A>"  '("A" "B" "Z" "4" "5" "6" "7") "A"))
  28.   key
  29. )

  • ;不用回车的keyword-----(一级)-----
  • ;Modify By SLdesign V3.0 尘缘一生 QQ:15290049
  • ;左键,右键,空格,回车,tab-->取缺省def字符
  • ;例(Get_Key_Word "\n->[实体(1)/钢筋砼(2)/素砼(3)/墙体(4)/阳台(5)/卫生间(6)/厨房(7)]:<1>"  '("1" "2" "3" "4" "5" "6" "7") "1")
  • ;返回:目标key字符串
  • (defun Get_Key_Word (pro lst def / bb kw val)
  •   (setq lst (apply 'append (mapcar '(lambda (e) (list (ascii (strcase e)) (ascii (strcase e t)))) lst)))
  •   ;把lst表变为 ascii码的双表
  •   ;'("1" "2" "3" "4"
  • "5" "6" "7") -->'(49 49 50 50 51 51 52 52 53 53 54 54 55 55)
  •   (prompt pro)
  •   (while (not
  •            (and
  •              (setq bb (grread nil) val (car bb) kw (cadr bb)) ;(cadr kw)取得按键字母的ascii码 比如 49 50....
  •              (if (or
  •                    (member val '(11 25)) ;右键
  •                    (member bb '((2 32))) ;空格
  •                    (member bb '((2 13))) ;回车
  •                    (member bb '((2 9))) ;;table 键
  •                    (= val 3) ;左键
  •                  )
  •                (setq kw (ascii def))
  •                (member kw lst)
  •              )
  •            )
  •          )
  •   )
  •   (strcase (vl-list->string (list kw)))
  • )
  • ;测试----
  • (defun c:tt (/ key)
  •   (setq key (Get_Key_Word "\n-> [实体(1)/钢筋砼(2)/素砼(3)/墙体(4)/阳台(5)/卫生间(6)/厨房(7)]:<1>"  '("1" "2" "3" "4" "5" "6" "7") "1"))
  •   key
  • )


SLdesign V3.0
通过网盘分享的文件:三领设计
链接: https://pan.baidu.com/s/1-_P_9F2EKXcyFYAOCbtNfA?pwd=kfap 提取码: kfap



本帖子中包含更多资源

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

x

评分

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

查看全部评分

回复

使用道具 举报

发表于 2025-7-15 21:31:29 | 显示全部楼层
本帖最后由 你有种再说一遍 于 2025-7-15 22:19 编辑

觉得晦涩应该去敲c#,毕竟键盘钩子,秒了.
用钩子连cad自己的命令都可以实现这个.
无非就是执行命令事件:
判断缓存中已经存在值,以及遇到key输入时候给它+回车.
回复 支持 1 反对 0

使用道具 举报

发表于 2025-7-16 12:55:44 | 显示全部楼层
你有种再说一遍 发表于 2025-7-15 21:31
觉得晦涩应该去敲c#,毕竟键盘钩子,秒了.
用钩子连cad自己的命令都可以实现这个.
无非就是执行命令事件:

C#宣传大使
回复 支持 反对

使用道具 举报

发表于 2025-7-17 09:44:14 | 显示全部楼层
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-7-18 07:07:37 | 显示全部楼层
自贡黄明儒 发表于 2025-7-17 09:44
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=183057&highlight=%B2%BB%D3%C3%BB%D8%B3%B5%B5%C4keyw ...

就是看到此贴代码,但对于你写的没有测试,感觉依赖于系统,怕不能长久使用。
回复 支持 反对

使用道具 举报

发表于 2025-7-18 07:47:04 | 显示全部楼层
看做不错,举个实际应用例子呗
回复 支持 反对

使用道具 举报

发表于 2025-8-8 22:38:59 | 显示全部楼层
你有种再说一遍 发表于 2025-7-15 21:31
觉得晦涩应该去敲c#,毕竟键盘钩子,秒了.
用钩子连cad自己的命令都可以实现这个.
无非就是执行命令事件:

觉得晦涩应该是你的lisp问题。
觉得对于CAD
最强的程序是c++,c#算什么。
最稳定是lisp。
回复 支持 反对

使用道具 举报

发表于 2025-8-8 22:52:47 | 显示全部楼层
本帖最后由 你有种再说一遍 于 2025-8-8 23:00 编辑
gzcsun 发表于 2025-8-8 22:38
觉得晦涩应该是你的lisp问题。
觉得对于CAD
最强的程序是c++,c#算什么。

你学了再说吧,先有核武器才能反对核武器.
但凡你知道C#和CPP在CAD上面的差异你就知道为什么推荐学C#了,
光是CPP配置能爆一堆VS向导错误,我都觉得你都搞不定.
Lisp会存在什么问题,你恐怕也是要学会第二门语言才知道
回复 支持 反对

使用道具 举报

发表于 2025-8-15 21:07:33 来自手机 | 显示全部楼层
getpoint点了点后,就不能选择选项了。需要提前修改选项,然后按下空格确认后,再点。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-24 14:49 , Processed in 0.217030 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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