在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