Revit API相交过滤BoundingBoxIntersectsFilter
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-04-10
根据一线条,过滤与之相交的元素。 [Regeneration(RegenerationOption.Manual)] public class cmdFilter : IExternalCommand { public Result Execute(ExternalCommandData cmdData, ref string messages, ElementSet elements) { UIDocument uiDoc = cmdData.Application.ActiveUIDocument; Transaction ts = new Transaction(uiDoc.Document, "revit.5d6d.com"); ts.Start(); //与outLine相交的元素,比较多,有相机,测试点,项目基点,墙,风管,只要是相交的。 Outline outLine = new Outline(new XYZ(0, 0, 0), new XYZ(100, 100, 100)); BoundingBoxIntersectsFilter filter = new BoundingBoxIntersectsFilter(outLine); FilteredElementCollector collector = new FilteredElementCollector(uiDoc.Document); IList<Element> elems = collector.WherePasses(filter).ToElements(); foreach (Element el in elems) { TaskDialog.Show("all", el.Name + "|" + el.Category.Name); } //与outLine相关的墙,第二个参数为false可以得到相交的墙,为true得不到,有待研究。 BoundingBoxIntersectsFilter invertFilter = new BoundingBoxIntersectsFilter(outLine, false); collector = new FilteredElementCollector(uiDoc.Document); IList<Element> noIntersectWalls = collector.OfClass(typeof(Wall)).WherePasses(invertFilter).ToElements(); foreach (Element el in noIntersectWalls) { TaskDialog.Show("wall", el.Name + "|" + el.Category.Name); } // TaskDialog.Show("count", elems.Count + "|" + noIntersectWalls.Count); ts.Commit(); return Result.Succeeded; } } |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于Revit API相交过滤BoundingBoxIntersectsFilter的所有评论