[求助]为何代码出现参数型错误
<p>请教:下列代码为什么在单步执行(检验)中能正常运行,但加载后却出现参数型错误。然而出现错误后检查 ptlst 列表中的元素又是正确的。</p><p>(defun c:sx()<br/> (setq p (getpoint "\n选择测定距离的起始点: "))<br/> (setq lj1 (getstring "\n输入X轴递增间距: "))<br/> (setq dd1 (getpoint "\n选取首位展点的位置: "))<br/> (setq dd (cadr dd1))<br/> (setq lj (atof lj1))<br/> (setq pj(car p))<br/> (setq pt1 1)<br/> (setq n 0)<br/> (while(/= pt1 nil)<br/> (setq pt1(list (+ (* n lj) (car dd1))(+(abs(-(car (getpoint "\n按顺序选取原展点: ")) pj)) dd) 0))<br/> (setq ptlst (append ptlst (list pt1)))<br/> (setq n(length ptlst))<br/> )</p> 为什么不这样直接定义<br/>(setq lj1 (getreal "\n输入X轴递增间距: ")) 本帖最后由 作者 于 2007-7-2 13:46:28 编辑 <br /><br /> <p>谢谢提醒 </p><p>但执行代码后怎么出现参数性错误 而且加载后运行出错。我是LISP新手 ,真的找不出代码的错误之处。敬请朋友们帮我更正。</p><p>附更改后的代码:</p><p>(defun c:sx()<br/> (setq ptlst nil)<br/> (setq p (getpoint "\n选择测定距离的起始点: "))<br/> (setq lj(getreal "\n输入X轴递增间距: "))<br/> (setq dd1 (getpoint "\n选取首位展点的位置: "))<br/> (setq dd (cadr dd1))<br/> (setq pj(car p))<br/> (setq pt1 1)<br/> (setq n 0)<br/> (while(/= pt1 nil)<br/> (setq pt1(list (+ (* n lj) (car dd1))(+(abs(-(car (getpoint "\n按顺序选取原展点: ")) pj)) dd) 0))<br/> (setq ptlst (append ptlst (list pt1)))<br/> (setq n(length ptlst))<br/> )<br/>(apply 'command (append '("_.pline") ptlst '("")))<br/> (COMMAND "pedit" (entlast) "f" f ""))<br/> (PRINC)</p> 帮你改了一下!简单说,就是你的getpoint不能嵌在那么里面!"(setq pt1(list (+ (* n lj) (car dd1))(+(abs(-(car (getpoint "\n按顺序选取原展点: ")) pj)) dd) 0))"
你原来那样做,在最后一下退出,while判断到下面这句完后,才得到pt1为nil。但是当(getpoint "\n按顺序选取原展点: ")为nil时,在下一个嵌套表达式还在计算,得出现的数值错误是正常的!楼主的编程习惯要改修正!
(defun c:sx ()
(setq p (getpoint "\n选择测定距离的起始点: ")
lj1 (getstring "\n输入X轴递增间距: ")
dd1 (getpoint "\n选取首位展点的位置: ")
dd(cadr dd1)
lj(atof lj1)
pj(car p)
n 0
)
(while (setq pt (getpoint "\n按顺序选取原展点: "))
(setq pt1 (list
(+ (* n lj) (car dd1))
(+ (abs (- (car pt) pj)) dd)
0.
)
ptlst (cons (list pt1) ptlst)
n (length ptlst)
)
)
)
本帖最后由 作者 于 2007-7-2 15:08:02 编辑 <br /><br /> <p>谢谢你的指教,今后一定加强LISP的学习。</p><p>我刚才在这段代码后面加了一条</p><p>(apply 'command (append '("_.pline") ptlst '("")))</p><p>想调用这个PTLIST列表画多段线 检验时能画线 加载运行后就不行了 是什么原因啊<br/></p>
页:
[1]