// IIfcIndexedPolygonalFace indexFace; public XbimFaceBoundSet(IIfcIndexedPolygonalFace face, IIfcCartesianPointList3D coordinates, IItemSet <IfcPositiveInteger> pnIndex) { // indexFace = face; if (face is IIfcIndexedPolygonalFaceWithVoids) { var faceWithVoids = (IIfcIndexedPolygonalFaceWithVoids)face; faceBounds = new XbimPolygonalFaceBound[faceWithVoids.InnerCoordIndices.Count + 1]; faceBounds[0] = new XbimPolygonalFaceBound(faceWithVoids.CoordIndex, coordinates, pnIndex); for (int i = 0; i < faceWithVoids.InnerCoordIndices.Count; i++) { faceBounds[i + 1] = new XbimPolygonalFaceBound(faceWithVoids.InnerCoordIndices[i], coordinates, pnIndex); } } else //there will just be one { faceBounds = new[] { new XbimPolygonalFaceBound(face.CoordIndex, coordinates, pnIndex) }; } }
public XbimCartesianPoint3dList(IItemSet <IfcPositiveInteger> coordIndex, IIfcCartesianPointList3D coordinates, IItemSet <IfcPositiveInteger> pnIndex) { points = new List <IIfcCartesianPoint>(coordIndex.Count); if (pnIndex != null && pnIndex.Count > 0) //we do a lookup { foreach (int idx in coordIndex) { var pnt = coordinates.CoordList[(int)(pnIndex[idx - 1] - 1)]; points.Add(new XbimCartesianPoint3D(pnt[0], pnt[1], pnt[2])); } } else { foreach (int idx in coordIndex) { var pnt = coordinates.CoordList[(int)(idx - 1)]; points.Add(new XbimCartesianPoint3D(pnt[0], pnt[1], pnt[2])); } } }
public XbimPolygonalFace(IIfcIndexedPolygonalFace polygonalFace, IIfcCartesianPointList3D coordinates, IItemSet <IfcPositiveInteger> pnIndex) { this.polygonalFace = polygonalFace; this.coordinates = coordinates; this.pnIndex = pnIndex; }
public XbimPolyLoop(IItemSet <IfcPositiveInteger> coordIndex, IIfcCartesianPointList3D coordinates, IItemSet <IfcPositiveInteger> pnIndex) { this.coordIndex = coordIndex; this.coordinates = coordinates; this.pnIndex = pnIndex; }