明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1382|回复: 9

各位高手来帮忙指点错在哪了

[复制链接]
发表于 2005-4-19 22:07 | 显示全部楼层 |阅读模式
我这学期刚学visual lisp, 老师抄了个程序,我回来却运行不出来,加载后说defun语法错误,怎么回事呀? ( defun gp : getpoint Input (/ Startpt Endpt Halfwidth)
( if ( setq Startpt ( getpoint "\n Start point of path :"))
( if ( setq Endpt (getpoint Startpt "\n Endpoint of path:"))

(if (setq Halfwidth ( getpoint Endpt "\n Half width of path:"))
( list
(cons 10 Startpt)
(cons 11 Endpt)
( cons 40( * Halfwidth 2.01)
(cons 50 ( angle Startpt Endpt))
(cons 41 ( distance Startpt Endpt))
))))))
发表于 2005-4-19 22:22 | 显示全部楼层
这样看看不清楚,以lsp附件的形式传上来吧!不过我看中间是不是空格太多了!??
发表于 2005-4-20 08:30 | 显示全部楼层
这是帮助文件中的原代码: (defun gp:getPointInput ( / StartPt EndPt HalfWidth )
...... 抄的时候要仔细了,看看哪儿出了问题...
 楼主| 发表于 2005-4-20 21:42 | 显示全部楼层
我 按meflying说的改了,可以加载但运行时提示未知命令,怎么回事啊?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2005-4-20 21:55 | 显示全部楼层
有几处错误: (defun gp:getPointInput (/ StartPt EndPt HalfWidth)
(if (setq Startpt (getpoint "\n Start point of path :"))
(if (setq Endpt (getpoint Startpt "\n Endpoint of path:")) (if (setq Halfwidth (getdist Endpt "\n Half width of path:"));_看程序的意思应该用getdist,而不是getpoint
(list
(cons 10 Startpt)
(cons 11 Endpt)
(cons 40 (* Halfwidth 2.01));_少了一个右括号
(cons 50 (angle Startpt Endpt))
(cons 41 (distance Startpt Endpt)) )
)
)
)
)
 楼主| 发表于 2005-4-20 23:08 | 显示全部楼层
谢谢各位!我再试试.
发表于 2005-4-21 08:20 | 显示全部楼层
5楼不应该这么改吧,11对应的是点,应该没有问题...这是帮助文件中例子的一个函数,建议楼主在没有弄懂的情况下不要这样拿出来用的...


命令定义是(defun c:xxx...而上面的是(defun gp:xxx...


这是个函数,供程序中其它地方调用,而不是单独使用的
发表于 2005-4-21 08:31 | 显示全部楼层
飞哥,我改得哪儿不对啊,改之前我没看过帮助文件,现在去翻帮助文件,给我找到了这个例题:

下面是 gp:getPointInput 函数修改后的版本。在这个版本中,调用了名为 cons(construct a list 的缩写)的 AutoLISP 函数来为关联表中的子表加上关键字。可将这个版本的函数定义复制到控制台窗口中,按 ENTER 键,然后再次运行 (gp:getPointInput):

(defun gp:getPointInput	(/ StartPt EndPt HalfWidth)
  (if (setq StartPt (getpoint "\nStart point of path: "))
    (if	(setq EndPt (getpoint StartPt "\nEndpoint of path: "))
      (if (setq HalfWidth (getdist EndPt "\nHalf width of path: "))
            ;; 按上面所述创建
            ;; 关联表,该关联表将成为函数
            ;; 的返回值。
            (list
              (cons 10 StartPt)
              (cons 11 EndPt)
              (cons 40 (* HalfWidth 2.0))
              (cons 50 (angle StartPt EndPt))
              (cons 41 (distance StartPt EndPt))
                    )
      )
    )
  )
)

请注意,在创建表时,程序将用户指定的半宽乘以 2,转换成所需的小路全宽。

发表于 2005-4-21 11:58 | 显示全部楼层
不好意思,看岔了
 楼主| 发表于 2005-4-21 16:51 | 显示全部楼层
谢谢大家,现在可以运行了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-17 17:49 , Processed in 0.206664 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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