Revit中经常出现隔离和隐藏对象,通过API如何实现这些功能呢?主要用到View中的几个关键函数
目录
一、隔离元素
1、一个隔离多个类别
public void IsolateCategoriesTemporary(ICollection<ElementId> elementIds)
2、一次隔离一个类别
public void IsolateCategoryTemporary(ElementId elementId)
3、一次隔离多个元素
public void IsolateElementsTemporary(ICollection<ElementId> elementIds)
4、一次隔离一个元素
public void IsolateElementTemporary(ElementId elementId)
二、隐藏元素
1、隐藏多个类别
public void HideCategoriesTemporary(ICollection<ElementId> elementIds)
2、隐藏一个类别
public void HideCategoryTemporary(ElementId elementId)
3、隐藏多个元素
public void HideElementsTemporary(ICollection<ElementId> elementIdSet)
4、隐藏一个元素
public void HideElementTemporary(ElementId elementId)
三、判断是否存在隐藏和隔离
1、判断当前视图中是否有隐藏和隔离对象
public bool IsTemporaryHideIsolateActive()
假如为true,则说明存在隔离和隐藏对象,假如为false则不存在
2、判断构件是否在当前视图中隐藏
element.IsHidden(doc.ActiveView)
四、取消隐藏和隔离
调用以下函数,实现对隔离和隐藏对象的处理
public void DisableTemporaryViewMode(TemporaryViewMode mode)
TemporaryViewMode是一个枚举,其枚举的参数如下:
成员 | 表述 |
---|---|
RevealHiddenElements | The view is in reveal hidden elements mode |
TemporaryHideIsolate | 视图是临时隐藏和隔离模式 |
WorksharingDisplay | The view is in one of the worksharing display modes |
TemporaryViewProperties | The view is in the selected View Properties applied temporarily. |
Raytrace | The view is in the mode that shows the model in interactive raytracing |
ExplodedView | The view is in the mode that shows the model in exploded view and allows user changes/configurations |
RevealConstraints | The view is in the mode that reveals constraints between elements in the model. |
PreviewFamilyVisibility | The view is in the mode that shows visibility settings applied in the environment of a family document. |
五、特殊构件
1、栏杆扶手构件 tialing
栏杆扶手生成的同时,在原点生成对应不可见的族实例,无法取消隐藏,且为非隐藏状态:element.isHidden(doc.activeView)=false 。
暂时无法通过视图下图元的隐藏与隔离方法 过滤得到此构件,只能通过id选项或过滤所有element得到.
六、常用方法: