Revit二次开发|隐藏视图中的图元(以标高为例)

来源:建筑界编辑:黄子俊发布时间:2020-03-22 19:39:24

[摘要] 最近在做项目的剖面出图,相信做过项目的读者也经历过出图的痛苦,在Revit中出图需要很多细致且任务量繁重的造操作,比如作者在本文中要讲

最近在做项目的剖面出图,相信做过项目的读者也经历过出图的痛苦,在Revit中出图需要很多细致且任务量繁重的造操作,比如作者在本文中要讲到的隐藏不需要的图元。下面是作者做的一个剖面中隐藏标高的小功能,具体如下:

首先要收集视图中的所有标高:

 FilteredElementCollector coll = new FilteredElementCollector(doc); coll.OfClass(typeof(Level)).OfCategory(BuiltInCategory.OST_Levels); ICollection<ElementId> elementIds = coll.ToElementIds();

然后就是排除掉自己不需要,留下需要的标高:

View view = doc.ActiveView;LevelSelecionFilter levelSelectionFilter = new LevelSelecionFilter();Reference refer =uidoc.Selection.PickObject(ObjectType.Element,"点选不需要隐藏的轴网!");Level level = doc.GetElement(refer) as Level;if (elementIds.Contains(level.Id)) { elementIds.Remove(level.Id); }

接下来就是开启事务,调用视图的隐藏图元方法,对标高进行隐藏处理:

Transaction trans = new Transaction(doc);trans.Start("隐藏轴网"); view.HideElements(elementIds);trans.Commit();

这就是隐藏标高的基本思路,当然了对于初学者可能还需要用到的LevelSelectionFilter过滤器的具体代码,如下:

 class LevelSelecionFilter : ISelectionFilter { public bool AllowElement(Element elem) { if (elem is Level) { return true; } return false; ; } public bool AllowReference(Reference reference, XYZ position) { throw new NotImplementedException(); } }

以上就是标高隐藏的所有内容,这篇文章就到这里!

标高,为例,视图

延展阅读

相关文章