我试着用一些多边形点来制作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文件中,该文件具有我描述的多边形点。但它没有显示任何国际金融公司的观众。
#23=IFCCARTESIANPOINT((0.,0.,0.));
#24=IFCCARTESIANPOINT((100.,0.,0.));
#25=IFCCARTESIANPOINT((100.,100.,0.));那么,如何创建多边形墙并使用xbim库将其保存到ifc文件中呢?
有什么暗示吗?
诚挚的问候。
发布于 2021-02-08 14:20:51
您需要创建的不仅仅是几何图形来创建一个IFC文件,其他查看者将处理和显示该文件。这里是三维墙创建的一个工作示例。如果您想将墙壁定义为任意配置文件,则可以将示例中的IfcRectangleProfileDef替换为其他轮廓定义,很可能将IfcArbitraryClosedProfileDef替换为OuterCurve If IfcPolyline。
https://stackoverflow.com/questions/61380566
复制相似问题