public HDXElement() { LeftLine = new List <HDXData>(); RightLine = new List <HDXData>(); Type = 0; PK = 0; }
public HDX(string[] hdxtext) { string[] altext = hdxtext; HDXDataList = new List <HDXElement>(); Method = 0; if (altext.Count() <= 1) { return; } int i = 0; int n = 0; HDXElement curData = new HDXElement(); foreach (string item in altext) { if (item.StartsWith("//") || item == "") { if (i != 0) { i++; continue; } if (item.Contains("ABS")) { Method = HDXMethod.ABS; curData.Type = HDXMethod.ABS; } else if (item.Contains("抬杆法")) { Method = HDXMethod.TGF; curData.Type = HDXMethod.TGF; } else { throw new Exception("地面线数据未说明类型"); } i++; continue; } string line = item.TrimEnd('\r'); line = line.TrimEnd('\t'); if (line == "ABS") { i++; continue; } var xx = (Regex.Split(line, @"\s+")).ToList(); xx.Remove(""); if (n == 0) { curData = new HDXElement(); curData.PK = double.Parse(xx[0]); curData.Type = Method; n = 1; } else if (n == 1) { var dataline = (from a in xx select double.Parse(a)).ToList(); HDXData dt = new HDXData(); for (int ii = 0; ii < dataline.Count; ii++) { if (ii % 2 == 0) { dt = new HDXData(); dt.x = dataline[ii]; } else { dt.h = dataline[ii]; curData.LeftLine.Add(dt); } } n = 2; } else if (n == 2) { var dataline = (from a in xx select double.Parse(a)).ToList(); HDXData dt = new HDXData(); for (int ii = 0; ii < dataline.Count; ii++) { if (ii % 2 == 0) { dt = new HDXData(); dt.x = dataline[ii]; } else { dt.h = dataline[ii]; curData.RightLine.Add(dt); } } ; HDXDataList.Add(curData); n = 0; } } ; }