明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1924|回复: 2

【求助】如何取多层嵌套表中的原子?

[复制链接]
发表于 2009-1-14 21:46:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2009-1-15 10:19:20 编辑

有如下一种结构的表,怎样才能分层次的取得相应图元名,然后entget该图元名的数据库。
表的层次,可能不止三层。
  1. [CODE](((<图元名: 7ef671b0> . 2)                                                                                                  ;最外层图块图元名及其内部包含的图块数
  2.    (((<图元名: 7ef671a8> . 4)                                                                                               ;第二层的第一个图块图元名及其内部包含的实体数
  3.       (<图元名: 7ef670b0> <图元名: 7ef670a8> <图元名: 7ef670a0> <图元名:  7ef67098>) ;实体图元名表
  4.     )
  5.      ((<图元名: 7ef671a0> . 2)                                                                                              ;第二层的第二个图块图元名及其内部包含的图块数
  6.        (((<图元名: 7ef67108> . 3)                                                                                           ;第三层的第一个图块图元名及其内部包含的实体数
  7.    (<图元名: 7ef50ec0> <图元名: 7ef50eb8> <图元名: 7ef50eb0>)                                      ;实体图元名表
  8. )
  9.   ((<图元名: 7ef67100> . 4)                                                                                                  ;第三层的第二个图块图元名及其包含的实体数
  10.     (<图元名: 7ef670b0> <图元名: 7ef670a8> <图元名: 7ef670a0> <图元名: 7ef67098>)     ;实体图元名表
  11.   )
  12.        )
  13.      )
  14.    )
  15. )
  16. )
复制代码
[/code]必须修正一下,表的正确的结构格式应该是如下这样的,如果要获取表中的原子,已经比较明确了,已想到获取其原子的方法,就是采用递归的形式遍历表及其多重嵌套表。
  1. [CODE];;表开始
  2. (;;第一个原子开始
  3. ((<图元名: 7ef72088> . 3);普通块,由3个实体组成
  4.    (<图元名: 7ef70fa8> <图元名: 7ef70fa0> <图元名: 7ef70f98>)
  5. );;第一个原子结束
  6. ;;第二个原子开始
  7.   ((<图元名: 7ef72168> . 2);嵌套块,该块由两个块组成
  8.     ;;嵌套块中的第一个块开始
  9.     (((<图元名: 7ef72160> . 4);普通块,由四个实体组成
  10.        (<图元名: 7ef72108> <图元名: 7ef72100> <图元名: 7ef720f8> <图元名: 7ef720f0>)
  11.      );;嵌套块中的第一个块结束
  12.       ;;嵌套块中的第二个块开始
  13.       ((<图元名: 7ef72158> . 3);普通块,由两个实体和一个图块组成
  14. (<图元名: 7ef72020> <图元名: 7ef72018>
  15.    ;;嵌套块中的第二个块中的第一个块开始
  16.    ((<图元名: 7ef72010> . 3);普通块,有3三个实体组成
  17.      (<图元名: 7ef70fa8> <图元名: 7ef70fa0> <图元名: 7ef70f98>)
  18.    );;嵌套块中的第二个块中的第一个块结束
  19. )
  20.       );;嵌套块中的第二个块结束
  21.     );;嵌套块中的第一个块结束
  22.   );;第二个原子结束
  23.   ;;第三个原子开始
  24.   ((<图元名: 7ef70f70> . 5);普通块,由5个实体组成
  25.     (<图元名: 7ef70f68> <图元名: 7ef70f60> <图元名: 7ef70f58> <图元名: 7ef70f50> <图元名: 7ef70f48>)
  26.   );;第三个原子结束
  27. );;表结束
  28. 1.1、嵌套图块返回如下格式:
  29. (((<图元名: 7ef67130> . 2)
  30.    (((<图元名: 7ef67108> . 3)
  31.       (<图元名: 7ef50ec0> <图元名: 7ef50eb8> <图元名: 7ef50eb0>)
  32.     )
  33.      ((<图元名: 7ef67100> . 4)
  34.        (<图元名: 7ef670b0>     <图元名:      7ef670a8>
  35.    <图元名:      7ef670a0>     <图元名:
  36.    7ef67098>
  37.   )
  38.      )
  39.    )
  40. )
  41. )
  42. 1.2、一般图块,单层不嵌套的图块,返回如下格式:
  43. (((<图元名: 7ef67120> . 4)
  44.    (<图元名: 7ef670b0> <图元名: 7ef670a8> <图元名: 7ef670a0> <图元名:
  45.       7ef67098>)
  46. )
  47. )
复制代码
[/code]
发表于 2009-1-15 08:56:00 | 显示全部楼层

就用nth一个一个取吧

可以用listp循环判断是否是表(表中是否有嵌套)

 楼主| 发表于 2009-1-22 17:23:00 | 显示全部楼层
补充如下:
标的结构如下,内层的数据,需要到外层的数据,递归循环,编个例程。
  1. ((<图元名: 7ef66088>
  2.     (<图元名: 7ef64fa8> <图元名: 7ef64fa0> <图元名: 7ef64f98>)
  3. )
  4.   (<图元名: 7ef66168>
  5.      ((<图元名: 7ef66160>
  6.          (<图元名: 7ef66108> <图元名: 7ef66100> <图元名: 7ef660f8> <图元名: 7ef660f0>)
  7.       )
  8.        (<图元名: 7ef66158>
  9.    (<图元名: 7ef66020> <图元名: 7ef66018>
  10.       (<图元名: 7ef66010>
  11.          (<图元名: 7ef64fa8> <图元名: 7ef64fa0> <图元名: 7ef64f98>)
  12.       )
  13.    )
  14.        )
  15.      )
  16.   )
  17.   (<图元名: 7ef64f70>
  18.      (<图元名: 7ef64f68> <图元名: 7ef64f60> <图元名: 7ef64f58> <图元名: 7ef64f50> <图元名: 7ef64f48>)
  19.   )
  20. )
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-9-28 16:22 , Processed in 0.173085 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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