本帖最后由 尘缘一生 于 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再次改写
 - ;不用回车的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
|