/// <summary> /// Convert a <see cref="SMeshData"/> class into a <see cref="MeshFile"/> class. /// </summary> public static MeshFile ToMeshFile(this SMeshData meshData) { return(MeshFile.Create( meshData.ZUnit, meshData.Projection, meshData.NodeIds, meshData.X, meshData.Y, meshData.Z, meshData.Code, meshData.ElementIds, meshData.ElementType, meshData.ElementTable.ToOneBased())); }
/// <summary> /// Create and return a new <see cref="MeshFile"/> object /// </summary> public MeshFile CreateMesh() { Validate(true); // Creating default eumQuantity in meters _zUnit = MeshUnit.Meter; // Creating default node id's, if empty if (_nodeIds == null) { // Setting node ids 1,2,3,... _nodeIds = new int[_x.Length]; for (int i = 0; i < _x.Length; i++) { _nodeIds[i] = i + 1; } } // Creating default element id's, if empty if (_elementIds == null) { // Setting element ids 1,2,3,... _elementIds = new int[_connectivity.Length]; for (int i = 0; i < _connectivity.Length; i++) { _elementIds[i] = i + 1; } } // Creating additional element information int[] elementType = new int[_connectivity.Length]; int[] nodesPerElmt = new int[_connectivity.Length]; int nodeElmtCount = 0; // total number of nodes listed in the connectivity table for (int i = 0; i < elementType.Length; i++) { int elmtTypeNumber; int[] elmt = _connectivity[i]; switch (elmt.Length) { case 3: elmtTypeNumber = 21; break; case 4: elmtTypeNumber = 25; break; case 6: elmtTypeNumber = 32; break; case 8: elmtTypeNumber = 33; break; default: // this should have been caught in the validate phase, but just in case: throw new Exception("Element with invalid number of nodes encountered"); } elementType[i] = elmtTypeNumber; nodesPerElmt[i] = elmt.Length; nodeElmtCount += elmt.Length; } int[] connectivityArray = new int[nodeElmtCount]; int k = 0; for (int i = 0; i < elementType.Length; i++) { int[] elmt = _connectivity[i]; for (int j = 0; j < elmt.Length; j++) { connectivityArray[k++] = elmt[j]; } } MeshFile res = MeshFile.Create(_zUnit, _projection, _nodeIds, _x, _y, _z, _code, _elementIds, elementType, _connectivity); return(res); }