关于符号表 (AutoLISP)
符号表用于将非图形信息存储在图形的数据库中。 图形数据库中存在的符号表包括:
可以使用以下函数操作符号表条目:
符号表限制以下规则适用于符号表:
访问符号表条目该函数按顺序扫描符号表条目,并检索特定条目。符号表名称由字符串指定。这两个函数都返回包含 DXF 组代码的列表,这些代码类似于 返回的实体数据。tblnexttblsearchentget 第一次调用返回指定符号表中的第一个条目。指定同一表的后续调用将返回连续的条目,除非 (rewind) 的第二个参数为非零,在这种情况下,将再次返回第一个条目。tblnexttblnexttblnext 在下面的示例代码中,该函数检索当前图形中第一个块(如果有)的符号表条目,然后以列表格式显示该条目。GETBLOCK (defun C:GETBLOCK (/ blk ct) (setq blk (tblnext "BLOCK" 1)) ; Gets the first BLOCK entry. (setq ct 0) ; Sets ct (a counter) to 0. (textpage) ; Switches to the text screen. (princ "\nResults from GETBLOCK: ") (repeat (length blk) ; Repeats for the number of ; members in the list. (print (nth ct blk)) ; Prints a new line, then each ; list member. (setq ct (1+ ct)) ; Increments the counter by 1. ) (princ) ; Exits quietly. ) 从 BLOCK 表中检索到的条目包含一个 -2 组代码,该代码包含块定义中第一个实体的名称。如果块为空,则这是块的 Endblk 实体的名称,该实体在占用的块上永远不会看到。在具有名为 BOX 的单个块的图形中,对 的调用将显示以下内容。(名称值因会话而异。GETBLOCK Results from GETBLOCK: (0 . "BLOCK") (2 . "BOX") (70 . 0) (10 9.0 2.0 0.0) (-2 . <Entity name: 40000126>) 与 一样,第一个参数是命名符号表的字符串,但第二个参数是命名表中特定符号表条目的字符串。如果找到符号表条目,则返回其数据。此函数具有第三个参数 setnext,可用于协调 的操作。如果 setnext 为 nil,则调用对 没有影响,但如果 setnext 为 non-,则下一个调用返回 找到的符号表条目之后的符号表条目。tblnexttblsearchtblsearchtblnexttblsearchtblnextniltblnexttblsearch 在处理 VPORT 符号表时,setnext 选项非常有用,因为特定视口配置中的所有视口都具有相同的名称(例如 *ACTIVE)。如果在关闭 AutoCAD TILEMODE 系统变量时访问 VPORT 符号表,则在打开 TILEMODE 之前,任何更改都不会产生可见效果。不要将 VPORTS(由 VPORT 符号表描述)与纸张空间视口实体混淆。 以下处理 4VIEW 配置中的所有视口: (setq v (tblsearch "VPORT" "4VIEW" T)) ; Finds first VPORT entry. (while (and v (= (cdr (assoc 2 v)) "4VIEW")) .. ; ... Processes entry ... . (setq v (tblnext "VPORT")) ; Gets next VPORT entry. ) 相关概念 |
|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2024-12-15 11:52
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.