首页 > 解决方案 > 从 ifcSpace 获取 IfcPolyline

问题描述

我对 xBim 很陌生,我正在努力寻找我需要的信息。我已经能够遍历每个楼层的所有 IFCSpaces,并且我想找到每个空间的 IfcPolyline 以便我知道它的边界。但是怎么做?

    using (IfcStore model = IfcStore.Open(filename, null))
    {
        List<IfcBuildingStorey> allstories = model.Instances.OfType<IfcBuildingStorey>().ToList();

        for (int i=0;i<allstories.Count;i++)
        {
            IfcBuildingStorey storey = allstories[i];
            var spaces = storey.Spaces.ToList();
            for (int j=0;j<spaces.Count;j++)
            {
                var space = spaces[j];
                var spaceBoundaries=space.BoundedBy.ToList();
                for (int u=0;u<spaceBoundaries.Count;u++)
                {
                   //IfcPolyline from here??
                }
            }
        }
    }

标签: xbim

解决方案


这是一个很老的问题,但如果您仍在寻找答案:IfcSpace.BoundedByis an inverse relationship,会给您一个IfcRelSpaceBoundaries列表。这具有RelatedBuildingElement属性,它将为您提供边界建筑元素,例如墙壁、门等。它还具有ConnectionGeometry,本质上是一个接口,因为此连接的几何形状可能是曲线、点、曲面或体积。如果您在对象模型中进一步深入,您将看到边界可以是任何类型的曲线,而不仅仅是多段线。

完全不同的方法可能是访问空间几何Space.Representation。这可能有一个 2D 表示,可能是一个多边形,或者它可能是一个带有轮廓的 3D 挤压。那将再次成为您正在寻找的东西。但请注意,它可以是任何其他类型的几何表示,具体取决于创作软件和模型作者。


推荐阅读