public void GetNode(uint nodeTag, out double[] coord, out double[] parametricCoord) { IntPtr api_coordPtr = IntPtr.Zero; IntPtr api_parametricCoordPtr = IntPtr.Zero; ulong api_coord_n = 0; ulong api_parametricCoord_n = 0; GMshNativeMethods.gmshModelMeshGetNode(nodeTag, ref api_coordPtr, ref api_coord_n, ref api_parametricCoordPtr, ref api_parametricCoord_n, ref ierr); if (ierr != 0) { throw new GMshException(ierr); } coord = new double[api_coord_n]; parametricCoord = new double[api_parametricCoord_n]; if (api_coord_n != 0) { Marshal.Copy(api_coordPtr, coord, 0, api_coord_n.Toint()); } if (api_coord_n != 0) { Marshal.Copy(api_parametricCoordPtr, parametricCoord, 0, api_parametricCoord_n.Toint()); } api_coordPtr.GmshFree(); api_parametricCoordPtr.GmshFree(); }