【发布时间】:2020-02-23 20:48:51
【问题描述】:
对于插件,我需要获取 rvt 文件中的所有视图表并在 xaml 对话框中显示它们的信息 但是我第一次使用它的过程非常缓慢 (使用调试器:500 ms for 83 viewplan,没有调试器也很慢) (如果我再次执行我的代码,执行是即时的)
下面是我的代码
你能帮我吗?
提前致谢
卢克
protected IEnumerable<Element> GetAllEl(Document document)
{
var filteredElementCollector = new FilteredElementCollector(document);
filteredElementCollector = filteredElementCollector
.OfCategory(BuiltInCategory.OST_Sheets)
.WhereElementIsNotElementType()
.OfClass(typeof(ViewSheet));
var fcElements = filteredElementCollector.ToElements();
return fcElements;
}
【问题讨论】:
-
第二次很快,因为你已经有了第一个结果的数据。如果不了解您的应用程序和数据库的更多信息,没有简单的方法可以加快第一个结果的速度。
-
这是您可以立即应用的一项最小性能增强:消除对
ToElements的调用。它没有任何用处,只是通过复制现有数据来浪费性能时间和内存空间。过滤后的元素收集器已经是IEnumerable<Element>。
标签: c# revit collectors