明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1847|回复: 6

[源码] getstring和getpoint整合到一起

[复制链接]
发表于 2013-12-17 16:36 | 显示全部楼层 |阅读模式
主要参考文献: 风之影--GRREAD函数之大杀器.
地址:[风之影][源码]grread函数之大杀器
http://bbs.mjtd.com/forum.php?mo ... 0839&fromuid=282351
  1. ;;getstring和getpoint整合到一起
  2. (defun c:test (/ KSYMDO KLG KII KU KIKB KSTR KLP)
  3.   (setq KSYMDO T) ;循环开始条件
  4.   (setq KSTR "") ;初始化空字符
  5.   (while KSYMDO ;循环开关
  6.     (setq KLG (grread t 15 0)) ;循环主句
  7.     (setq KII (car KLG)) ;获取的类型
  8.     (setq KU nil) ;返回值初始化nil
  9.     (cond ((= KII 2) ;键盘输入
  10.            (setq KIKB (cadr KLG)) ;键值
  11.            (cond ((= KIKB 27) ;键值27=按键ESC
  12.                   (setq KSYMDO nil) ;退出循环
  13.                   (setq KSTR nil) ;字符串置空
  14.                  )
  15.                  ((= KIKB 13) ;键值13=按键回车
  16.                   (setq KSYMDO nil) ;退出循环
  17.                  )
  18.                  ((= KIKB 32) ;键值32=按键空格
  19.                   (setq KSYMDO nil) ;退出循环
  20.                  )
  21.                  ((and (>= KIKB 33) (<= KIKB 126)) ;键值33~126=按键字符
  22.                   (princ (chr KIKB)) ;即时显示字符
  23.                   (setq KSTR (strcat KSTR (chr KIKB))) ;字符成串
  24.                  )
  25.                  (t "\n未定义键") ;条件闭合
  26.            )
  27.            (setq KU KSTR) ;设返回值
  28.           ) ;键盘输入字符
  29.           ((= KII 3) ;左键
  30.            (setq KLP (cadr KLG)) ;点坐标
  31.            (setq KSYMDO nil) ;退出循环
  32.            (setq KU KLP) ;设返回值
  33.           )
  34.           ((or (= KII 11) (= KII 25)) ;右键
  35.            (setq KSYMDO nil) ;退出循环 返回值按初始nil
  36.           )
  37.           (t "\n请键盘输入或点取坐标.") ;条件闭合
  38.     )
  39.   )
  40.   (princ "\n")
  41.   KU ;返回值
  42. )

本帖被以下淘专辑推荐:

发表于 2013-12-17 17:59 | 显示全部楼层
什么作用?  有个图更好
 楼主| 发表于 2013-12-18 11:46 | 显示全部楼层
spp_wall 发表于 2013-12-17 17:59
什么作用?  有个图更好

一般的getstring、getreal、get...都有了
其实getdist就是getreal和getpoint整合到一起
这个思路可以由get的初始数据处理自己要的结果
有用的可以参考一下,现在发的这个没有什么作用,只是表明思路
发表于 2013-12-18 21:17 来自手机 | 显示全部楼层
lanjqka 发表于 2013-12-18 11:46
一般的getstring、getreal、get...都有了
其实getdist就是getreal和getpoint整合到一起
这个思路可以由 ...

这个程序有意思,明天下载来学习一下,然后再作评价
发表于 2013-12-19 14:45 | 显示全部楼层
好東西, 謝謝無私奉獻
发表于 2013-12-21 15:03 | 显示全部楼层
楼主没有考虑若输入字符时发现错误,用回格键重输的情况
 楼主| 发表于 2013-12-22 00:05 | 显示全部楼层
本帖最后由 lanjqka 于 2013-12-22 00:32 编辑
原地踏步 发表于 2013-12-21 15:03
楼主没有考虑若输入字符时发现错误,用回格键重输的情况


应该有两个问题
1.删除字符可以处理
  1. ((= KIKB 8) ;键值8=按键<-backspace 当然也可以重定义其它键作为删除键
  2. (setq KSTR (if (> (strlen KSTR) 1)
  3.                     (substr KSTR 1 (- (strlen KSTR) 1))
  4.                     (t "")
  5.                    )
  6. ) ;字符减少
  7. )
2.字符显示就不知道了
还有就是其实光标左右移动控制
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-19 07:25 , Processed in 0.179085 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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