找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1909|回复: 2

[LISP函数]:【求助】如何取多层嵌套表中的原子?

[复制链接]
发表于 2009-1-14 22:01:16 | 显示全部楼层 |阅读模式

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

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

×
有如下一种结构的表,怎样才能分层次的取得相应图元名,然后entget该图元名的数据库。

表的层次,可能不止三层。

(((<图元名: 7ef671b0> . 2)                                                                                                  ;最外层图块图元名及其内部包含的图块数
   (((<图元名: 7ef671a8> . 4)                                                                                               ;第二层的第一个图块图元名及其内部包含的实体数
      (<图元名: 7ef670b0> <图元名: 7ef670a8> <图元名: 7ef670a0> <图元名:  7ef67098>) ;实体图元名表
    )
     ((<图元名: 7ef671a0> . 2)                                                                                              ;第二层的第二个图块图元名及其内部包含的图块数
       (((<图元名: 7ef67108> . 3)                                                                                           ;第三层的第一个图块图元名及其内部包含的实体数
   (<图元名: 7ef50ec0> <图元名: 7ef50eb8> <图元名: 7ef50eb0>)                                      ;实体图元名表
)
  ((<图元名: 7ef67100> . 4)                                                                                                  ;第三层的第二个图块图元名及其包含的实体数
    (<图元名: 7ef670b0> <图元名: 7ef670a8> <图元名: 7ef670a0> <图元名: 7ef67098>)     ;实体图元名表
  )
       )
     )
   )
)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 2个

财富等级: 恭喜发财

发表于 2009-2-9 13:35:49 | 显示全部楼层

Re: [LISP函数]:【求助】如何取多层嵌套表中的原子?

最初由 jx2008 发布
[B]有如下一种结构的表,怎样才能分层次的取得相应图元名,然后entget该图元名的数据库。

表的层次,可能不止三层。

(((<图元名: 7ef671b0> . 2)                                                              ... [/B]


看看这个对你有没有用。以后请你不要发错版块!

  1.   [FONT=courier new]
  2. ;;; ==================================================================
  3. ;;;blkname为块名
  4. (defun th_subelst_blk (blkname / blk lst)
  5.   (setq blk (vla-item (th-doccollection 'blocks) blkname))
  6.   (setq lst (list blkname))
  7.   (vlax-for each blk (if (/= (vla-get-objectname each) "AcDbBlockReference")
  8.                        (setq lst (cons each lst))
  9.                        (setq lst (cons (th_subelst_blk (vla-get-name each)) lst))
  10.                      )
  11.   )
  12.   (reverse lst)
  13. )
  14. ;;; ==================================================================
  15. (defun th-doccollection (typename)
  16.   (vlax-get-property (thactdoc) typename)
  17. )
  18. (defun thacadobj ()
  19.   (cond
  20.     (%$*thacadobj*$%)
  21.     (setq %$*thacadobj*$% (vlax-get-acad-object))
  22.   )
  23. )
  24. (defun thactdoc ()
  25.   (cond
  26.     (%$*thactdoc*$%)
  27.     (setq %$*thactdoc*$% (vla-get-activedocument (thacadobj)))
  28.   )
  29. )
  30. ;;; ==================================================================
  31.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-11 13:23:49 | 显示全部楼层
2楼的返回的是vla的表。
我的意思不是这样的,2楼误解了,我已经返回来了这样的表,要怎么遍历这个表,取得对应图元名的值,比如,块内圆的圆心坐标。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 06:33 , Processed in 0.196209 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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