Exemple #1
0
        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();
        }