// public void OpenData(string filename) { // Следует разобраться со структурой файлов в директории FILENAME = filename; ROOT = Path.GetFileNameWithoutExtension(FILENAME).ToUpper(); PATH = Path.GetDirectoryName(FILENAME).ToUpper(); FILES = new Dictionary <string, string>(); var files = Directory.GetFiles(PATH).OrderBy(f => f).ToArray(); string extension; string rootname; foreach (string item in files) { extension = Path.GetExtension(item); rootname = Path.GetFileNameWithoutExtension(item); if (rootname == ROOT) { if (extension == ".SMSPEC") { FILES.Add("SMSPEC", item); } if (extension == ".RSSPEC") { FILES.Add("RSSPEC", item); } if (extension == ".INSPEC") { FILES.Add("INSPEC", item); } if (extension == ".EGRID") { FILES.Add("EGRID", item); } if (extension == ".INIT") { FILES.Add("INIT", item); } if (Regex.IsMatch(extension, "^.S+[0-9]{4}")) { FILES.Add(extension, item); } if (Regex.IsMatch(extension, "^.X+[0-9]{4}")) { FILES.Add(extension, item); } if (extension == ".UNSMRY") { FILES.Add("UNSMRY", item); } if (extension == ".UNRST") { FILES.Add("UNRST", item); } } } if (FILES.ContainsKey("EGRID")) { System.Diagnostics.Debug.WriteLine("Read EGRID " + FILES["EGRID"]); EGRID = new EGRID(FILES["EGRID"]); EGRID.CalcGridLimits(); } if (FILES.ContainsKey("INSPEC")) { INIT = new INSPEC(FILES["INSPEC"]); } if (FILES.ContainsKey("INIT")) { System.Diagnostics.Debug.WriteLine("Read INIT " + FILES["INIT"]); INIT.ReadACTNUM(FILES["INIT"]); // Минимум и максимум по кооординате Z, можно взять из расчета статических свойств int index = -1; int iw = 0; for (iw = 0; iw < INIT.NAME.Count; ++iw) { index = Array.IndexOf(INIT.NAME[iw], "DEPTH"); if (index > -1) { break; } } EGRID.ZMAXCOORD = INIT.ARRAYMAX[iw][index]; EGRID.ZMINCOORD = INIT.ARRAYMIN[iw][index]; } }