天天看點

Revit如何判斷兩個Element是否相交

在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

繼續閱讀