private void createAddArcSegment(IRM21fundamentalGeometry fundGeomArcSeg)
        {
            ptList = fundGeomArcSeg.getPointList();
             if (3 != ptList.Count)
            throw new Exception("Arc Segment fundamental geometry must have three and only three points.");

             rm21HorArc anArg = new rm21HorArc(ptList[0], ptList[1], ptList[2], fundGeomArcSeg.getExpectedType(),
            fundGeomArcSeg.getDeflectionSign());

             if (null == allChildSegments_scratchPad) allChildSegments_scratchPad = new List<HorizontalAlignmentBase>();

             allChildSegments_scratchPad.Add(anArg);
        }
        public void appendArc(ptsPoint ArcEndPoint, Double radius)
        {
            var newArc = new rm21HorArc(this.EndPoint, ArcEndPoint, this.EndAzimuth, radius);
             newArc.BeginStation = this.EndStation;
             newArc.EndStation = newArc.BeginStation + newArc.Length;

             newArc.Parent = this;
             this.allChildSegments.Add(newArc);

             this.EndAzimuth = this.BeginAzimuth + newArc.Deflection;
             this.EndPoint = newArc.EndPoint;
             restationAlignment();

             alignmentData.Add(new alignmentDataPacket(alignmentData.Count, newArc));
        }