Я пытаюсь сделать, если 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?
любая подсказка ?
С наилучшими пожеланиями.