我们先来解释一下视图范围的几个参数值到底是什么意思。
偏移值就不说了,共有四个面(括号里对应的是API中的枚举值):
1.顶部(PlanViewPlane.TopClipPlane)
2.剖切面(PlanViewPlane.CutPlane)
3.底部(PlanViewPlane.BottomClipPlane)
4.视图深度(PlanViewPlane.ViewDepthPlane)
处于1与2之间的构件不一定看得见,但是可以选择到,比如门窗等;
处于2与4之间的构件一定看得到,不过被2剖到的构件,会显示出其内部构造;
为了避免混淆,强烈建议3和4设置成同一个值。
这里再多解释一下Revit中所谓的可见性,并不是我之前理解的视图中是否看得见的意思。比如在一个楼层平面视图中,我们看不到另外一个楼层上的构件A,但是这不代表在这个视图中,构件A不可见,尤其是写代码过滤的时候,这个构件A是过滤不出来的。Revit中所谓的可见不可见,是指的图元或者类别是否被隐藏或者临时隐藏,或者是通过在可见性设置中添加了过滤器之类的隐藏。裁剪框也会对图元的可见性起到作用,不仅是肉眼不可见,程序也搜不到这个图元。视图深度不行,这个只能保证肉眼不可见,但不是程序里面的不可见。
所以真的想过滤出我们当前楼层平面视图的可见图元,还必须要用一个BoundingBoxIntersectsFilter来辅助过滤,其OutLine最关键的zmin与zmax就应当由1和4来决定。