Пример #1
0
 public HDXElement()
 {
     LeftLine  = new List <HDXData>();
     RightLine = new List <HDXData>();
     Type      = 0;
     PK        = 0;
 }
Пример #2
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;
                }
            }
            ;
        }