C#.NET Autocad 2021 API:访问给定 BlockTable 中的特定 BlockTableRecords?

C#.NET Autocad 2021 API: Accessing specific BlockTableRecords within a given BlockTable?

我正在寻找有关 BlockTable class 细节的建议。我知道虽然您可以获得块表包含的所有块表记录的枚举器,但我似乎找不到更有效的方法来访问特定块表记录的 ObjectID。我知道计算机可以访问此类信息......无论如何,我无法想象 BlockTable.Has() 函数在没有它的情况下工作。我也检查了文档,但实际上并没有在任何地方列出 BlockTable class 的功能或属性:/

我当前的代码依赖于用户输入的字符串来检索块,当插入 BlockTable.Has() 时,它成功 returns 正确的 bool 结果。

感谢任何帮助! 泰勒

BlockTable 包装器实现了一个索引器,它可以与 stringObjectId 一起使用。即 myBlkTable["theBlockName"]

注意:不能保证这是“有效的”,并且可能只是在底层枚举数组。您需要 运行 一些时间试验,看看什么更有效。

问问自己您正在寻找的微优化是否值得您花时间在上面总是好的。听起来你只是在处理用户命令,即使有高效的查找,这对用户体验会有什么影响吗?答案可能是否定的。这种事情只有在循环中反复查询的大量集合中才会变得重要。