我想从原始IFC文件中检索数据。我正在用Xbim试试这个。我可以检索元素,但不能获得特定的几何数据。我需要位置,边界框。
可以用xbim来完成这个任务吗?有什么替代xbim的方法吗?
在我的例子中,国际金融公司包括墙壁,开口,板,梁和螺柱。我需要他们的相关几何图形和位置。横梁和螺柱都有钻孔。但这些钻孔不属于任何国际金融公司实体,如IfcOpeningElement或ifc空洞。
,我有什么办法可以得到这些洞的几何形状吗?
我只需要访问IFC实体的几何数据.
我还尝试使用Revit来获取data.But --转换中存在问题,就像它在很大程度上依赖于Ifc实体与revit类别的映射是如何present.For的--所有其他模型ifc元素都映射到不同的类别。
在revit中,我导入了ifc文件并为revit创建了加载项。这些加载项可以读取所有元素并获取它们的几何数据。还有其他这样的应用程序,但比revit重一些,我可以尝试构建这样的加载项,应用程序必须正确地对元素进行分类?
发布于 2019-07-15 15:01:52
Revit是一个很重的程序,使用xbim代替,尝试下面的代码来获取几何信息:
using (var model = IfcStore.Open("ifc_file.ifc"))
{
Xbim3DModelContext context = new Xbim3DModelContext(model);
context.CreateContext();
List<XbimShapeGeometry> geometrys = context.ShapeGeometries().ToList();
List<XbimShapeInstance> instances = context.ShapeInstances().ToList();
//Check all the instances
foreach (var instance in instances)
{
var transfor = instance.Transformation; //Transformation matrix (location point inside)
XbimShapeGeometry geometry = context.ShapeGeometry(instance); //Instance's geometry
XbimRect3D box = geometry.BoundingBox; //bounding box you need
byte[] data = ((IXbimShapeGeometryData)geometry).ShapeData;
//If you want to get all the faces and trinagulation use this
using (var stream = new MemoryStream(data))
{
using (var reader = new BinaryReader(stream))
{
var mesh = reader.ReadShapeTriangulation();
List<XbimFaceTriangulation> faces = mesh.Faces as List<XbimFaceTriangulation>;
List<XbimPoint3D> vertices = mesh.Vertices as List<XbimPoint3D>;
}
}
}
}https://stackoverflow.com/questions/56596815
复制相似问题