Geometry 如何使用Xbim从IFC文件检索几何图形?或者除了这项任务还有其他选择吗?

Geometry 如何使用Xbim从IFC文件检索几何图形?或者除了这项任务还有其他选择吗?,geometry,revit-api,ifc,xbim,Geometry,Revit Api,Ifc,Xbim,我想从原始IFC文件中检索数据。 我正在用Xbim尝试这个。我能够检索元素,但无法获取特定于几何体的数据。我需要位置、边界框 是否可以使用xbim执行此操作? xbim还有其他选择吗? 就我而言, IFC包括墙、开口、板、梁和螺柱。 我需要他们的相关几何和位置。 横梁和螺柱上有钻孔。 但这些钻孔不属于任何ifc实体,如IfcopiningElement或ifc Void 有什么方法可以得到这些孔的几何图形吗 以镶嵌形式? 我只需要访问IFC实体的几何数据。 我还尝试使用Revit获取数据。但在转

我想从原始IFC文件中检索数据。 我正在用Xbim尝试这个。我能够检索元素,但无法获取特定于几何体的数据。我需要位置、边界框

是否可以使用xbim执行此操作? xbim还有其他选择吗?

就我而言, IFC包括墙、开口、板、梁和螺柱。 我需要他们的相关几何和位置。 横梁和螺柱上有钻孔。 但这些钻孔不属于任何ifc实体,如IfcopiningElement或ifc Void

有什么方法可以得到这些孔的几何图形吗 以镶嵌形式?

我只需要访问IFC实体的几何数据。

我还尝试使用Revit获取数据。但在转换过程中出现了一些问题,例如它严重依赖于Ifc实体与Revit类别的映射方式。对于其他每个新模型,Ifc元素映射到不同类别

在revit中,我导入了ifc文件并为revit创建了加载项。 这些外接程序可以读取所有元素并获取它们的几何数据。
是否有其他比revit更轻的应用程序,我可以尝试构建此类应用程序。此外,应用程序必须正确分类图元?

revit是一个繁重的程序,请改用xbim,尝试以下代码以获取几何信息:

使用(var model=IfcStore.Open(“ifc_file.ifc”))
{
Xbim3DModelContext=新的Xbim3DModelContext(模型);
CreateContext();
List geometrys=context.ShapeGeometries().ToList();
列表实例=context.ShapeInstances().ToList();
//检查所有实例
foreach(实例中的var实例)
{
var transfer=instance.Transformation;//转换矩阵(内部的位置点)
XbimShapeGeometry geometry=context.ShapeGeometry(实例);//实例的几何体
XbimRect3D box=geometry.BoundingBox;//您需要的边界框
字节[]数据=((IXbimShapeGeometryData)几何体);
//如果你想得到所有的面和三角,用这个
使用(var流=新内存流(数据))
{
使用(变量读取器=新二进制读取器(流))
{
var mesh=reader.ReadShapeTriangulation();
列表面=网格。面作为列表;
列表顶点=网格。顶点作为列表;
}
}
}
}

我想补充一点,虽然本例确实有效,但如果需要边界框或顶点来匹配模型的实际真实尺寸,则必须应用实例的变换,即
XbimRect3D box=geometry.BoundingBox.transform(transfer)