我尝试使用一些多边形点制作 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 文件?
任何提示?
此致。