各位高手来帮忙指点错在哪了
我这学期刚学visual lisp, 老师抄了个程序,我回来却运行不出来,加载后说defun语法错误,怎么回事呀?( defun gp : getpoint Input (/ Startpt Endpt Halfwidth)<BR> ( if ( setq Startpt ( getpoint "\n Start point of path :"))<BR> ( if ( setq Endpt (getpoint Startpt "\n Endpoint of path:"))<BR> <BR> (if (setq Halfwidth ( getpoint Endpt "\n Half width of path:"))<BR> ( list<BR> (cons 10 Startpt)<BR> (cons 11 Endpt)<BR> ( cons 40( * Halfwidth 2.01)<BR> (cons 50 ( angle Startpt Endpt))<BR> (cons 41 ( distance Startpt Endpt))<BR> )))))) 这样看看不清楚,以lsp附件的形式传上来吧!不过我看中间是不是空格太多了!?? 这是帮助文件中的原代码:
(defun gp:getPointInput ( / StartPt EndPt HalfWidth )<BR>......
抄的时候要仔细了,看看哪儿出了问题... 我 按<A name=24904><FONT color=#990000><B>meflying</B></FONT></A>说的改了,可以加载但运行时提示未知命令,怎么回事啊?
有几处错误:
(defun gp:getPointInput (/ StartPt EndPt HalfWidth)<BR> (if (setq Startpt (getpoint "\n Start point of path :"))<BR> (if (setq Endpt (getpoint Startpt "\n Endpoint of path:"))
(if (setq Halfwidth (getdist Endpt "\n Half width of path:"));_看程序的意思应该用getdist,而不是getpoint<BR> (list<BR> (cons 10 Startpt)<BR> (cons 11 Endpt)<BR> (cons 40 (* Halfwidth 2.01));_少了一个右括号<BR> (cons 50 (angle Startpt Endpt))<BR> (cons 41 (distance Startpt Endpt))
)<BR> )<BR> )<BR> )<BR>) 谢谢各位!我再试试. 5楼不应该这么改吧,11对应的是点,应该没有问题...这是帮助文件中例子的一个函数,建议楼主在没有弄懂的情况下不要这样拿出来用的...
命令定义是(defun c:xxx...而上面的是(defun gp:xxx...
这是个函数,供程序中其它地方调用,而不是单独使用的 飞哥,我改得哪儿不对啊,改之前我没看过帮助文件,现在去翻帮助文件,给我找到了这个例题:
<P class=body>下面是 gp:getPointInput 函数修改后的版本。在这个版本中,调用了名为 cons(construct a list 的缩写)的 AutoLISP 函数来为关联表中的子表加上关键字。可将这个版本的函数定义复制到控制台窗口中,按 ENTER 键,然后再次运行 (gp:getPointInput):
<PRE class=prog_in_0>(defun gp:getPointInput (/ StartPt EndPt HalfWidth)</PRE><PRE class=prog_in_0>(if (setq StartPt (getpoint "\nStart point of path: "))</PRE><PRE class=prog_in_0> (if (setq EndPt (getpoint StartPt "\nEndpoint of path: "))</PRE><PRE class=prog_in_0> (if (setq HalfWidth (getdist EndPt "\nHalf width of path: "))</PRE><PRE class=prog_in_0> ;; 按上面所述创建</PRE><PRE class=prog_in_0> ;; 关联表,该关联表将成为函数</PRE><PRE class=prog_in_0> ;; 的返回值。</PRE><PRE class=prog_in_0> (list</PRE><PRE class=prog_in_0> (cons 10 StartPt)</PRE><PRE class=prog_in_0> (cons 11 EndPt)</PRE><PRE class=prog_in_0> (cons 40 (* HalfWidth 2.0))</PRE><PRE class=prog_in_0> (cons 50 (angle StartPt EndPt))</PRE><PRE class=prog_in_0> (cons 41 (distance StartPt EndPt))</PRE><PRE class=prog_in_0> )</PRE><PRE class=prog_in_0> )</PRE><PRE class=prog_in_0> )</PRE><PRE class=prog_in_0>)</PRE><PRE class=prog_in_end_0>)</PRE>
<P class=body>请注意,在创建表时,程序将用户指定的半宽乘以 2,转换成所需的小路全宽。 不好意思,看岔了 谢谢大家,现在可以运行了
页:
[1]