不用回车的keyword;超级Key_getpoint;Key_entsel
本帖最后由 尘缘一生 于 2025-7-18 07:13 编辑本坛http://bbs.mjtd.com/forum.php?mo ... 83057&highlight=key
帖子有段代码,写得比较晦涩
觉得这个还是不错,完善修改一下子
2025,7.18更新,源码发布,增加Key_getpointKey_entsel
2025.7.16再次改写
;不用回车的keyword-----(一级)-----
;Modify By SLdesign V3.0 尘缘一生 QQ:15290049
;按Key取Key|左键取点|其余键取缺省
;返回:目标key字符串或点
;例(Gets_Key_Word "\n->[实体(A)/钢筋砼(B)/素砼(Z)/墙体(4)/阳台(5)/卫生间(6)/厨房(7)]:<A>"'("A" "B" "Z" "4" "5" "6" "7") "A")
(defun Gets_Key_Word (msg lst def / bb pnum kw loop)
(setq lst (apply 'append (mapcar '(lambda (e) (list (ascii (strcase e)) (ascii (strcase e t)))) lst)) loop t)
(prompt msg)
(while loop
(setq bb (grread nil 0) pnum (cadr bb))
(cond
((member pnum lst) ;按到列表Key时
(setq kw (strcase (chr pnum)) loop nil)
)
((= (car bb) 3) ;左键,取点位
(setq kw pnum loop nil)
)
(t ;其余键时,取缺省
(setq kw (strcase def) loop nil)
)
)
)
kw
)
;测试,单独取Key----
(defun c:tt (/ key)
(setq key (Gets_Key_Word "\n->[实体(A)/钢筋砼(B)/素砼(Z)/墙体(4)/阳台(5)/卫生间(6)/厨房(7)]: <A>"'("A" "B" "Z" "4" "5" "6" "7") "A"))
key
)
[*];不用回车的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
本帖最后由 你有种再说一遍 于 2025-7-15 22:19 编辑
觉得晦涩应该去敲c#,毕竟键盘钩子,秒了.
用钩子连cad自己的命令都可以实现这个.
无非就是执行命令事件:
判断缓存中已经存在值,以及遇到key输入时候给它+回车. 你有种再说一遍 发表于 2025-7-15 21:31
觉得晦涩应该去敲c#,毕竟键盘钩子,秒了.
用钩子连cad自己的命令都可以实现这个.
无非就是执行命令事件:
C#宣传大使 http://bbs.mjtd.com/forum.php?mod=viewthread&tid=183057&highlight=%B2%BB%D3%C3%BB%D8%B3%B5%B5%C4keyword 自贡黄明儒 发表于 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-15 21:31
觉得晦涩应该去敲c#,毕竟键盘钩子,秒了.
用钩子连cad自己的命令都可以实现这个.
无非就是执行命令事件:
觉得晦涩应该是你的lisp问题。
觉得对于CAD
最强的程序是c++,c#算什么。
最稳定是lisp。 本帖最后由 你有种再说一遍 于 2025-8-8 23:00 编辑
gzcsun 发表于 2025-8-8 22:38
觉得晦涩应该是你的lisp问题。
觉得对于CAD
最强的程序是c++,c#算什么。
你学了再说吧,先有核武器才能反对核武器.
但凡你知道C#和CPP在CAD上面的差异你就知道为什么推荐学C#了,
光是CPP配置能爆一堆VS向导错误,我都觉得你都搞不定.
Lisp会存在什么问题,你恐怕也是要学会第二门语言才知道
getpoint点了点后,就不能选择选项了。需要提前修改选项,然后按下空格确认后,再点。
页:
[1]