namespace Deltares.DamPiping.SellmeijerVNKCalculator { using System; using System.Runtime.InteropServices; // PC2 public delegate IntPtr PC2_Model2CreateHandle(); public delegate void PC2_Model2SetSoilProperties(IntPtr CalcHandle, SoilPropertiesStruct PCSoilProperties); public delegate void PC2_Model2SetWaterProperties(IntPtr CalcHandle, WaterPropertiesStruct PCWaterProperties); public delegate void PC2_Model2SetCrackLength(IntPtr CalcHandle, double CrackLength); public delegate void PC2_Model2SetHeadDrop(IntPtr CalcHandle, double HeadDrop); public delegate void PC2_Model2SetSeepageLength(IntPtr CalcHandle, double SeepageLength); public delegate void PC2_Model2SetHeights(IntPtr CalcHandle, int HeightCount, double[] Height); public delegate void PC2_Model2SetPermeabilities(IntPtr CalcHandle, int PermeabilityCount, double[] Permeability); public delegate void PC2_Model2SetCalculationParameters(IntPtr CalcHandle, CalculationParametersStruct PCCalculationParameters); public delegate double PC2_Model2GetHeadDrop(IntPtr CalcHandle); public delegate double PC2_Model2GetSeepageLength(IntPtr CalcHandle); public delegate void PC2_Model2Calculate(IntPtr CalcHandle); public delegate string PC2_Model2GetCalculationMessages(IntPtr CalcHandle); public delegate void PC2_Model2DestroyHandle(IntPtr CalcHandle); /// /// Wrapper for MPipingCalc2.dll /// public class PipingCalc2Dll { private const string CMPipingCalcVNK = @"CalcDlls\MPipingCalc2.dll"; //private const string CMPipingCalcVNK = @"d:\DelphiWin32Projects\trunk\sources\MPipingCalc\Install Version\MPipingCalc2.dll"; // PC2 [DllImport(CMPipingCalcVNK)] private static extern IntPtr PC2_CreateHandle(); [DllImport(CMPipingCalcVNK)] private static extern void PC2_SetSoilProperties(IntPtr CalcHandle, SoilPropertiesStruct PCSoilProperties); [DllImport(CMPipingCalcVNK)] private static extern void PC2_SetWaterProperties(IntPtr CalcHandle, WaterPropertiesStruct PCWaterProperties); [DllImport(CMPipingCalcVNK)] private static extern void PC2_SetCrackLength(IntPtr CalcHandle, double CrackLength); [DllImport(CMPipingCalcVNK)] private static extern void PC2_SetHeadDrop(IntPtr CalcHandle, double HeadDrop); [DllImport(CMPipingCalcVNK)] private static extern void PC2_SetSeepageLength(IntPtr CalcHandle, double SeepageLength); [DllImport(CMPipingCalcVNK)] private static extern void PC2_SetHeights(IntPtr CalcHandle, int HeightCount, [MarshalAs(UnmanagedType.LPArray)] double[] Height); [DllImport(CMPipingCalcVNK)] private static extern void PC2_SetPermeabilities(IntPtr CalcHandle, int PermeabilityCount, [MarshalAs(UnmanagedType.LPArray)] double[] Permeability); [DllImport(CMPipingCalcVNK)] private static extern void PC2_SetCalculationParameters(IntPtr CalcHandle, CalculationParametersStruct PCCalculationParameters); [DllImport(CMPipingCalcVNK)] private static extern double PC2_GetHeadDrop(IntPtr CalcHandle); [DllImport(CMPipingCalcVNK)] private static extern double PC2_GetSeepageLength(IntPtr CalcHandle); [DllImport(CMPipingCalcVNK)] private static extern void PC2_Calculate(IntPtr CalcHandle); [DllImport(CMPipingCalcVNK)] [return: MarshalAs(UnmanagedType.LPStr)] private static extern string PC2_GetCalculationMessages(IntPtr CalcHandle); [DllImport(CMPipingCalcVNK)] private static extern void PC2_DestroyHandle(IntPtr CalcHandle); // PC2 public static PC2_Model2Calculate Model2PC2Calculate = null; public static PC2_Model2CreateHandle Model2PC2CreateHandle = null; public static PC2_Model2DestroyHandle Model2PC2DestroyHandle = null; public static PC2_Model2GetHeadDrop Model2PC2GetHeadDrop = null; public static PC2_Model2GetSeepageLength Model2PC2GetSeepageLength = null; public static PC2_Model2SetCalculationParameters Model2PC2SetCalculationParameters = null; public static PC2_Model2SetCrackLength Model2PC2SetCrackLength = null; public static PC2_Model2SetHeadDrop Model2PC2SetHeadDrop = null; public static PC2_Model2SetHeights Model2PC2SetHeights = null; public static PC2_Model2SetPermeabilities Model2PC2SetPermeabilities = null; public static PC2_Model2SetSeepageLength Model2PC2SetSeepageLength = null; public static PC2_Model2SetSoilProperties Model2PC2SetSoilProperties = null; public static PC2_Model2SetWaterProperties Model2PC2SetWaterProperties = null; public static PC2_Model2GetCalculationMessages Model2PC2GetCalculationMessages = null; static PipingCalc2Dll() { // PC2 Model2PC2Calculate = new PC2_Model2Calculate(PC2_Calculate); Model2PC2CreateHandle = new PC2_Model2CreateHandle(PC2_CreateHandle); Model2PC2DestroyHandle = new PC2_Model2DestroyHandle(PC2_DestroyHandle); Model2PC2GetCalculationMessages = new PC2_Model2GetCalculationMessages(PC2_GetCalculationMessages); Model2PC2GetHeadDrop = new PC2_Model2GetHeadDrop(PC2_GetHeadDrop); Model2PC2GetSeepageLength = new PC2_Model2GetSeepageLength(PC2_GetSeepageLength); Model2PC2SetCalculationParameters = new PC2_Model2SetCalculationParameters(PC2_SetCalculationParameters); Model2PC2SetCrackLength = new PC2_Model2SetCrackLength(PC2_SetCrackLength); Model2PC2SetHeadDrop = new PC2_Model2SetHeadDrop(PC2_SetHeadDrop); Model2PC2SetHeights = new PC2_Model2SetHeights(PC2_SetHeights); Model2PC2SetPermeabilities = new PC2_Model2SetPermeabilities(PC2_SetPermeabilities); Model2PC2SetSeepageLength = new PC2_Model2SetSeepageLength(PC2_SetSeepageLength); Model2PC2SetSoilProperties = new PC2_Model2SetSoilProperties(PC2_SetSoilProperties); Model2PC2SetWaterProperties = new PC2_Model2SetWaterProperties(PC2_SetWaterProperties); } } }