894560869 发表于 2010-9-10 12:09:00

请帮忙解决空输入的问题

<p><font face="Verdana">我有个程序代码如下:</font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana">(defun c:TQ (/ ifdimt BL SS SS1&nbsp;&nbsp; )</font></p>
<p><font face="Verdana">(setvar "cmdecho" 0)<br/>(setq scal (getvar "dimscale")) <br/>(setq qz "1:") <br/>(setq BL (getstring (strcat "\n请确认或输入图幅比例值 (默认值&lt;" (rtos scal 2) "&gt;):")))<br/>(if (NULL BL)(setq BL (getvar "dimscale")))<br/>(if (= BL nil )<br/>(setq BL scal<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inspoint (getpoint "\n请指定放置点: "))) <br/>(setq TBL (strcat qz BL ))(if (NULL qz)(setq qz (getvar "dimscale")))<br/>(command "mtext" x2 "j" "TL" "@-70,12" TBL "" "EXPLODE" (ENTLAST))<br/>(command "osnap" "end,mid,int,NOD,INS,cen,per,TAN,NEA,QUI,APP,EXT,PAR");捕捉全部<br/>(setq ss (ssget))(if (NULL SS)(EXIT))<br/>(command "_cutclip"&nbsp; ss "" "_pasteblock" "SCALE" scal inspoint ) (princ)) </font></p>
<p>&nbsp;</p>
<p>现在就是想要实现 当出现提示"\n请确认或输入图幅比例值 (默认值&lt;" (rtos scal 2) "&gt;):" 时,</p>
<p>如果我此时直接回车或空格,那么"mtext" 文字写出来是 <strong>1:"(默认值&lt;" (rtos scal 2) "&gt;)", 缩放时scal用默认值</strong>;</p>
<p>如果我此时输入其它数据,那么"mtext" 文字写出来是 <strong>1:"输入值", 缩放时scal用输入值</strong>;</p>
<p>&nbsp;</p>
<p><strong>望高手赐教</strong></p>

Gu_xl 发表于 2010-9-10 15:53:00

<p>...</p>
<p>(setq scal (getvar "dimscale")) <br/>(setq qz "1:") </p>
<p>(initget 7&nbsp;"&nbsp; ")</p>
<p>(setq Bl (getreal (strcat "\n请确认或输入图幅比例值 (默认值&lt;" (rtos scal 2) "&gt;):")))</p>
<p>(if (= BL "") (setq BL scale))</p>
<p>...</p>

894560869 发表于 2010-9-10 18:29:00

<p><font face="Verdana"><strong>首先,感谢<font face="Verdana" color="#61b713">Gu_xl</font>的热心帮助!!!!</strong></font></p>
<p>我测试了下还一样出现如下错误:</p>
<p>&nbsp;</p>
<p>1如果我直接回车或空格:</p>
<p><font face="Verdana">请确认或输入图幅比例值 (默认值&lt;1.0000&gt;):<br/>请指定插入点: Error: 参数类型错误: stringp nil</font></p>
<p>&nbsp;</p>
<p>2如果我输入数值:</p>
<p><font face="Verdana">请确认或输入图幅比例值 (默认值&lt;1.0000&gt;):3<br/>请指定插入点: Error: 参数类型错误: stringp 3.0</font></p>
<p>&nbsp;</p>
<p>目的:插入一个图块,中途出现输入比例值并使用这个值缩放,</p>
<p>如果我没输入(即直接回车或空格)则采用当前标注比例值进行缩放,</p>
<p>但是我还要在特定位置打字表示 <strong>1:图幅比例值 (这个问题能解决么?)</strong></p>
<p>到现在还用这个笨办法:(代码如下)</p>
<p><font face="Verdana">;;;画图框(自动插块,一定要在配置文件中添加支持搜索路径才能实现)<br/>(defun c:TQ (/ ifdimt BL SS SS1&nbsp;&nbsp; )(setvar "cmdecho" 0)<br/><strong>...</strong></font></p>
<p><font face="Verdana"><strong>...</strong></font></p>
<p><font face="Verdana"><strong><strong>...</strong><br/></strong>(command "insert" "ATydh"&nbsp;&nbsp; x4 "" "" "" "")<br/>(command "insert" "A附加栏" x1 "" "" "" )<br/>(command "insert" "标题栏0" x2 "" "" "" )<br/>(command "style" "PC_TEXTSTYLE" "" "" "" "" "" "" )<br/>(setq scal (getvar "dimscale")) <br/>(setq qz "1:") <br/>(setq BL (getstring (strcat "\n请确认或输入图幅比例值 (默认值&lt;" (rtos scal 2) "&gt;):")))<br/>(if (NULL BL)(setq BL (getvar "dimscale")))<br/>(if (= BL nil )(setq BL scal<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inspoint (getpoint "\n请指定插入点: "))) <br/>(setq TBL (strcat qz BL ))<br/>(if (NULL BL)(command "mtext" x2 "j" "TL" "@-70,12" (strcat qz (rtos scal 2) ) "" "EXPLODE" (ENTLAST)))<br/>(if (/= NULL BL)(command "mtext" x2 "j" "TL" "@-70,12" TBL "" "EXPLODE" (ENTLAST)))<br/>(setq ss (ssget))(if (NULL SS)(EXIT))<br/>(command "_cutclip"&nbsp; ss "" "_pasteblock" "SCALE" scal inspoint )<br/>(princ)) </font></p>
<p><strong>现在我就是想解决当我没输入时也<font style="BACKGROUND-COLOR: #00ff00">写字“1:默认值(getvar "dimscale")))”</font></strong></p>
<p><strong>而不是 <font style="BACKGROUND-COLOR: #ff0000">“1:”</font></strong></p>

Gu_xl 发表于 2010-9-10 20:32:00

<p>没看你的程序,根据你的错误提示,BL响应应为字串,修改如下:</p>
<div id="textstyle_2" style="FONT-SIZE: 12pt; OVERFLOW: hidden; WORD-BREAK: break-all; TEXT-INDENT: 0px; WORD-WRAP: break-word">
<p>...</p>
<p>(setq scal (getvar "dimscale")) <br/>(setq qz "1:") </p>
<p>(initget 7&nbsp;"&nbsp; ")</p>
<p>(setq Bl (getreal (strcat "\n请确认或输入图幅比例值 (默认值&lt;" (rtos scal 2) "&gt;):")))</p>
<p>(if (= BL "") (setq BL (rtos scale 2))(setq BL (rtos BL 2)))</p>
<p>(setq inspoint (getpoint "\n请指定放置点: "))) </p>
<p>...</p></div>
<p>&nbsp;</p>

894560869 发表于 2010-9-11 06:22:00

<p>很高兴看到<font style="BACKGROUND-COLOR: #ffffff" face="Verdana" color="#61b713">Gu_xl</font>兄台的再次回复</p>
<p><strong>再次感谢<font style="BACKGROUND-COLOR: #ffffff" face="Verdana" color="#61b713">Gu_xl</font>兄台!</strong></p>
<p>复制你的改动进去后,一加载就出现:</p>
<p>&nbsp;</p>
<p><font style="BACKGROUND-COLOR: #ff0000" face="Verdana">Error: 参数类型错误: stringp nil</font></p>
<p><font style="BACKGROUND-COLOR: #ff0000" face="Verdana">&nbsp;</p>
<p><strong><font style="BACKGROUND-COLOR: #00ff00">现在我就是想解决当我没输入时也写字显示</font><font style="BACKGROUND-COLOR: #ff0000">“1:默认值(getvar "dimscale")))”</font></strong></p>
<p><strong><font style="BACKGROUND-COLOR: #00ff00">而不是显示</font> <font style="BACKGROUND-COLOR: #ff0000">“1:<font style="BACKGROUND-COLOR: #00ff00"> </font>”</font></strong></p></font>
<p><font style="BACKGROUND-COLOR: #ff0000"></font>&nbsp;</p>
<p>这个有难度吗?</p>

gufeng 发表于 2010-9-11 09:33:00



(defun c:TQ (/ ifdimt BL SS SS1)
(setvar "cmdecho" 0)
.
.
.
.
.
.
.
.
.
(command "insert" "ATydh" x4 "" "" "" "")
(command "insert" "A附加栏" x1 "" "" "")
(command "insert" "标题栏0" x2 "" "" "")
(command "style" "PC_TEXTSTYLE" "" "" "" "" "" "")
(setq scal (rtos (getvar "dimscale") 2))
(setq qz "1:")
(setq BL (getreal (strcat "\n请确认或输入图幅比例值 (默认值<"
scal
">):"
)
)
)
(if BL
(progn
(setvar "dimscale" BL);_把输入的值存到变量dimscale
(setq BL (rtos BL 2))
)
(progn
(setq BL scal)
)
)
(setq inspoint (getpoint "\n请指定插入点: "))
(if inspoint
(progn
(setq TBL (strcat qz BL))
(command "mtext"
x2
"j"
"TL"
"@-70,12"
TBL
""
"EXPLODE"
(ENTLAST)
)
(setq ss (ssget))
(if ss
(command "_cutclip" ss "" "_pasteblock" "SCALE" scal inspoint)
)
)
)
(princ)
)

894560869 发表于 2010-9-11 11:41:00

<strong><font color="#ff0000">好了!正是我想要的结果!感谢二位的热心帮助</font></strong>

二哥 发表于 2013-1-1 02:51:17

谢谢楼主分享啊

二哥 发表于 2013-1-1 02:52:32

谢谢楼主分享啊

二哥 发表于 2013-1-1 02:55:31

谢谢楼主分享啊
页: [1] 2
查看完整版本: 请帮忙解决空输入的问题