明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2236|回复: 10

请帮忙解决空输入的问题

[复制链接]
发表于 2010-9-10 12:09 | 显示全部楼层 |阅读模式

我有个程序代码如下:

 

(defun c:TQ (/ ifdimt BL SS SS1   )

(setvar "cmdecho" 0)
(setq scal (getvar "dimscale"))
(setq qz "1:")
(setq BL (getstring (strcat "\n请确认或输入图幅比例值 (默认值<" (rtos scal 2) ">):")))
(if (NULL BL)(setq BL (getvar "dimscale")))
(if (= BL nil )
(setq BL scal
      inspoint (getpoint "\n请指定放置点: ")))
(setq TBL (strcat qz BL ))(if (NULL qz)(setq qz (getvar "dimscale")))
(command "mtext" x2 "j" "TL" "@-70,12" TBL "" "EXPLODE" (ENTLAST))
(command "osnap" "end,mid,int,NOD,INS,cen,per,TAN,NEA,QUI,APP,EXT,PAR");捕捉全部
(setq ss (ssget))(if (NULL SS)(EXIT))
(command "_cutclip"  ss "" "_pasteblock" "SCALE" scal inspoint ) (princ))

 

现在就是想要实现 当出现提示"\n请确认或输入图幅比例值 (默认值<" (rtos scal 2) ">):" 时,

如果我此时直接回车或空格,那么"mtext" 文字写出来是 1:"(默认值<" (rtos scal 2) ">)", 缩放时scal用默认值

如果我此时输入其它数据,那么"mtext" 文字写出来是 1:"输入值", 缩放时scal用输入值

 

望高手赐教

发表于 2010-9-10 15:53 | 显示全部楼层

...

(setq scal (getvar "dimscale"))
(setq qz "1:")

(initget 7 "  ")

(setq Bl (getreal (strcat "\n请确认或输入图幅比例值 (默认值<" (rtos scal 2) ">):")))

(if (= BL "") (setq BL scale))

...

 楼主| 发表于 2010-9-10 18:29 | 显示全部楼层

首先,感谢Gu_xl的热心帮助!!!!

我测试了下还一样出现如下错误:

 

1如果我直接回车或空格:

请确认或输入图幅比例值 (默认值<1.0000>):
请指定插入点: Error: 参数类型错误: stringp nil

 

2如果我输入数值:

请确认或输入图幅比例值 (默认值<1.0000>):3
请指定插入点: Error: 参数类型错误: stringp 3.0

 

目的:插入一个图块,中途出现输入比例值并使用这个值缩放,

如果我没输入(即直接回车或空格)则采用当前标注比例值进行缩放,

但是我还要在特定位置打字表示 1:图幅比例值 (这个问题能解决么?)

到现在还用这个笨办法:(代码如下)

;;;画图框(自动插块,一定要在配置文件中添加支持搜索路径才能实现)
(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 (getvar "dimscale"))
(setq qz "1:")
(setq BL (getstring (strcat "\n请确认或输入图幅比例值 (默认值<" (rtos scal 2) ">):")))
(if (NULL BL)(setq BL (getvar "dimscale")))
(if (= BL nil )(setq BL scal
                inspoint (getpoint "\n请指定插入点: ")))
(setq TBL (strcat qz BL ))
(if (NULL BL)(command "mtext" x2 "j" "TL" "@-70,12" (strcat qz (rtos scal 2) ) "" "EXPLODE" (ENTLAST)))
(if (/= NULL BL)(command "mtext" x2 "j" "TL" "@-70,12" TBL "" "EXPLODE" (ENTLAST)))
(setq ss (ssget))(if (NULL SS)(EXIT))
(command "_cutclip"  ss "" "_pasteblock" "SCALE" scal inspoint )
(princ))

现在我就是想解决当我没输入时也写字“1:默认值(getvar "dimscale")))”

而不是 “1:”

发表于 2010-9-10 20:32 | 显示全部楼层

没看你的程序,根据你的错误提示,BL响应应为字串,修改如下:

...

(setq scal (getvar "dimscale"))
(setq qz "1:")

(initget 7 "  ")

(setq Bl (getreal (strcat "\n请确认或输入图幅比例值 (默认值<" (rtos scal 2) ">):")))

(if (= BL "") (setq BL (rtos scale 2))(setq BL (rtos BL 2)))

(setq inspoint (getpoint "\n请指定放置点: ")))

...

 

 楼主| 发表于 2010-9-11 06:22 | 显示全部楼层

很高兴看到Gu_xl兄台的再次回复

再次感谢Gu_xl兄台!

复制你的改动进去后,一加载就出现:

 

Error: 参数类型错误: stringp nil

 

现在我就是想解决当我没输入时也写字显示“1:默认值(getvar "dimscale")))”

而不是显示 “1:

 

这个有难度吗?

发表于 2010-9-11 09:33 | 显示全部楼层
游客,本帖隐藏的内容需要发帖数高于 10 才可浏览,你当前发帖数只有 0

 楼主| 发表于 2010-9-11 11:41 | 显示全部楼层
好了!正是我想要的结果!感谢二位的热心帮助[em200]
发表于 2013-1-1 02:51 | 显示全部楼层
谢谢楼主分享啊
发表于 2013-1-1 02:52 | 显示全部楼层
谢谢楼主分享啊
发表于 2013-1-1 02:55 | 显示全部楼层
谢谢楼主分享啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-3-29 00:31 , Processed in 0.202740 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表