Revit二次开发之元素收集器(FilteredElementCollector)

构造函数

FilteredElementCollector的作用是通过代码主动去收集元素Id,共有三个构造函数确定元素收集的范围边界

FilteredElementCollector(Document doc) :在目标文档中收集元素。
FilteredElementCollector(Document doc,ElementId viewId):在指定的视图中收集元素。
FilteredElementCollector(Document doc,ICollection elementIds):目标文档中收集elementIds内的元素。

常用方法

OfCategory():根据BuiltInCategory获取类型及实例。
代码实例:

FilteredElementCollector fec = new FilteredElementCollector(doc);
var elements = fec.OfCategory(BuiltInCategory.OST_Windows).ToElements();
var msg = new StringBuilder($"数量:{elements.Count}\n");
foreach (var item in elements)
{var widwosInstance = item as FamilyInstance;var fs = item as FamilySymbol;if (widwosInstance != null)msg.AppendLine($"实例:{widwosInstance.Name}");if (fs != null)msg.AppendLine($"类型:{fs.Name}");
}
TaskDialog.Show("消息", msg.ToString());

结果:
在这里插入图片描述
OfCategoryId():根据BuiltInCategory获取类型及实例。在这里插入图片描述

代码实例:

FilteredElementCollector fec = new FilteredElementCollector(doc);var elements = fec.OfCategoryId(new ElementId(-2000014)).ToElements();
var msg = new StringBuilder($"数量:{elements.Count}\n");
foreach (var item in elements)
{var widwosInstance = item as FamilyInstance;var fs = item as FamilySymbol;if (widwosInstance != null)msg.AppendLine($"实例:{widwosInstance.Name}");if (fs != null)msg.AppendLine($"类型:{fs.Name}");
}TaskDialog.Show("消息", msg.ToString());

结果:
在这里插入图片描述
在这里插入图片描述
OfClass():获取指定类型元素。
代码实例:获取所有族实例

FilteredElementCollector fec = new FilteredElementCollector(doc);//获取所有族类型//var elements = fec.OfClass(typeof(FamilySymbol)).ToElements();//获取所有族实例var elements = fec.OfClass(typeof(FamilyInstance)).ToElements();var msg = new StringBuilder($"数量:{elements.Count}\n");foreach (var item in elements){var widwosInstance = item as FamilyInstance;var fs = item as FamilySymbol;if (widwosInstance != null)msg.AppendLine($"类型:{widwosInstance.Symbol.FamilyName},实例:{widwosInstance.Name}");if (fs != null)msg.AppendLine($"类型:{fs.Name}");}TaskDialog.Show("消息", msg.ToString());

结果:
在这里插入图片描述

WherePasses():根据过滤器筛选元素,这个方法需要搭配过滤器使用。
常用的过滤器如下:
房间过滤器: RoomFilter
元素相交过滤器: BoundingBoxIntersectsFilter
元素包含过滤器:BoundingBoxlslnsideFilter
元素类别过滤器:ElementCategoryFilter等同于OfCategory
元素过滤器:ElementFilter等同于OfClass()


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部