在Revit中,构件类型的基类是Element的都有这样一个接口
public BoundingBoxXYZ get_BoundingBox(View A_0);
获取的就是某个视口下的外包。一般来说使用的时候都选择当前活动视口,如果有其他需要另当别论。
但是BoundingBoxXYZ这个类中并不存在判断和另一个外包是否相交的接口,但是我发现Outline这个类型有
public bool Contains(XYZ point, double tolerance);
public bool ContainsOtherOutline(Outline otherOutline, double tolerance);
public bool Intersects(Outline outline, double tolerance);
这些接口都是可以判断和另一个外包关系的。
现在就是要通过BoundingBoxXYZ构建这个Outline
XYZ minXYZ = BoxXYZ.Min;
XYZ maxXYZ = BoxXYZ.Max;
return new Outline(minXYZ , maxXYZ );
构建两个Outline,就可以粗略判断两个元素外包关系了,如果两个Outline都不相交,那说明肯定不相交。
但是,Outline相交却不一定说明元素真实相交,原因是通过Outline获得的是矩形外包,不代表元素真实轮廓;
欢迎加入我的QQ群,一起探讨Revit二次开发技术!
QQ群:631436766