894560869 发表于 2010-2-21 15:31:00

请帮忙改下程序:输入S后返回是我想要的结果

<p><br/>;;;快速写单行字 <br/>(defun c:WS (/ odtsz wzgd)<br/>(setvar "cmdecho" 0)<br/>(command "_.undo" "E")<br/>(setq odsty (getvar "textstyle")) ;;记录当前文本样式<br/>(setq odtsz (getvar "textsize")) ;;记录当前文本高度<br/>(command "layer" "m" "6文字层" "c" "3" "" "s" "6文字层" "")<br/>(prompt "\n【提示】文字高度") (princ"(") (princ odtsz) (princ "):")<br/>(initget "S")<br/>(if(setq wzsd (getpoint "\n【提示&lt;S&gt;改文本高度】指定文字起始点:"))<br/>(cond ((= wzsd "S")(c:WSGD))))<br/>(setq wzgd odtsz)(command "REGEN" )<br/>(prompt "\n【文字高度:") (princ"(") (princ wzgd) (princ ")】")<br/>(setq XXWS (getstring "输入文字:"))<br/>(command "TEXT" wzsd wzgd 0 XXWS)<br/>(command "_.undo" "E")<br/>(setvar "textsize" odtsz) ;;返回文本高度<br/>(setvar "textstyle" odsty) ;;返回文本样式<br/>(princ))</p><p>功能目的:输入命令后,点取一点,写文字。</p><p>程序执行到输入S以后,<strong><font color="#f70938">不能继续输入文字</font></strong>,出现如下错误:</p><p><font color="#ff3300">【文字高度:(5.0)】输入文字:fdffa</font></p><p><font color="#ff3300">找不到文字样式“5.000000000000000”。<br/>; 错误: 函数被取消</font></p><p><font color="#ff3300">输入样式名或 [?] &lt;XXX&gt;:</font></p><p>请帮忙改下程序:(就用当前的文字样式,不管它什么样式!)输入S后返回是我想要的结果:</p><p>能继续写字在指定地方</p>

ZZXXQQ 发表于 2010-2-21 20:42:00

试试看:

(defun c:WS (/ odtsz wzgd)
(setvar "cmdecho" 0)
(command "_.undo" "E")
(setq odsty (getvar "textstyle")) ;;记录当前文本样式
(setq odtsz (getvar "textsize")) ;;记录当前文本高度
(command "layer" "m" "6文字层" "c" "3" "" "s" "6文字层" "")
(princ(strcat "\n【提示】文字高度(" (rtos odtsz 2) "):"))
(initget "S")
(if (= (setq wzsd (getpoint "\n【提示<S>改文本高度】指定文字起始点:")) "S") (progn
(setq wzgd odtsz)
(command "REGEN" )
(setq wzgd (getdist (strcat "\n【文字高度:(" (rtos wzgd 2) ")】:")))
) (progn
(setq XXWS (getstring "输入文字:"))
(command "TEXT" wzsd wzgd 0 XXWS)
))
(command "_.undo" "E")
(setvar "textsize" odtsz) ;;返回文本高度
(setvar "textstyle" odsty) ;;返回文本样式
(princ)
)

gufeng 发表于 2010-4-27 10:59:00

<p>试下</p><p>(defun c:WS (/ ODSTY ODTSZ OLDCMDECHO OLDLAYER WZGD WZGD_1 WZSD XXWS)<br/>&nbsp; (setq oldcmdecho (getvar "cmdecho"))<br/>&nbsp; (setvar "cmdecho" 0)<br/>;;;&nbsp; (command "_.undo" "E");_这个感觉没用吧 注释掉<br/>&nbsp; (setq odsty (getvar "textstyle"))<br/>&nbsp; ;;记录当前文本样式<br/>&nbsp; (setq odtsz (getvar "textsize"))<br/>&nbsp; ;;记录当前文本高度<br/>&nbsp; (princ (strcat "\n【提示】当前文字高度(" (rtos odtsz 2 0) "):"))<br/>&nbsp; (initget "S")<br/>&nbsp; (while (= (setq wzsd (getpoint "\n【提示&lt;S&gt;改文本高度】指定文字起始点:"))<br/>&nbsp;&nbsp;&nbsp;&nbsp; "S"<br/>&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq wzgd_1 (getint (strcat "\n请输入文字高度(" (rtos odtsz 2 0) "):")))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (initget "S")<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp; (if wzgd_1<br/>&nbsp;&nbsp;&nbsp; (setq wzgd wzgd_1)<br/>&nbsp;&nbsp;&nbsp; (setq wzgd odtsz)<br/>&nbsp; )<br/>&nbsp; (command "REGEN")<br/>&nbsp; (princ (strcat "\n【文字高度:(" (rtos wzgd 2 0) ")】"))<br/>&nbsp; (setq XXWS (getstring "输入文字:"))<br/>&nbsp; (setq oldlayer (getvar "clayer")) ;_当前的图层<br/>&nbsp; (command "layer" "m" "6文字层" "c" "3" "" "s" "6文字层" "")<br/>&nbsp; (command "TEXT" wzsd wzgd 0 XXWS)<br/>&nbsp; (setvar "clayer" oldlayer) ;_设置到旧图层<br/>;;;&nbsp; (command "_.undo" "E");_这个感觉没用吧 注释掉<br/>&nbsp; (setvar "textsize" odtsz)<br/>&nbsp; ;;返回文本高度<br/>&nbsp; (setvar "textstyle" odsty)<br/>&nbsp; ;;返回文本样式<br/>&nbsp; (setvar "cmdecho" oldcmdecho)<br/>&nbsp; (princ)<br/>)</p>

gufeng 发表于 2010-4-27 11:00:00

<p>忘记用代码格式了...</p>

894560869 发表于 2010-7-26 13:07:00

<p>谢谢各位的热心帮助</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
页: [1]
查看完整版本: 请帮忙改下程序:输入S后返回是我想要的结果