создать пользовательскую полигональную стену с помощью библиотеки xbim - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь сделать, если c стена, используя несколько точек многоугольника, и сохраняю, если файл c.

Я нашел какой-то подход и попробую это, но он не работает.

вот мой код :

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();
    }
}

и если я сохраню в файл, если c, следующий за кодом, этот файл содержит точки многоугольника, которые я описываю. но он не отображается, если c viewer.

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

, так как я могу создать многоугольную стену и сохранить ее в файле c, используя библиотеку xbim?

любая подсказка ?

С наилучшими пожеланиями.

...