using System; using System.Collections.Generic; using System.Diagnostics; using System.Runtime.Serialization; namespace Deltares.MStab.IO.Classic { [Serializable] public class ClassicGeometryException : Exception { // // For guidelines regarding the creation of new exception types, see // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconerrorraisinghandlingguidelines.asp // and // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncscol/html/csharp07192001.asp // public ClassicGeometryException() {} public ClassicGeometryException(string message) : base(message) {} public ClassicGeometryException(string message, Exception inner) : base(message, inner) {} protected ClassicGeometryException( SerializationInfo info, StreamingContext context) : base(info, context) {} } /// /// Access parameters from Classic Input files with help of DGSSerializer.dll /// internal static class GetClassicGeometry { public static void GetClassicGeometryPoints(int handle, ref List aGeometryPoints) { try { if (aGeometryPoints == null) { aGeometryPoints = new List(); } aGeometryPoints.Clear(); int index = 0; bool bContinue = true; var geopoint = new ClassicGeometryFunctionDefinitions.GeometryPoint(); while (bContinue) { index++; bContinue = ClassicGeometryFunctionDefinitions.ClassicGetGeoPoint(handle, index, ref geopoint); aGeometryPoints.Add(geopoint); } } catch (Exception e) { Debug.Assert(false, e.ToString()); } } public static void GetClassicGeometryCurves(int handle, ref List aGeometryCurves) { try { if (aGeometryCurves == null) { aGeometryCurves = new List(); } int index = 0; bool bContinue = true; var geocurve = new ClassicGeometryFunctionDefinitions.GeometryCurve(); while (bContinue) { index++; bContinue = ClassicGeometryFunctionDefinitions.ClassicGetGeoCurves(handle, index, ref geocurve); aGeometryCurves.Add(geocurve); } } catch (Exception e) { throw e; } } public static void GetClassicGeometryBoundaries(int handle, ref ClassicGeometryFunctionDefinitions.GeometryBoundaries aGeometryBoundaries) { try { if (aGeometryBoundaries == null) { aGeometryBoundaries = new ClassicGeometryFunctionDefinitions.GeometryBoundaries(); } if (!ClassicGeometryFunctionDefinitions.ClassicGetGeoBoundaries(handle, ref aGeometryBoundaries)) { throw new ClassicGeometryException("Could not get classic geometry boundaries"); } } catch (Exception e) { throw e; } } public static void GetClassicGeometryPiezoLines(int handle, ref ClassicGeometryFunctionDefinitions.GeometryPiezoLines aGeometryPiezoLines) { try { if (aGeometryPiezoLines == null) { aGeometryPiezoLines = new ClassicGeometryFunctionDefinitions.GeometryPiezoLines(); } if (!ClassicGeometryFunctionDefinitions.ClassicGetGeoPiezoLines(handle, ref aGeometryPiezoLines)) { throw new ClassicGeometryException("Could not get classic geometry piezo lines"); } } catch (Exception e) { throw e; } } public static void GetClassicGeometryLayers(int handle, ref ClassicGeometryFunctionDefinitions.GeometryLayers aGeometryLayers) { try { var Buffer = new char[1024]; if (aGeometryLayers == null) { aGeometryLayers = new ClassicGeometryFunctionDefinitions.GeometryLayers(); aGeometryLayers.layers = new ClassicGeometryFunctionDefinitions.GeoLayer[ClassicGeometryFunctionDefinitions.GeometryConstants.maxLayers]; for (int layer = 0; layer < ClassicGeometryFunctionDefinitions.GeometryConstants.maxLayers; layer++) { aGeometryLayers.layers[layer].materialOfLayer = new string(Buffer); } } if (!ClassicGeometryFunctionDefinitions.ClassicGetGeoLayers(handle, ref aGeometryLayers)) { throw new ClassicGeometryException("Could not get classic geometry layers"); } } catch (Exception e) { throw e; } } public static void GetClassicGeometryConstants(int handle, ref ClassicGeometryFunctionDefinitions.GeometryParam aGeometryParam) { try { if (aGeometryParam == null) { aGeometryParam = new ClassicGeometryFunctionDefinitions.GeometryParam(); } if (!ClassicGeometryFunctionDefinitions.ClassicGetGeoConstants(handle, ref aGeometryParam)) { throw new ClassicGeometryException("Could not get classic geometry parameters"); } } catch (Exception e) { throw e; } } public static void GetClassicPiezoLines(int handle, ref ClassicGeometryFunctionDefinitions.GeometryPiezoLines aPiezoLines) { try { if (aPiezoLines == null) { aPiezoLines = new ClassicGeometryFunctionDefinitions.GeometryPiezoLines(); } if (!ClassicGeometryFunctionDefinitions.ClassicGetGeoPiezoLines(handle, ref aPiezoLines)) { throw new ClassicGeometryException("Could not get classic geometry parameters"); } } catch (Exception e) { throw e; } } } }