找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1756|回复: 8

[求助] [求助]:autolisp不支持多重循环吗?很急!那位大侠能告知!?

[复制链接]
发表于 2004-4-23 07:06:25 | 显示全部楼层 |阅读模式

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

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

×
autolisp不支持多重循环吗?例如:
(progn
(while (< i 10)
(progn
(while (< j 10)
(progn
(while (< k 10)
(expression)
(setq k (+ k 1))
)
(setq j (+ j 1))
)
)
setq i (+ i 1))
)
)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 6530个

财富等级: 富甲天下

发表于 2004-4-23 07:46:43 | 显示全部楼层
以你贴出的代码看,是“(setq k ( k 1))”中少了一个“+”。
另:Progn函数表示并列的语句,一般使用在If函数中,While函数一般不需要使用Progn。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-4-23 09:30:38 | 显示全部楼层
我只是举个例子!我在编一个基于三个角度变换的程序,需要对这三个角度值在一定范围内进行循环处理,但我我的循环大致如上,但没有结果!
那位大侠,指条名录!最好给个例子!多谢!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-4-23 09:35:39 | 显示全部楼层
1. setq i 左边少开括号。
2. 所有的progn都不必要,但留着也没影响。
3.循环的嵌套关系乱了。
改一下:

  1.   [FONT=courier new]
  2. (while (< i 10)
  3.   (while (< j 10)
  4.     (while (< k 10)
  5.       (expression)
  6.       (setq k (+ k 1))
  7.     )
  8.     (setq j (+ j 1))
  9.   )
  10.   (setq i (+ i 1))
  11. )

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

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2004-4-23 18:00:07 | 显示全部楼层
最初由 wf201626 发布
[B]我只是举个例子!我在编一个基于三个角度变换的程序,需要对这三个角度值在一定范围内进行循环处理,但我我的循环大致如上,但没有结果!
那位大侠,指条名录!最好给个例子!多谢!!! [/B]


AutoLisp是“表”函数,一个程序就是一个表,这个表中有什么呢?表!while函数构成的也只是一个由表构成的表,理论上是可以无限嵌套的,只是注意一定的规则,就是这个函数的“语法”。
编制程序时使用过多的嵌套有时会搅乱思路,这是最致命的,可以的话,使用引用自定义函数来完成相互嵌套可能更容易一些。
最后需要说的是,如果写较长的程序,一定要找一个好的编辑器(如VLisp编辑器Vlide、Lisplink等),经常检查语法错误,免得错误“积少成多”,最后无从下手。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-4-24 00:26:16 | 显示全部楼层
感谢各位帮忙!
但还是有问题?我是新手,请多原谅!
[php]
(setq i 0)
  (setq j 0)
  (setq k 0)
  (while (< i 10)
  (while (< j 10)
    (while (< k 10)
      (princ "ok")
      (setq k (+ k 1))
    )
    (setq j (+ j 1))
  )
  (setq i (+ i 1))
)
[/php]
中间的(princ "ok")是测试共循环多少次,但返回结果只有10次?
是我的程序出问题了,还是根本行不通?
盼望各位解答,等待ing!

[php]
(setq i 0)
  (setq j 0)
  (setq k 0)
  (while (< i 10)
  (while (< j 10)
    (while (< k 10)
      (princ "\nok")
      (setq k (+ k 1))
    )
    (princ "\nok")
    (setq j (+ j 1))
  )
  (princ "\nok")
  (setq i (+ i 1))
)
[/php]
结果为:打印了30次ok,看来是不行了?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-4-24 03:49:18 | 显示全部楼层
应该这样:
[php]
(defun c:test ()
  (setq i 0)
  (while (< i 10)
    (setq j 0)
    (while (< j 10)
      (setq k 0)
      (while (< k 10)
        (princ "\nok")
        (setq k (+ k 1))
      )
      (setq j (+ j 1))
    )
    (setq i (+ i 1))
  )
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-4-24 08:13:23 | 显示全部楼层
还是楼主的思路有问题。
编程的整个过程中,编程者的思路一定要清晰。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-4-24 12:53:09 | 显示全部楼层
作为一个初学者:我对大家的帮助至以崇高的敬意!感谢大家对我的帮助!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-27 03:40 , Processed in 0.328128 second(s), 48 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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