wlq2004 发表于 2013-9-18 23:01:14

小白提问:这个lisp为什么每次只能执行1次,再执行就提示函数错误?

请问我这个lisp为什么每次只能执行1次,再执行就提示函数错误?
;;调入"建筑专业平面底图"
(defun C:JIANZHU ( )
(setvar "cmdecho" 0)
(setvar "filedia" 0)
    (if (= nil (tblsearch "layer" "JZDT_建筑底图")) (command "layer" "m" "JZDT_建筑底图" ""))
    (setvar "clayer" "JZDT_建筑底图")
    (setq cenghao (MYCENGHAO ""))
    (setq zuhe1 (strcat "..\\..\\建筑专业\\DWG图纸\\建筑" cenghao "层平面图.DWG"));;组合1
    (setq zuhe2 (strcat "建筑" cenghao "层平面图|*"));;组合2
    (setq zuhe3 (strcat "建筑" cenghao "层平面图|*_建筑底图"));;组合3
    (command "-xref" "O" zuhe1 "0,0,0" "1" "1" "0")
    (while (/= 0 (getvar "cmdactive"))(command pause))
    (setvar "clayer" "0")
    (setvar "filedia" 1)
       (command
          "-layer"
          "f"
          zuhe2
          ""
       )
       (command
          "-layer"
          "T"
          zuhe3
          ""
       )
   )

(defun MYCENGHAO (str)
(setq lal (getstring "请输入层号"))
(if (= lal "bzc")
(setq MYCENGHAO "标准")
(setq MYCENGHAO lal)
)
)

wlq2004 发表于 2013-9-18 23:12:58

本帖最后由 wlq2004 于 2013-9-18 23:14 编辑

再次执行时,出错的行数是第7行“(setq cenghao (MYCENGHAO ""))”这句。
出错的原因是 子函数 MYCENGHAO 闹的。
可为什么第一次可以顺利执行,再执行就错误了呢?
出错提示:函数出错”-1“
-1是第一次顺利执行MYCENGHAO的返回值。

ZZXXQQ 发表于 2013-9-19 08:40:05

你在子函数中已经将函数名重定义了。
(defun MYCENGHAO (str)
(setq lal (getstring "请输入层号"))
(if (= lal "bzc")
(setq MYCENGHAO "标准"));这里重定义了
(setq MYCENGHAO lal);这里重定义了
)
)
应改成
(defun MYCENGHAO (str)
(setq lal (getstring "请输入层号"))
(if (= lal "bzc")
"标准"
lal
)
)

wlq2004 发表于 2013-9-19 08:56:23

ZZXXQQ 发表于 2013-9-19 08:40 static/image/common/back.gif
你在子函数中已经将函数名重定义了。
(defun MYCENGHAO (str)
(setq lal (getstring "请输入层号"))


谢谢!!!问题解决了~~
页: [1]
查看完整版本: 小白提问:这个lisp为什么每次只能执行1次,再执行就提示函数错误?