露水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/> (setq go T)<br/> (print "输入实数")<br/> (while (and go (setq get (grread T)))<br/> (if (and (= (car get) 2) (setq asc (cadr get)) (/= asc 47) (>= asc 46) (<= asc 57))<br/> (progn<br/> (setq ws (vlax-Create-Object "WScript.Shell"))<br/> (setq real (getreal (car (list "" (vlax-invoke-method ws 'sendkeys (chr asc))))))<br/> (if real (setq go nil))<br/> )<br/> )<br/> )<br/> 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/> (setq go T)<br/> (while (and go (setq get (grread T)))<br/> (if (and (= (car get) 2) (setq asc (cadr get)) (/= asc 47) (>= asc 46) (<= asc 57))<br/> (progn<br/> (setq real (getreal (chr asc)))<br/> (if real (setq go nil return (read (strcat (chr asc) (rtos real 2 4)))))<br/> )<br/> )<br/> )<br/> 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" (strcat "您输入的值是" "1234.5" "<======"))</p><p>(setq asc 2)</p><p>(acet-ui-txted (chr asc) "输入实数" "请输入实数")</p>
liminnet
发表于 2008-11-27 16:46:00