符号表访问
该函数按顺序扫描符号表条目,并检索特定条目。表名称由字符串指定。有效名称为“”、“”、”这两个函数都以结果缓冲区列表的形式返回条目,其中包含 DXF 组代码。acdbTblNext()acdbTblSearch()LAYERLTYPEVIEWSTYLEBLOCKUCSVPORTAPPID 第一次调用返回指定表中的第一个条目。指定同一表的后续调用将返回连续的条目,除非 () 的第二个参数为非零,在这种情况下,将再次返回第一个条目。acdbTblNext()acdbTblNext()rewindacdbTblNext() 在下面的示例中,该函数检索当前图形中的第一个块(如果有),并调用该函数以列表格式显示该块的内容。getblock()printdxf() void getblock() { struct resbuf *bl, *rb; bl = acdbTblNext("BLOCK", 1); // First entry acutPrintf("\nResults from getblock():\n"); // Print items in the list as "assoc" items. for (rb = bl; rb != NULL; rb = rb->rbnext) printdxf(rb); // Release the acdbTblNext list. acutRelRb(bl); } 从 BLOCK 表中检索到的条目包含一个 -2 组,该组包含块定义中第一个实体的名称。在具有名为 BOX 的单个块的图形中,对 的调用将打印以下内容(名称值因会话而异):getblock() getblock() 的结果: (0 .“块”) (2 .“盒子”) (70 . 0) (10 9.0 2.0 0.0) (-2 . <实体名称:40000126>) 的第一个参数是命名表的字符串,但第二个参数是命名表中特定符号的字符串。如果找到该符号,则返回其数据。此函数具有第三个参数 ,可用于协调 的操作。如果为零,则调用对 没有影响,但如果为非零,则下一个调用返回 找到的条目后面的表条目。acdbTblSearch()acdbTblSearch()setnextacdbTblNext()setnextacdbTblSearch()acdbTblNext()setnextacdbTblNext()acdbTblSearch() 该选项在处理 VPORT 符号表时特别有用,因为特定视口配置中的所有视口都具有相同的名称(例如 *ACTIVE)。setnext 请记住,如果在 TILEMODE 关闭时访问 VPORT 符号表,则在重新打开 TILEMODE 之前,更改不会产生任何可见效果。(TILEMODE 可通过 SETVAR 命令或直接输入其名称来设置。不要将 VPORT 符号表与视口实体混淆。 若要在名为 4VIEW 的配置中查找和处理每个视口,可以使用以下代码: struct resbuf *v, *rb; v = acdbTblSearch("VPORT", "4VIEW", 1); while (v != NULL} { for (rb = v; rb != NULL; rb = rb->rbnext) if (rb->restype == 2) if (strcmp(rb->resval.rstring, "4VIEW") == 0) { .// Process the VPORT entry . . acutRelRb(v); // Get the next table entry. v = acdbTblNext("VPORT", 0); } else { acutRelRb(v); v = NULL; // Break out of the while loop. break; // Break out of the for loop. } }
父主题: |
|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2024-12-15 13:06
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.