0

我尝试使用一些多边形点制作 ifc 墙并保存到 ifc 文件。

我找到了一些方法并尝试了,但它不起作用。

这是我的代码:

private static void CreateCustomPolygonWall(IfcStore model)
{
    using (var txn = model.BeginTransaction("Create Custom Polygon"))
    {
        List<double[]> points = new List<double[]>();
        points.Add(new double[] { 0, 0, 0 });
        points.Add(new double[] { 100, 0, 0 });
        points.Add(new double[] { 100, 100, 0 });

        var list = new List<IfcCartesianPoint>();
        foreach (var coordinates in points.Select(p => p.Select(x => new IfcLengthMeasure(x))))
        {
            var point = model.Instances.New<IfcCartesianPoint>();
            point.Coordinates.AddRange(coordinates);
            list.Add(point);
        }

        var faceSet = model.Instances.New<Xbim.Ifc4.TopologyResource.IfcConnectedFaceSet>();
        List<int[]> indexes = new List<int[]>();
        indexes.Add(new int[] { 0, 1, 2 });
        foreach (var t in indexes)
        {
            var polyLoop = model.Instances.New<Xbim.Ifc4.TopologyResource.IfcPolyLoop>();
            polyLoop.Polygon.AddRange(t.Select(k => list[k]));

            var bound = model.Instances.New<Xbim.Ifc4.TopologyResource.IfcFaceBound>();
            bound.Bound = polyLoop;

            var face = model.Instances.New<Xbim.Ifc4.TopologyResource.IfcFace>();
            face.Bounds.Add(bound);
            faceSet.CfsFaces.Add(face);
        }

        var surface = model.Instances.New<IfcFaceBasedSurfaceModel>();
        surface.FbsmFaces.Add(faceSet);

        txn.Commit();
    }
}

如果我按照代码保存到 ifc 文件,则该文件具有我描述的多边形点。但它没有显示任何 ifc 查看器。

#23=IFCCARTESIANPOINT((0.,0.,0.));
#24=IFCCARTESIANPOINT((100.,0.,0.));
#25=IFCCARTESIANPOINT((100.,100.,0.));

那么如何使用 xbim 库创建多边形墙并将其保存到 ifc 文件?

任何提示?

此致。

4

1 回答 1

0

您需要创建的不仅仅是几何图形来创建其他查看器将处理和显示的 IFC 文件。是一个创建 3D 墙的工作示例。如果您想将墙定义为任意配置文件,您将IfcRectangleProfileDef在示例中替换为其他配置文件定义,可能是IfcArbitraryClosedProfileDefIfcPolylineOuterCurve

于 2021-02-08T14:20:51.070 回答