tblnext
在符号表中查找下一项
(tblnext table-name [rewind])
重复使用 tblnext 时,它每次通常会返回指定表中的下一个条目。tblsearch
函数可以设置要检索的下一个条目。如果提供了可选参数 rewind 且其值不为 nil,那么函数就会回绕到该符号表的起始位置,从而获得它的第一个条目。
参数
table-name
字符串,指定符号表。有效的 table-name 值为
"LAYER"、"LTYPE"、"VIEW"、"STYLE"、"BLOCK"、"UCS"、"APPID"、"DIMSTYLE" 和
"VPORT"。该参数不区分大小写。
rewind
如果指定该参数且其值不为 nil,则回绕符号表且检索其中的第一个条目。
返回值
如果找到了一个条目,函数就会以点对表的形式返回该条目的 DXF 类型码和值。如果符号表中没有条目了,函数返回
nil。本函数永远不会返回已被删除的条目。
示例
Retrieve the first layer in the symbol table:
命令: (tblnext "layer" T)
((0 . "LAYER") (2 . "0") (70 . 0) (62 . 7) (6 .
"CONTINUOUS"))
检索符号表中的第一个图层:
(0 . "LAYER") 符号类型
(2 . "0") 符号名
(70 . 0) 标志
(62 . 7) 颜色代码,如果图层是被关闭的,颜色代码为负值
(6 . "CONTINUOUS") 线型名称
注意上述返回表中没有 -1 组。AutoCAD 会记住从每个符号表中最近一次所返回的条目,每次对某符号表调用 tblnext
函数时它会返回该表中的下一个条目。所以,每次开始扫描一个表时,应该确保提供了不为 nil
的第二个参数,这样才能回绕到数据库中该表的开头,从而获得该表中的第一个条目。
由块表中检查出的条目中包含了一个 -2 组,其组值是该块定义中的第一个图元的图元名(如果有的话)。因此,假定当前图形中有一个名为
BOX 的块,那么:
命令: (tblnext "block")
((0 . "BLOCK") (2 . "BOX") (70 . 0) (10 9.0 2.0 0.0) (-2 .
<图元名: 1dca370>))
返回值的含义如下:
(0 . "BLOCK") 符号类型
(2 . "BOX") 符号名
(70 . 0) 标志
(10 9.0 2.0 0.0) 原点坐标 X,Y,Z
(-2 . <图元名: 1dca370>) 第一个图元
entget 和 entnext 函数可以接受 -2 组中的图元名,但其他的图元访问函数不接受该图元名。例如,不能用 ssadd
函数将其加入到一个选择集中。通过以 -2 组中的图元名为参数调用 entnext 函数,可以扫描组成块定义的各个图元。在块定义的最后一个图元之后,再调用
entnext 函数将返回 nil。
如果一个块定义中不包含图元,那么 tblnext 函数所返回的 -2 组的组值是该块的 endblk 图元的图元名。
注意 由于 vports 函数可以返回当前 VPORT 表信息,所以使用
vports 函数来检索 VPORT 信息可能比用 tblnext 函数更方便一些。
追问恩!能详细一点吗?比如说那个符号类型是什么意思呀?它和符号名是不是一个概念呀!还有就是那个标志是什么概念呀那个(70 . 0)是什么东东呀比如说(8 . 0)中的8是图层而0么就是0层,那(70 . 0)又是什么呀?
追答组码0
表示图元类型的字符串(固定) -----就是问的符号类型
组码8
图层名(固定)
组码70有点复杂 根据图元类型不同有不同的答案 就是描述改图元的某些状态
例如图元类型为"block"
组码70的值如下表
块类型标志(按位编码值,可以组合使用):
0 = 表示不应用下列任何标志
1 =
由图案填充、关联标注、其他内部操作或应用程序生成的匿名块
2 =
块具有非固定属性定义(如果块具有任何固定属性定义或根本没有属性定义,则不设置此位)
4 = 块是外部参照 (xref)
8 =
块是外部参照覆盖
16 = 块依赖外部参照
32 = 块是融入的外部参照,或者依赖外部参照(输入时被忽略)
64 =
定义是被引用的外部参照(输入时
被忽略)
本回答被提问者和网友采纳