找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 865|回复: 8

[求助] [求助]:请各位朋友帮我看一下,此程序错在那?

[复制链接]
发表于 2006-3-18 07:17:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
不好用

defun c:luox(/)
  (setq b1 (getpoint"请指定螺旋线基点:"))  //setq函数用于给变量赋值
  (setq r (getreal"请指定螺旋线平均半径:"))
  (setq disp ( getreal"请输入螺旋线节距:"))
  (setq n (getint"请输入每圈细化段数:"))
  (setq delta (/(* 2.0 pi) n))
  (setq j (/ disp n))
  (setq bb(caddr b1))
  (setq ang 0)
  (setq k 0)
  (command "ucs" "o" b1) //将坐标原点移到指定的螺旋线基点
  (command "3dpoly" (list r 0 0)) //以 (r,0,0) 为起点绘制多段线
  (repeat n //循环操作语句,n为循环次数
   (setq k(+ k 1))
      (setq ang(+ delat ang))
    (setq pt2(list (* r(cos ang)) (* r(sin ang)) (+ 0 (* j k ))))
    (command pt2)
    )
  (command "")
     )

好用
(defun C:luox(/)
  (setq b1 (getpoint"请指定螺旋线基点:")) //setq函数用于给变量赋值
  (setq r (getreal"请指定螺旋线平均半径:"))
  (setq disp ( getreal"请输入螺旋线节距:"))
  (setq n (getint"请输入每圈细化段数:"))
  (setq delta (/(* 2.0 pi) n))
  (setq j (/ disp n))
  (setq bb(caddr b1))
  (setq ang 0)
  (setq k 0)
  (command "UCS" "o" b1) //将坐标原点移到指定的螺旋线基点
  (command "3dpoly" (list r 0 0)) //以(r,0,0)为起点绘制多段线
  (repeat n //循环操作语句,n为循环次数
    (setq k(+ k 1))
    (setq ang(+ delta ang))
    (setq pt2(list (* r(cos ang)) (* r(sin ang)) (+ 0 (* j k))))
    (command  pt2)
    )
  (command "")
   )
两个程序我一个一个字符对的,没有发现有错的地方,但前者就是不好用,后者好用,敬请高手帮忙给予指点,谢谢!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-3-18 07:42:27 | 显示全部楼层
(setq ang(+ delat ang))这句的变量错了,delta
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-18 20:21:55 | 显示全部楼层
感谢2楼的,改过来后,我试了还是不行。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-3-18 21:00:31 | 显示全部楼层
我试了一下可以啊,不过有一点说明一下,“//setq函数用于给变量赋值”不能用//来注释,应该用“;_”打头或直接用“;”打头。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-3-18 21:03:51 | 显示全部楼层
晕,第一句就错了
defun c:luox(/)

(defun c:luox(/)... 才对嘛

另外, autolisp/vlisp 的注释是用 “;”(分号)打头的。
“// ”打头不是注释行,只是被忽略的无意义语句而已。不信你把那个“好用”的程序里用“// ”打头的注释行中的“// ”删掉,仍然好用。

注意那个“不好用”的程序里有一句注释是这样的:

//以  (r,0,0)  为起点绘制多段线

其中 (r,0,0)  在运行时被认为是lisp语句了, 自然出错。

而那个“好用”的程序里的注释是这样的:

//以(r,0,0)为起点绘制多段线

注意其中(r,0,0)的括号是中文字符,所以整个语句仍然是无效语句被忽略了,程序当然能够正常运行。


结论:一定要用分号(;)做注释!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-3-19 19:52:30 | 显示全部楼层
6楼很强
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-3-19 21:16:42 | 显示全部楼层
真的是啊,连括号的中英文也看得出
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-3-19 21:23:04 | 显示全部楼层
  1. [FONT=courier new](load "xyp_lib.vlx")  ;版本 V.20060314
  2. ;|下载和加载通用函数(可在签名栏直接下载后放到搜索路径下)
  3. 利用以下任何一种方式(首选第一种)即可加载和运行通用函数内的所有子程序:
  4. ★1·在acad.lsp中增加(load"xyp_lib.vlx")
  5. ■2·在每个程序内增加(load"xyp_lib.vlx")
  6. ■3·在command下,输入(load"xyp_lib.vlx")
  7. ■4·在菜单.mnl中增加(load"xyp_lib.vlx")
  8. ■5·将xyp_lib.vlx文件直接拽到cad屏幕
  9. [COLOR=red] ★通用函数下载地址:[/COLOR]
  10. [url]http://www.xdcad.net/forum/attachment.php?s=&postid=1606661[/url]
  11. |;

  12. ;;;螺旋线
  13. (defun C:luox ()
  14.   (cmdla0)
  15.   (if (null r)
  16.     (setq r 1000)
  17.   )
  18.   (if (null dp)
  19.     (setq 10)
  20.   )
  21.   (if (null n)
  22.     (setq n 100)
  23.   )
  24.   (mkla "螺旋线" 3)
  25.   (while (setq b1 (getpoint "\n请指定螺旋线基点<退出>: "))
  26.     (setq r   (UREAL 7 "" "\n请指定螺旋线平均半径" r)
  27.           dp  (UINT 1 "" "\n请输入螺旋线节距" dp)
  28.           n   (UINT 1 "" "\n请输入每圈细化段数" n)
  29.           da  (/ (* 2.0 pi) n)
  30.           j   (/ dp n)
  31.           bb  (caddr b1)
  32.           ang 0
  33.           k   0
  34.     )
  35.     (setvar "osmode" 0)
  36.     (command "UCS" "o" b1)
  37.     (command "3dpoly" (list r 0 0))
  38.     (repeat n
  39.       (setq k        (+ k 1)
  40.             ang        (+ da ang)
  41.             pt2        (list (* r (cos ang)) (* r (sin ang)) (+ 0 (* j k)))
  42.       )
  43.       (command pt2)
  44.     )
  45.     (command "")
  46.   )
  47.   (cmdla1)
  48. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-30 05:38:07 | 显示全部楼层
谢谢各位的帮忙,可是我按照朋友们指点的,改后还是不行。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-29 06:49 , Processed in 0.411470 second(s), 48 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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