/// <summary>
        /// 交点法平曲线转线元法平曲线
        /// </summary>
        /// <param name="LE">线元法平曲线</param>
        public void ToLE(out Horizontal_LE LE)
        {
            LE = new Horizontal_LE();
            HCurve_LE c0;
            HCurve_LE c1;
            HCurve_LE c2;
            HCurve_LE c3;

            for (int i = 0; i < curves.Count; i++)
            {
                if (i == 0)
                {
                    continue;
                }
                if (curves[i].R == 0)
                {
                    c0 = new HCurve_LE(0, curves[i - 1].Khz, curves[i].azimuth,
                                       curves[i - 1].Xhz, curves[i - 1].Yhz, 0, curves[i].Kzh - curves[i - 1].Khz);
                    LE.Add(c0);
                    continue;
                }
                c0 = new HCurve_LE(0, curves[i - 1].Khz, curves[i].azimuth,
                                   curves[i - 1].Xhz, curves[i - 1].Yhz, 0, curves[i].Kzh - curves[i - 1].Khz);
                c1 = new HCurve_LE(1, curves[i].Kzh, curves[i].azimuth, curves[i].Xzh,
                                   curves[i].Yzh, curves[i].R, curves[i].Khy - curves[i].Kzh);
                c3 = new HCurve_LE(3, curves[i].Khy, curves[i].Ahy, curves[i].Xhy,
                                   curves[i].Yhy, curves[i].R, curves[i].Kyh - curves[i].Khy);
                c2 = new HCurve_LE(2, curves[i].Kyh, curves[i].Ayh, curves[i].Xyh,
                                   curves[i].Yyh, curves[i].R, curves[i].Khz - curves[i].Kyh);
                LE.Add(c0);
                LE.Add(c1);
                LE.Add(c3);
                LE.Add(c2);
            }
        }
 /// <summary>
 /// 添加平曲线元
 /// </summary>
 /// <param name="curve">平曲线元</param>
 public void Add(HCurve_LE curve)
 {
     if (curves.Count == 0)
     {
         curves.Add(curve);
         Kinfo k1 = new Kinfo();
         k1.K0     = curve.K0;
         k1.index0 = 0;
         k1.K1     = curve.K1;
         k1.index1 = 0;
         Krange.Add(k1);
     }
     else if (curve.K0 == curves[curves.Count - 1].K1)
     {
         curves.Add(curve);
         Kinfo k1 = new Kinfo();
         k1.K0     = Krange[Krange.Count - 1].K0;
         k1.index0 = Krange[Krange.Count - 1].index0;
         k1.K1     = curve.K1;
         k1.index1 = curves.Count - 1;
         Krange.Add(k1);
     }
     else             //曲线不连续时
     {
         curves.Add(curve);
         Kinfo k1 = new Kinfo();
         k1.K0     = curve.K0;
         k1.index0 = curves.Count - 1;
         k1.K1     = curve.K1;
         k1.index1 = curves.Count - 1;
         Krange.Add(k1);
     }
 }