找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1687|回复: 37

[求助] [求助]:关于数组

[复制链接]
发表于 2003-2-14 11:57:12 | 显示全部楼层 |阅读模式

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

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

×
刚学Lisp,不知如何创建数组、调用数组?请各位高手指点一二!
(程序主旨:在acad绘图界面上任取一个点,以数组方式记录,然后循环取点、记录,接着运用循环读取每个点并输出至屏幕上!不知可有什么简便的方法可实现这一目标?不知哪位大侠有类似源码提供?)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-2-14 12:30:12 | 显示全部楼层
看不出你說的数组方式记录有甚麼用????


"接着运用循环读取每个点并输出至屏幕上"
跟直接用POINT命令有何差別???
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-2-14 15:22:18 | 显示全部楼层
最初由 LUCAS 发布
[B]看不出你說的数组方式记录有甚麼用????


"接着运用循环读取每个点并输出至屏幕上"
跟直接用POINT命令有何差別??? [/B]

我的意思是取得点的X 、Y值后通过计算得到两个新值,并分别放在两个数组里,循环上述步骤后,再运用循环读取每个新的X 、Y值,并输出至屏幕上!望指教!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-2-14 15:41:25 | 显示全部楼层
好像用不着什么数组吧
(setq b T)
(while (= b T)
(setq a (getpoint "\n请在屏幕上取点"))
(if (= a nil) (setq b nil)
(progn
(setq x (car a))
(setq y (cadr a))
)
)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-2-14 16:09:22 | 显示全部楼层
lisp中好像没有数组的概念,
你可以使用‘表’,将依次得到的点坐标作为元素加入到表中,
调用时,循环使用(nth n list)函数。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2003-2-14 17:42:51 | 显示全部楼层
最初由 zhynt 发布
[B]好像用不着什么数组吧
(setq b T)
(while (= b T)
(setq a (getpoint "\n请在屏幕上取点"))
(if (= a nil) (setq b nil)
(progn
(setq x (car a))
(setq y (cadr a))
)
)
) [/B]

照此执行后,X 、Y的值是不断变化的而不是逐次增加,我的主旨如下:即第一点A(3,5),X为(3),Y为(5),第二点B(4,6),X为(3,4),Y为(5,6),第三点C(7,8),X为(3,4,7),Y为(5,6,8)......衷心谢谢你的指教!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2003-2-14 18:49:21 | 显示全部楼层
最初由 liuzqyh 发布
[QUOTE]最初由 zhynt 发布
[B]好像用不着什么数组吧
(setq b T)
(while (= b T)
(setq a (getpoint "\n请在屏幕上取点"))
(if (= a nil) (setq b nil)
(progn
(setq x (car a))
(setq y (cadr a))
)...


示例,希望对你有帮助:

  1. (defun c:test()
  2.   (setq b T c nil xl nil yl nil)
  3.   (while (= b T)
  4.     (setq a (getpoint "\n请在屏幕上取点:"))
  5.     (if (= a nil) (setq b nil)
  6.       (setq c (cons a c))
  7.     )
  8.   )
  9.   (setq c (reverse c))         ;这里c类似一个数组,但它只是一个表
  10.   (mapcar                          ;对表中元素逐个操作
  11.     '(lambda(x)
  12.        (setq xl (cons (car x) xl)     ;取X值
  13.              yl (cons (nth 1 x) yl)   ;取Y值,表操作的另一种方法
  14.        )
  15.      )
  16.     c
  17.   )
  18.   (setq xl (reverse xl)               ;X值表
  19.         yl (reverse yl)               ;Y值表
  20.   )
  21.   (princ c)
  22.   (princ xl)
  23.   (princ yl)
  24.   (princ)
  25. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-2-14 22:47:49 | 显示全部楼层
http://www.xdcad.net/forum/showthread.php?s=&threadid=31940
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-2-15 02:55:19 | 显示全部楼层
最初由 ll_j 发布
[B][QUOTE]最初由 liuzqyh 发布
[QUOTE]最初由 zhynt 发布
[B]好像用不着什么数组吧
(setq b T)
(while (= b T)
(setq a (getpoint "\n请在屏幕上取点"))
(if (= a nil) (setq b nil)
(progn
(se... [/B]

谢谢你的帮助,由于我刚学不久,我得过段时间理解后才能再次向你求教!另我想请问你,编译时有误,如(Command: ; 错误: 参数类型错误: stringp nil),你是怎样知道程序是在哪出的错,因为Lisp不像VB调试那么直观(至少我是这样认为),请详细指教!!!谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2003-2-15 11:17:01 | 显示全部楼层
编译时有错误,可以在适当位置设置中断,单步执行检查,见http://www.xdcad.net/forum/showthread.php?s=&threadid=28154第10帖。

另外,还可以在Acad下直接执行,查看错误,执行前先关闭出错处理函数,就是将程序中出错处理函数关闭并在Acad命令行输入“(setq *error* nil)”,这样对于不太长的程序可以找出出错地点。
至于错误类型,可以查看Acad帮助文档中相关部分,不过大多可以从字面理解。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-2-15 15:23:20 | 显示全部楼层
最初由 ll_j 发布
[B]编译时有错误,可以在适当位置设置中断,单步执行检查,见http://www.xdcad.net/forum/showthread.php?s=&threadid=28154第10帖。

另外,还可以在Acad下直接执行,查看错误,执行前先关闭出错处理函数... [/B]

我这编了一个lisp程序,由于是初学,可能过多烦琐,且在执行平面控制点绘制--绘图命令时出错,查了许久没找到出错处,请您帮忙看一下,谢谢!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2003-2-16 18:00:37 | 显示全部楼层
初学者能写这样的程序的确不错,看了一下,提一些意见。以后有什么问题,也可以直接发给我(ll_j@21cn.com)。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-2-16 21:24:58 | 显示全部楼层
最初由 ll_j 发布
[B]初学者能写这样的程序的确不错,看了一下,提一些意见。以后有什么问题,也可以直接发给我(ll_j@21cn.com)。 [/B]

谢谢你的帮助,程序我已下载了,正在不断完善,经后有问题一定多多请教你,到时还得多麻烦你了!我可以将你加为好友吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-2-17 11:59:20 | 显示全部楼层
ll_j,按你编的程序我想循环输出X、Y值表的数值,如何循环?如:X(1,2,3,4)循环输出为:1,2,3,4!望明示!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 12:04 , Processed in 0.939072 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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