Revit二次开发实战04(元素搜集过滤器FilteredElementCollector)|天天新视野
Revit二次开发实战
(相关资料图)
FilteredElementCollector元素搜集过滤器
1、创建搜集器 | FilteredElementCollector(Document);搜集文档中所有元素; FilteredElementCollector(Document,List FilteredElementCollector(Document,ElementId viewId);在指定视图中搜集; |
2、调用过滤函数 | OfCategoryId(newElementId(BuiltInCategory.OST_Doors)); OfCategory(BuiltInCategory.OST_Doors); OfClass(typeof(Wall)); WherePasses(newRoomFilter()); WherePasses(intersectsFilter); |
源码
using Autodesk.Revit.Attributes;using Autodesk.Revit.DB;using Autodesk.Revit.DB.Architecture;using Autodesk.Revit.UI;using Autodesk.Revit.UI.Selection;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace RevitHello{ [Transaction(TransactionMode.Manual)] class CElement : IExternalCommand { public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { //获取当前UI文档 UIDocument uidoc = commandData.Application.ActiveUIDocument; //获取当前文档 Document doc = uidoc.Document; //创建搜集过滤器 //■构造函数1,搜集文档中所有元素 FilteredElementCollector collector1 = new FilteredElementCollector(doc); //按照类别进行过滤 FilteredElementCollector filtered1 = collector1.OfCategory(BuiltInCategory.OST_Doors); ShowElements(filtered1, uidoc, "filtered1"); //选择多个对象,并获取其id集合 var refs = uidoc.Selection.PickObjects(ObjectType.Element); List ids = new List(); refs.ToList().ForEach(r => ids.Add(r.ElementId)); //■构造函数2,搜集集合中的元素 FilteredElementCollector collector2 = new FilteredElementCollector(doc, ids); //按照类别Id进行过滤 所有的门 FilteredElementCollector filtered2 = collector2.OfCategoryId(new ElementId(BuiltInCategory.OST_Doors)); ShowElements(filtered2, uidoc, "filtered2"); //获取当前文档的当前视图 View view = uidoc.ActiveView; //■构造函数3,搜集视图中的元素 FilteredElementCollector collector3 = new FilteredElementCollector(doc, view.Id); //按照class的Type类型进行过滤 FilteredElementCollector filtered3 = collector3.OfClass(typeof(Wall)); ShowElements(filtered3, uidoc, "filtered3"); FilteredElementCollector collector4 = new FilteredElementCollector(doc); List filtered4 = collector4.WherePasses(new RoomFilter()).Cast().ToList(); ShowElements(filtered4, uidoc, "filtered4"); //获取一个包围盒,并过滤出与该包围盒相交的元素 var refe = uidoc.Selection.PickObject(ObjectType.Element, new DoorSelectionFilter()); var ele = doc.GetElement(refe); var box = ele.get_BoundingBox(view); BoundingBoxIntersectsFilter intersectsFilter = new BoundingBoxIntersectsFilter(new Outline(box.Min, box.Max)); FilteredElementCollector collector5 = new FilteredElementCollector(doc); var filtered5 = collector5.WherePasses(intersectsFilter).ToElements(); ShowElements(filtered5, uidoc, "filtered5"); return Result.Succeeded; } //把输出元素集合信息封装成一个函数 void ShowElements(IEnumerable elements, UIDocument uidoc, string title) { StringBuilder sb = new StringBuilder(); sb.AppendLine($"Count={elements.Count()}"); List ids = new List(); elements.ToList().ForEach((e) => { sb.AppendLine($"Id={e.Id},Name={e.Name},Category={e.Category.Name}"); ids.Add(e.Id); }); //高亮显示所有过滤的对象 uidoc.Selection.SetElementIds(ids); //对话框显示所有过滤对象的信息 TaskDialog.Show(title, sb.ToString()); } } class DoorSelectionFilter : ISelectionFilter { public bool AllowElement(Element elem) { if (elem.Category.Id.IntegerValue==(int)BuiltInCategory.OST_Doors) return true; return false; } public bool AllowReference(Reference reference, XYZ position) { return true; } }}
关键词:
责任编辑:孙知兵
免责声明:本文仅代表作者个人观点,与太平洋财富网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如有问题,请联系我们!
- Revit二次开发实战04(元素搜集过滤器Filte2023-05-21
- 永善枇杷节丨380余人参与“登顶玉笋”健身2023-05-21
- 今年沪深股市中科技类股票有哪些?2023-05-21
- 啤酒洗头有什么好处(啤酒洗头有什么好处)_2023-05-21
- 重点聚焦!深蓝汽车推出首款SUV——深蓝S7 2023-05-21
- 东望时代:前4月合并营业收入同比增加125.26%2023-05-21
- 世界即时:冠农股份入选2023年度郑商所“服2023-05-21
- 虎婚姻跟什么属相更好,属相婚姻准吗2023-05-21
- 辽宁冲三连冠稳了?曝周琦已获1亿报价 北2023-05-21
- 钙吸收不好是什么原因(影响钙吸收的因素有2023-05-21
- 珀莱雅:4月主品牌天猫旗舰店成交金额增长52023-05-21
- 【环球新视野】长沙橘子洲举办公益跑助力12023-05-21
- 环球动态:硬核科技论 | 为什么说油电混动2023-05-21
- 全球动态:一波强降雨来袭!省防指会商部署2023-05-21
- 天天视点!指南针软件怎么快速找到出现三把2023-05-21
- 什么叫序数(什么是奇数什么是序数?)|全球2023-05-21
- 快消息!龙蟠科技:4月酸铁锂正极材料出货2023-05-21
- 贝克汉姆与拉什福德在推特上互动2023-05-21
- 惨!4月合资SUV销量榜,仅8款车破万辆,奔2023-05-21
- *ST紫鑫:存在可能因股价低于面值被终止上2023-05-21
- 中证指数有限公司:聚焦能源安全、数字经济2023-05-21
- 【独家】狗狗尿道流脓吃什么药(狗狗尿道感2023-05-21
- 金斯瑞生物科技:传奇生物向高瓴投资定向增2023-05-21
- 今日最新!海明威吞枪自杀(关于海明威吞枪2023-05-21
- 彤管有炜造句_彤管有炜-焦点报道2023-05-21
- 世界最新:电动3号:日产艾睿雅2023-05-21
- 考研abc区有什么区别2023-05-21
- 天天快报!港股可以通过哪些证券公司购买2023-05-21
- 隐形牙套什么样(隐形牙套的优缺点是什么?2023-05-21
- 格力电器董明珠:让世界爱上中国造-环球热2023-05-21
精彩推荐
- Revit二次开发实战04(元素搜集过滤器Fi...
- 辽宁冲三连冠稳了?曝周琦已获1亿报价 ...
- 环球动态:硬核科技论 | 为什么说油电...
- 惨!4月合资SUV销量榜,仅8款车破万辆,...
- 彤管有炜造句_彤管有炜-焦点报道
- 怒喵 CYBERBLADE 耳机降至 1480 元...
- 5年期LPR超预期下调15个基点,今日之后...
- 长征七号遥七运载火箭二级残骸已再入大...
- 房屋转让合同协议书范本_土地转让合同范...
- 油菜的花样吃法,食谱不再单调
- 报考驾校请先看!武汉最新驾校“红黑榜...
- 最新快讯!2023年河南安阳市第三中学艺术...
- 甘肃省新能源产业招商推介会在成都举办
- 馒头怎么保存才能保存长久 馒头如何储...
- 车险不计免赔取消了三者险(车险不计免...