找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1057|回复: 12

[求助] [求助]:请问怎样在lisp中实现数组的功能

[复制链接]
发表于 2005-11-10 08:15:29 | 显示全部楼层 |阅读模式

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

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

×
请问各位高手在lisp中有数组吗?我找了很多材料都没找到
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-11-10 08:36:46 | 显示全部楼层
lisp中没有数组,可以用表list实现。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-10 10:27:52 | 显示全部楼层
(VLAX-MAKE-SAFEARRAY TYPE '(L-BOUND . U-BOUND)...)建立安全数组
例将(1 2 3)转化为安全数组
(SETQ X  (vlax-make-safearray vlax-vbinteger (cons 0 2)))注意上边界2 和下边界0一定要和表的数量相对应比如表有5项( 1 2 3 4 5)那么就要(cons 0 4),,,0-4刚好5项或者也可以1-6随自己选
vlax-vbinteger 数组类型你可以自己选具体参考VLISP的帮助关于数据类型的参考
然后
(vlax-safearray-fill x (list 1 2 3))就将表(LIST 1 2 3)转化为整型数组了....;;;其实就是将列表与数组类型对号入座...
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-10 10:58:56 | 显示全部楼层
我也是刚刚才学习lisp,前段时间在编涵洞程序时自己编了一个“简单数组提取的程序”放在了自己的函数库里,有点简单,希望高手指教,同时也和楼主分享!
  1. [FONT=courier new];;;**********************************;;;
  2. ;;;-----------简单数组提取-----------;;;
  3. ;;;**********************************;;;
  4. (defun point (number)
  5.   (cond        ((= number 1) point1)
  6.         ((= number 2) point2)
  7.         ((= number 3) point3)
  8.         ((= number 4) point4)
  9.         ((= number 5) point5)
  10.         ((= number 6) point6)
  11.         ((= number 7) point7)
  12.         ((= number 8) point8)
  13.         ((= number 9) point9)
  14.         ((= number 10) point10)
  15.         ((= number 11) point11)
  16.         ((= number 12) point12)
  17.         ((= number 13) point13)
  18.         ((= number 14) point14)
  19.         ((= number 15) point15)
  20.         ((= number 16) point16)
  21.         ((= number 17) point17)
  22.         ((= number 18) point18)
  23.         ((= number 19) point19)
  24.         ((= number 20) point20)
  25.         ((= number 21) point21)
  26.         ((= number 22) point22)
  27.         ((= number 23) point23)
  28.         ((= number 24) point24)
  29.         ((= number 25) point25)
  30.         ((= number 26) point26)
  31.         ((= number 27) point27)
  32.         ((= number 28) point28)
  33.         ((= number 29) point29)
  34.         ((= number 30) point30)
  35.         ((= number 31) point31)
  36.         ((= number 32) point32)
  37.         ((= number 33) point33)
  38.         ((= number 34) point34)
  39.         ((= number 35) point35)
  40.         ((= number 36) point36)
  41.         ((= number 37) point37)
  42.         ((= number 38) point38)
  43.         ((= number 39) point39)
  44.         ((= number 40) point40)
  45.   )
  46. )[/FONT]

在主程里先计算好各点,然后在进行编辑时直接输入(point n)调用。(其中n可以通过循环进行赋值)
再转过两个明经的帖子给楼主:
http://www.mjtd.com/bbs/dispbbs.asp?BoardID=3&ID=5817
http://www.mjtd.com/bbs/dispbbs.asp?BoardID=3&ID=1878
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-10 11:03:04 | 显示全部楼层
如果你要学习LISP的话,请忘记 数组 吧!
在LISP中," 表" 是远比数组灵活有效的组织数据的方式。
LISP是围绕"表"这一概念而展开的语言,表在LISP中无所不在,甚至LISP程序本身就是一个表。
基于"表",LISP是宏观和微观统一的优美语言!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-10 11:44:45 | 显示全部楼层
最初由 wkai 发布
[B]如果你要学习LISP的话,请忘记 数组 吧!
在LISP中," 表" 是远比数组灵活有效的组织数据的方式。
LISP是围绕"表"这一概念而展开的语言,表在LISP中无所不在,甚至LISP程序本身就是一个表。
基于"表",LISP是宏观... [/B]

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

使用道具 举报

 楼主| 发表于 2005-11-10 14:17:46 | 显示全部楼层
我想做一个提取pl线的坐标的程序.然后让它根据一定的条件排序,由于是初学所以很多都不会,如果有数组的话就方便多了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-10 15:47:11 | 显示全部楼层
数组在LISP中使用显得不太方便,谁有好例子,提供给大家学习?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-10 15:47:19 | 显示全部楼层
最初由 laoxie_1983 发布
[B]我想做一个提取pl线的坐标的程序.然后让它根据一定的条件排序,由于是初学所以很多都不会,如果有数组的话就方便多了! [/B]


(xyp-get-Vertexes 实体名 模式)
  1. [FONT=courier new]
  2. (load "xyp_lib")
  3. ;|加载通用函数(可在签名栏直接下载)
  4. 如果已经下载xyp_lib并放到搜索路径下可以不再下载!
  5. 利用以下任何一种方式(首选第一种)即可加载和运行通用函数内的所有子程序:
  6. ★1·在acad.lsp中增加(load"xyp_lib")
  7. ■2·在每个程序内增加(load"xyp_lib")
  8. ■3·在command下,输入(load"xyp_lib")
  9. ■4·在菜单.mnl中增加(load"xyp_lib")
  10. ■5·将xyp_lib.vlx文件直接拽到cad屏幕
  11. [COLOR=red] ★通用函数下载地址:[/COLOR]
  12. [url]http://www.xdcad.net/forum/attachment.php?s=&postid=1606661[/url]
  13. [url]http://www.mjtd.com/bbs/dispbbs.asp?boardID=3&ID=37554&page=1[/url]
  14. |;
  15. (defun c:test (/ ptn)
  16.   (if (setq ss (ssget '((0 . "*POLYLINE"))))
  17.     (setq ptn (xyp-get-Vertexes (ssname ss 0) t))
  18.   )
  19.   ptn
  20. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-11-10 16:21:45 | 显示全部楼层
最初由 laoxie_1983 发布
[B]我想做一个提取pl线的坐标的程序.然后让它根据一定的条件排序,由于是初学所以很多都不会,如果有数组的话就方便多了! [/B]

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

使用道具 举报

发表于 2005-11-10 18:14:31 | 显示全部楼层
获得一条多段线的所有顶点。

  1. (princ "\n选择一条多段线:")
  2. (setq e (entget(car(entsel))))
  3. (print(vl-remove-if-not '(lambda(x)(=(car x)10)) e))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-10 20:20:46 | 显示全部楼层
最初由 似水无痕 发布
[B]我也是刚刚才学习lisp,前段时间在编涵洞程序时自己编了一个“简单数组提取的程序”放在了自己的函数库里,有点简单,希望高手指教,同时也和楼主分享!
[CODE];;;*****************************... [/B]


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

使用道具 举报

发表于 2005-11-10 20:32:44 | 显示全部楼层
现在求这个我多半愿意使用下面的代码,支持轻/重多义线。

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-28 19:03 , Processed in 0.299757 second(s), 54 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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