public virtual void PersistantDraw(IPersistantDrawer drawer)
 {
     StationOffsetElevation soe1 = null;
      StationOffsetElevation soe2 = new StationOffsetElevation();
      var drawPoints = getOutsideEdgeDrawPoints();
      if (null == drawPoints) return;
      foreach (var sta2 in drawPoints)
      {
     soe2 = this.getOutsideEdgeStationOffsetElevation(sta2);
     if (soe1 != null)
     {
        Double aveStation = (sta2.trueStation + soe1.station) / 2.0;
        HorizontalAlignmentBase HAelement =
           this.GoverningAlignment.GetElementByStation(aveStation);
        HAelement.drawHorizontalByOffset(drawer, soe1, soe2);
     }
     soe1 = soe2;
      }
 }
 public void PersistantDraw(IPersistantDrawer drawer)
 {
     foreach (var pglGrouping in allPGLgroupings)
      {
     pglGrouping.PersistantDraw(drawer);
      }
 }
        public void PersistantDraw(IPersistantDrawer drawer)
        {
            if (null != this.thePGLoffsetRibbon)
            this.thePGLoffsetRibbon.PersistantDraw(drawer);

             if (null != insideRibbons)
             {
            foreach (var aRibbon in insideRibbons)
            {
               aRibbon.PersistantDraw(drawer);
            }
             }

             if (null != outsideRibbons)
             {
            foreach (var aRibbon in outsideRibbons)
            {
               aRibbon.PersistantDraw(drawer);
            }
             }
        }