宿主元素是指可以被某些元素附着的元素,比如墙,墙面可以放置门窗。天花板、地板、 屋顶等,都属于宿主元素。
1、获取宿主上的元素
使用HostObject. FindInserts方法可以用来获取插入到宿主元素上的元素的集合:IList<ElementId〉FindInserts( bool addRectOpenings,bool includeShadows,bool includeEmbeddedWalls,bool includeSharedEmbeddedlnserts)
参数说明如表
参数 | 类型 | 说明 |
addRectOpenings | Bool | 设为True,则包含洞口 |
includeShadows | Bool | 设为Tme,则包含阴影 |
includeEmbcddedWalls | Bool | 设为True,则包含嵌人的墙 |
includeSharedEmbeddedlnserts | Bool | 设为True,则包含共享的嵌入墙 |
2、获取宿主的面
如果要在宿主上面放置构件,就需要获取宿主的面。用户除了从元素的几何信息分析出它的面,还可以使用HostObjectUtils提供的几个方法,更方便地获取宿主的面。
方法如表所示:
方法 | 用途 |
static IList<Reference> GetBottomFaces(HostObject hostObject) | 获得宿主底部面的引用(Reference) |
static IList<Reference> GetSideFaces(HostObject hostObject, ShellLayerType side) | 获得宿主侧边而的引用(Reference) |
static IList<Reference> GetTopFaces(HostObject hostObject) | 获得宿主顶部而的引用(Reference) |
获取宿主的面的方法
Floor floor = GetElement<Floor>(185601);
// 获取一个楼板面的引用
IList<Reference> references = HostObjectUtils.GetTopFaces(floor);
if (references.Count == 1)
{
var reference = references[0];
// 从引用获取面的几何对象,这里是一个PlanarFace
GeometryObject topFaceGeo = floor.GetGeometryObjectFromReference(reference);
// 转型成我们想要的对象
PlanarFace topFace = topFaceGeo as PlanarFace;
}
=========【更多高级应用请关注公众号】========
==================================