Revit如何判断两个Element是否相交

来源:互联网 发布:js中的offsetleft 编辑:程序博客网 时间:2024/06/05 13:32

在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

0 0
原创粉丝点击