lanjqka 发表于 2013-12-17 16:36:36

getstring和getpoint整合到一起

主要参考文献: 风之影--GRREAD函数之大杀器.
地址:[风之影][源码]grread函数之大杀器
http://bbs.mjtd.com/forum.php?mo ... 0839&fromuid=282351;;getstring和getpoint整合到一起
(defun c:test (/ KSYMDO KLG KII KU KIKB KSTR KLP)
(setq KSYMDO T) ;循环开始条件
(setq KSTR "") ;初始化空字符
(while KSYMDO ;循环开关
    (setq KLG (grread t 15 0)) ;循环主句
    (setq KII (car KLG)) ;获取的类型
    (setq KU nil) ;返回值初始化nil
    (cond ((= KII 2) ;键盘输入
         (setq KIKB (cadr KLG)) ;键值
         (cond ((= KIKB 27) ;键值27=按键ESC
                  (setq KSYMDO nil) ;退出循环
                  (setq KSTR nil) ;字符串置空
               )
               ((= KIKB 13) ;键值13=按键回车
                  (setq KSYMDO nil) ;退出循环
               )
               ((= KIKB 32) ;键值32=按键空格
                  (setq KSYMDO nil) ;退出循环
               )
               ((and (>= KIKB 33) (<= KIKB 126)) ;键值33~126=按键字符
                  (princ (chr KIKB)) ;即时显示字符
                  (setq KSTR (strcat KSTR (chr KIKB))) ;字符成串
               )
               (t "\n未定义键") ;条件闭合
         )
         (setq KU KSTR) ;设返回值
          ) ;键盘输入字符
          ((= KII 3) ;左键
         (setq KLP (cadr KLG)) ;点坐标
         (setq KSYMDO nil) ;退出循环
         (setq KU KLP) ;设返回值
          )
          ((or (= KII 11) (= KII 25)) ;右键
         (setq KSYMDO nil) ;退出循环 返回值按初始nil
          )
          (t "\n请键盘输入或点取坐标.") ;条件闭合
    )
)
(princ "\n")
KU ;返回值
)

spp_wall 发表于 2013-12-17 17:59:33

什么作用?有个图更好

lanjqka 发表于 2013-12-18 11:46:20

spp_wall 发表于 2013-12-17 17:59 static/image/common/back.gif
什么作用?有个图更好

一般的getstring、getreal、get...都有了
其实getdist就是getreal和getpoint整合到一起
这个思路可以由get的初始数据处理自己要的结果
有用的可以参考一下,现在发的这个没有什么作用,只是表明思路

自贡黄明儒 发表于 2013-12-18 21:17:24

lanjqka 发表于 2013-12-18 11:46
一般的getstring、getreal、get...都有了
其实getdist就是getreal和getpoint整合到一起
这个思路可以由 ...

这个程序有意思,明天下载来学习一下,然后再作评价

alan0019hk 发表于 2013-12-19 14:45:17

好東西, 謝謝無私奉獻

原地踏步 发表于 2013-12-21 15:03:24

楼主没有考虑若输入字符时发现错误,用回格键重输的情况

lanjqka 发表于 2013-12-22 00:05:15

本帖最后由 lanjqka 于 2013-12-22 00:32 编辑

原地踏步 发表于 2013-12-21 15:03 http://bbs.mjtd.com/static/image/common/back.gif
楼主没有考虑若输入字符时发现错误,用回格键重输的情况

应该有两个问题
1.删除字符可以处理((= KIKB 8) ;键值8=按键<-backspace 当然也可以重定义其它键作为删除键
(setq KSTR (if (> (strlen KSTR) 1)
                  (substr KSTR 1 (- (strlen KSTR) 1))
                  (t "")
                   )
) ;字符减少
)2.字符显示就不知道了
还有就是其实光标左右移动控制
页: [1]
查看完整版本: getstring和getpoint整合到一起