在符号表中查找下一项
(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 函数更方便一些。
明经通道 版权所有 未经许可 不得传播 | 评论 |