本帖最后由 作者 于 2007-12-5 18:12:53 编辑
照各位的指点,我编了如下一段。想在pit没有获取到int或者real的时候,重新执行一遍,现在出现一个问题是,重新执行是执行了,最后返回的pit却是第一次的pit。比如运行程序时我输入123d,不是数值,那么程序重新执行,提示“输入起点坐标 [或选择实体读取坐标]”,我再输入123,程序正常结束后返回的pit值居然是123d,问题在哪里?- (defun c:dzb (/ oom pit ss ent fxh ent1 name)
- (setq oom (getvar "osmode"))
- (setvar "osmode" 0)
- (initget 128 " ")
- (setq pit (getpoint "\n输入起点坐标 [或选择实体读取坐标]"))
- (cond
- ((null pit) (c:dzb))
- ((and (= (type pit) 'LIST) (setq ss (ssget pit)))
- (progn
- );读取块属性程序
- )
- ((= (type pit) 'STR) (setq pit (read pit)))
- (t (c:dzb))
- ) ;cond
- ;|(if (not (or (= (type pit) 'INT) (= (type pit) 'REAL)))
- (c:dzb)
- )|;
- (setvar "osmode" oom)
- pit
- )
|