露水2 发表于 2008-11-27 15:34:00

讨论用grread动态时怎么输入实数

问题如题目

露水2 发表于 2008-11-30 12:44:00

<p></p><p>大家过过眼瘾吧</p>

nonsmall 发表于 2008-11-27 15:39:00

本帖最后由 作者 于 2008-11-28 9:34:51 编辑 <br /><br /> <p>通过获得输入判断ascii码包括46 48-57到用户敲回车或空格为止</p><p>调用sendkey把用户的输入模拟进去 这样也可以随时修改 用户以为是自己的输入</p><p></p><p>问题解决:</p><p>;20081128 by nonsmall</p><p>(defun c:test( / asc get go real return ws)<br/>&nbsp;(setq go T)<br/>&nbsp;(print "输入实数")<br/>&nbsp;(while (and go (setq get (grread T)))<br/>&nbsp; (if (and (= (car get) 2) (setq asc (cadr get)) (/= asc 47) (&gt;= asc 46) (&lt;= asc 57))<br/>&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp; &nbsp;(setq ws (vlax-Create-Object "WScript.Shell"))<br/>&nbsp;&nbsp;&nbsp; (setq real (getreal (car (list "" (vlax-invoke-method ws 'sendkeys (chr asc))))))<br/>&nbsp;&nbsp;&nbsp; (if real (setq go nil))<br/>&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp;)<br/>&nbsp;real<br/>)</p><p></p>

nonsmall 发表于 2008-11-27 15:44:00

本帖最后由 作者 于 2008-11-28 9:32:52 编辑 <br /><br /> <p>测试:</p><p>命令: TEST<br/>"输入实数" .123<br/>0.123<br/>命令:<br/>命令: TEST<br/>"输入实数" .123<br/>0.123<br/>命令:<br/>命令: TEST<br/>"输入实数" .6433<br/>0.6433<br/>命令:<br/>命令: TEST<br/>"输入实数" 1.23<br/>1.23<br/>命令:<br/>命令: TEST<br/>"输入实数" .234<br/>0.234<br/>命令:<br/>命令: TEST<br/>"输入实数" 34<br/>34.0</p>

露水2 发表于 2008-11-27 15:49:00

<p>你说的是不是用princ 显示的 这样不能用回车键和左右建进行修改</p>

露水2 发表于 2008-11-27 15:51:00

<p>你说的方法试过</p><p>我还用过先用数字键触动getreal这样是基本可以了 但是第一个是用princ 显示的所以他不能进行修改</p>

nonsmall 发表于 2008-11-27 15:54:00

<p>(defun c:test( / asc get go real return)<br/>&nbsp;(setq go T)<br/>&nbsp;(while (and go (setq get (grread T)))<br/>&nbsp;&nbsp;(if (and (= (car get) 2) (setq asc (cadr get)) (/= asc 47) (&gt;= asc 46) (&lt;= asc 57))<br/>&nbsp;&nbsp;&nbsp;(progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;(setq real (getreal (chr asc)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;(if real (setq go nil return (read (strcat (chr asc) (rtos real 2 4)))))<br/>&nbsp;&nbsp;&nbsp;)<br/>&nbsp;&nbsp;)<br/>&nbsp;)<br/>&nbsp;return<br/>)</p><p>写个例子给你 用户先输入.的一些情况你自己判断吧</p><p>程序运行中敲数字就会切换成实数的输入</p><p>输入完成后程序退出返回实数</p>

nonsmall 发表于 2008-11-27 15:59:00

<p>如果考虑全面的话还是用第一种方法</p><p>多写一些判断好了</p>

nonsmall 发表于 2008-11-27 16:07:00

<p>不用princ输出</p><p>用系统变量MODEMACRO输出于状态栏就OK</p>

nonsmall 发表于 2008-11-27 16:10:00

本帖最后由 作者 于 2008-11-27 16:24:52 编辑 <br /><br /> <p>(setvar "MODEMACRO"&nbsp;(strcat "您输入的值是" "1234.5" "&lt;======"))</p><p>(setq asc 2)</p><p>(acet-ui-txted (chr asc) "输入实数" "请输入实数")</p>

liminnet 发表于 2008-11-27 16:46:00

页: [1] 2 3 4
查看完整版本: 讨论用grread动态时怎么输入实数