乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 84|回复: 4

通过xdata过滤BlockTableRecords而不迭代?

[复制链接]

85

主题

404

帖子

7

银币

中流砥柱

Rank: 25

铜币
751
发表于 2019-10-14 17:38:54 | 显示全部楼层 |阅读模式
是否可以在不迭代块表的情况下获取包含某些 xdata 的图形中的所有 BlockTableRecords?类似于按 xdata 筛选选择集,现在我正在做这个迭代的事情:(原谅未包含的代码)public static ObjectIdCollection BlockDefsWithXData(string appName)。
{。
ObjectIdCollection result = new ObjectIdCollection();。
using (Transaction tr = Active.Document.TransactionManager.StartTransaction())。
{。
BlockTable bt = (BlockTable)tr.GetObject(Active.Database.BlockTableId, OpenMode.ForRead);。
foreach (ObjectId id in bt)。
{。
if (XData.HasAppName(id, appName)) // 查看它是否具有 appname。
{。
结果,Add(id);。
}。
}。
断续器Commit();。
}。
返回结果;。
}。

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2019-10-14 19:11:22 | 显示全部楼层
据我所知,即使您可以,应用程序也会进行迭代,并且无论如何只会稍微快一点(阅读为不明显)。
如果您在编辑器中使用当前db,您可能可以使用带有PromptSelectionOptions.SelectEverythingInAperture的SelectionSet来使用过滤器选择所有内容?
我认为迭代会更快,因为您没有处理Editor和SelectionSet代码层。
回复

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2019-10-15 00:51:24 | 显示全部楼层
嗨,
我有时做了一些测试,似乎使用Editor.SelectAll和选择过滤器并不比迭代模型和纸张空间更快,当不需要打开实体时,它甚至会慢一点(即仅通过ObjectId.ObjectClass过滤实体类型)。
回复

使用道具 举报

85

主题

404

帖子

7

银币

中流砥柱

Rank: 25

铜币
751
发表于 2019-10-15 07:50:05 | 显示全部楼层

谢谢吉尔,这真是个好消息
看来我将继续遍历blocktable。
回复

使用道具 举报

85

主题

404

帖子

7

银币

中流砥柱

Rank: 25

铜币
751
发表于 2019-10-15 07:55:00 | 显示全部楼层

感谢您的回复MickD。选择集不起作用,因为我正在寻找块定义,而不是块引用。在你的帖子和Gile的帖子之间,迭代似乎是要走的路。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-4 05:55 , Processed in 0.206016 second(s), 73 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表