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

    xiaoxiao2021-04-13  44

    在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

    转载请注明原文地址: https://ju.6miu.com/read-668851.html

    最新回复(0)