【发布时间】:2018-04-04 12:45:48
【问题描述】:
我必须从文档中的每个边缘检索端点,但是由于必须遍历每个元素,检索边缘的过程花费了太多时间。 我目前的做法是
FilteredElementCollector collector = new FilteredElementCollector(doc);
collector.WherePasses(new LogicalOrFilter((new ElementIsElementTypeFilter(false)), new ElementIsElementTypeFilter(true)));
List<object> coordinatelist = new List<object>();
for (int i = collector.ToElements().Count - 1; i > 0; i--)
{
Element element = collector.ToElements()[i];
GeometryElement geo = element.get_Geometry(new Options());
if (geo != null)
{
for(int j = geo.Count()-1;j>=0;j--){
Solid geosolid = geo.ElementAt(j) as Solid;
if(geosolid != null)
{
for(int k = geosolid.Edges.Size - 1; k >= 0; k--)
{
Edge edge = geosolid.Edges.get_Item(k);
Curve edgecurve = edge.AsCurve();
FillDictionary(edgecurve, element);
}
}
else continue;
}
}
else continue;
}
我无法按边缘过滤,因为 Edge 不是 Element 的子对象,而是 GeometryObject 的子对象
如何在不遍历每个元素的情况下获得边缘,或者如何加快流程?
【问题讨论】: