private void GetAlignmentInfoAfterChange(String alignmentName) { ObjectId alignOid = doc.GetSitelessAlignmentId(alignmentName); Alignment align = ts.GetObject(alignOid, OpenMode.ForRead) as Alignment; m_editor.WriteMessage("\n{0, -50} {1} \n", "UseDesignSpeed :", align.UseDesignSpeed); m_editor.WriteMessage("{0, -50} {1} \n", "UseDesignCheckSet :", align.UseDesignCheckSet); m_editor.WriteMessage("{0, -50} {1} \n", "UseDesignCriteriaFile :", align.UseDesignCriteriaFile); m_editor.WriteMessage("{0, -50} {1} \n", "ReferencePoint :", align.ReferencePoint); m_editor.WriteMessage("{0, -50} {1} \n", "ReferencePointStation :", align.ReferencePointStation); m_editor.WriteMessage("{0, -50} {1} \n", "StationIndexIncrement :", align.StationIndexIncrement); m_editor.WriteMessage("{0, -50} {1} \n", "StyleName :", align.StyleName); StationEquationCollection StationEquationColl = align.StationEquations; m_editor.WriteMessage("{0, -50} {1} \n", "StationEquation Collection count :", StationEquationColl.Count); SuperelevationCriticalStationCollection SuperEleData = align.SuperelevationCriticalStations; m_editor.WriteMessage("{0, -50} {1} \n", "Superelevation Critical Stations count :", SuperEleData.Count); DesignSpeedCollection DesignSpeedColl = align.DesignSpeeds; m_editor.WriteMessage("{0, -50} {1} \n", "DesignSpeed Collection count :", DesignSpeedColl.Count); }
//Get complex alignment properties. private void GetAlignmentComplexInfo(String alignmentName) { ObjectId alignOid = doc.GetSitelessAlignmentId(alignmentName); Alignment align = ts.GetObject(alignOid, OpenMode.ForRead) as Alignment; m_editor.WriteMessage("\n----------------Alignment Complex properties - begin----------------\n"); DesignSpeedCollection DesignSpeedColl = align.DesignSpeeds; m_editor.WriteMessage("{0, -50} {1} \n", "DesignSpeed Collection count :", DesignSpeedColl.Count); ObjectIdCollection LabelGroupColl = align.GetLabelGroupIds(); m_editor.WriteMessage("{0, -50} {1} \n", "LabelGroup Collection count :", LabelGroupColl.Count); ObjectIdCollection LabelColl = align.GetLabelIds(); m_editor.WriteMessage("{0, -50} {1} \n", "Label Collection count :", LabelColl.Count); ObjectIdCollection ProfileIdColl = align.GetProfileIds(); m_editor.WriteMessage("{0, -50} {1} \n", "ProfileId Collection count :", ProfileIdColl.Count); ObjectIdCollection ProfileViewIdColl = align.GetProfileViewIds(); m_editor.WriteMessage("{0, -50} {1} \n", "ProfileViewId Collection count :", ProfileViewIdColl.Count); ObjectIdCollection SampleLineGroupIdColl = align.GetSampleLineGroupIds(); m_editor.WriteMessage("{0, -50} {1} \n", "SampleLineGroupId Collection count :", SampleLineGroupIdColl.Count); StationEquationCollection StationEquationColl = align.StationEquations; m_editor.WriteMessage("{0, -50} {1} \n", "StationEquation Collection count :", StationEquationColl.Count); SuperelevationCriticalStationCollection SuperEleData = align.SuperelevationCriticalStations; m_editor.WriteMessage("{0, -50} {1} \n", "Superelevation Critical Stations count :", SuperEleData.Count); }
copyAlignFromXref(ObjectId idAlign, string strSource) { Alignment objAlign = (Alignment)idAlign.getEnt(); AlignmentEntityCollection objAlignEnts = default(AlignmentEntityCollection); AlignmentEntity objAlignEnt = default(AlignmentEntity); AlignmentArc objAlignEntArc = default(AlignmentArc); AlignmentLine objAlignEntTan = default(AlignmentLine); Point2d pnt2dBeg = objAlign.ReferencePoint; double dblStationStart = objAlign.ReferencePointStation; string strAlignName = objAlign.Name; StationEquationCollection objStationEQs = objAlign.StationEquations; List <AlgnEntData> varAlignEntData = listAlignEnts(objAlign); objAlignEnts = objAlign.Entities; List <Vertex2d> pnts2dPoly = new List <Vertex2d>(); double bulge = 0; for (int i = 0; i < varAlignEntData.Count; i++) { objAlignEnt = objAlignEnts.EntityAtId(varAlignEntData[i].ID); if (objAlignEnt.EntityType == AlignmentEntityType.Arc) { objAlignEntArc = (AlignmentArc)objAlignEnt; if (i == objAlignEnts.Count - 1) { bulge = System.Math.Tan(objAlignEntArc.Delta / 4); if (objAlignEntArc.Clockwise) { bulge = bulge * -1.0; } pnts2dPoly.Add(new Vertex2d(new Point3d(objAlignEntArc.StartPoint.X, objAlignEntArc.StartPoint.Y, 0), bulge, 0, 0, 0)); pnts2dPoly.Add(new Vertex2d(new Point3d(objAlignEntArc.EndPoint.X, objAlignEntArc.EndPoint.Y, 0), 0, 0, 0, 0)); } else { bulge = System.Math.Tan(objAlignEntArc.Delta / 4); if (objAlignEntArc.Clockwise) { bulge = bulge * -1; } pnts2dPoly.Add(new Vertex2d(new Point3d(objAlignEntArc.StartPoint.X, objAlignEntArc.StartPoint.Y, 0), bulge, 0, 0, 0)); } } else if (objAlignEnt.EntityType == AlignmentEntityType.Line) { objAlignEntTan = (AlignmentLine)objAlignEnt; if (i == objAlignEnts.Count - 1) { pnts2dPoly.Add(new Vertex2d(new Point3d(objAlignEntTan.StartPoint.X, objAlignEntTan.StartPoint.Y, 0), 0, 0, 0, 0)); pnts2dPoly.Add(new Vertex2d(new Point3d(objAlignEntTan.EndPoint.X, objAlignEntTan.EndPoint.Y, 0), 0, 0, 0, 0)); } else { pnts2dPoly.Add(new Vertex2d(new Point3d(objAlignEntTan.StartPoint.X, objAlignEntTan.StartPoint.Y, 0), 0, 0, 0, 0)); } } } ObjectId idPoly = Draw.addPoly(pnts2dPoly); string strLayer = ""; if (strSource == "WALLDESIGN") { strLayer = "WALL-PROFILE"; } else { strLayer = strSource; } Layer.manageLayers(strLayer); Alignment objAlignNew = null; try { objAlignNew = Align.addAlignmentFromPoly(strAlignName, strLayer, idPoly, "Standard", "Standard", true); } catch (System.Exception ex) { System.Diagnostics.Debug.Print(ex.ToString()); return(null); } objAlignNew.ReferencePointStation = dblStationStart; double dblStaBack = 0; double dblStaAhead = 0; StationEquationType objStaEqType = default(StationEquationType); for (int i = 0; i <= objStationEQs.Count - 1; i++) { dblStaBack = objStationEQs[i].RawStationBack; dblStaAhead = objStationEQs[i].StationAhead; objStaEqType = objStationEQs[i].EquationType; objAlignNew.StationEquations.Add(dblStaBack, dblStaAhead, objStaEqType); } return(objAlignNew); }
getCardinals_Vertical(ObjectId idAlign, ref List <POI> varpoi) { Alignment objAlign = (Alignment)idAlign.getEnt(); StationEquationCollection objStationEQs = objAlign.StationEquations; double dblSlope = 0, dblElevBase = 0, dblSlopeAhead = 0, dblLen = 0, dblElev = 0, dblLenAhead = 0, dblLenBack = 0; Debug.Print("Begin raw HC and Points"); for (int i = 0; i < varpoi.Count; i++) { Debug.Print(i + " " + varpoi[i].Station + " " + varpoi[i].Elevation + " " + varpoi[i].Desc0 + " " + varpoi[i].PntNum); } Debug.Print("End raw HC and Points"); List <POI> varPOI_VC = testVerticals(varpoi); //varPOI_VC = testVerticals(varPOI_VC) 'second pass to take care of triplicate points //BEGIN PREPARE LIST OF HC WITH ELEVATIONS POI vpoi = new POI(); List <double> dblStaHC = new List <double>(); List <POI> varPOI_HC = new List <POI>(); for (int i = 0; i < varPOI_VC.Count; i++) { if (varPOI_VC[i].Desc0 == "HC") { dblStaHC.Add(varPOI_VC[i].Station);//list of HC locations by station if (varPOI_VC[i].Elevation != 0) { varPOI_HC.Add(varPOI_VC[i]);//list of HCs with elevation } else { vpoi = varPOI_VC[i]; vpoi.Desc0 = "H0"; varPOI_VC[i] = vpoi; } } } //END PREPARE LIST OF HC WITH ELEVATIONS //BEGIN SLOPE CALC BETWEEN HC WITH ELEVATION if (objStationEQs.Count == 0) { for (int i = 0; i < varPOI_HC.Count; i++) { dblLenAhead = varPOI_HC[i + 1].Station - varPOI_HC[i + 0].Station; if (dblLenAhead != 0) { varPOI_HC[i].SlopeH2H = System.Math.Round((varPOI_HC[i + 1].Elevation - varPOI_HC[i + 0].Elevation) / dblLenAhead, 5); } } } else { Autodesk.AutoCAD.ApplicationServices.Application.ShowAlertDialog("Alignment has Station Equation - See Developer"); return(false); } //END SLOPE CALC BETWEEN HC WITH ELEVATION //BEGIN SET ELEVATION ON MISSING HC //BEGIN CHECK ON FIRST POINT if (varPOI_HC.Count > 0) { //k = UBound(varPOI_HC) 'start with existing list of HCs with elevation if (varPOI_VC[0].Desc0 == "H0") { int x = 0; for (int i = 1; i < varPOI_VC.Count; i++) { dblElev = varPOI_VC[i].Elevation; if (dblElev != 0) { x = i; break; } } dblLen = varPOI_HC[0].Station - varPOI_VC[x].Station; if (dblLen == 0) { varPOI_VC[0].Elevation = varPOI_HC[0].Elevation + -varPOI_HC[0].SlopeH2H * (varPOI_HC[0].Station - varPOI_VC[0].Station); } else { dblSlopeAhead = (varPOI_HC[0].Elevation - varPOI_VC[x].Elevation) / dblLen; varPOI_VC[0].Elevation = dblElev + -dblSlopeAhead * (varPOI_VC[x].Station - varPOI_VC[0].Station); } varPOI_VC[0].Desc0 = "HE"; varPOI_HC.Add(varPOI_VC[0]); var sortSta = from s in varPOI_HC orderby s.Station ascending select s; List <POI> poiTmp = new List <POI>(); foreach (var s in sortSta) { poiTmp.Add(s); } varPOI_HC = poiTmp; //recompute slope between all HCs instead of finding matching station for (int i = 0; i < varPOI_HC.Count; i++) { varPOI_HC[i].SlopeH2H = System.Math.Round((varPOI_HC[i + 1].Elevation - varPOI_HC[i + 0].Elevation) / (varPOI_HC[i + 1].Station - varPOI_HC[i + 0].Station), 5); } } else { var sortSta = from s in varPOI_HC orderby s.Station ascending select s; List <POI> poiTmp = new List <POI>(); foreach (var s in sortSta) { poiTmp.Add(s); } varPOI_HC = poiTmp; } //END CHECK ON FIRST POINT //BEGIN CHECK ON REMAINING POINTS //start with existing list of HCs with elevation for (int i = 1; i < varPOI_VC.Count; i++) { if (varPOI_VC[i].Desc0 == "H0") { for (int j = 1; j < varPOI_VC.Count; j++) { if (varPOI_VC[i - 1].Station < varPOI_VC[i].Station & varPOI_VC[i].Station < varPOI_VC[i + 1].Station) { if (varPOI_VC[i + 1].Elevation != 0 & varPOI_VC[i - 1].Elevation != 0) { dblLen = varPOI_VC[i + 1].Station - varPOI_VC[i - 1].Station; dblElevBase = varPOI_VC[i - 1].Elevation; dblSlope = (varPOI_VC[i + 1].Elevation - dblElevBase) / dblLen; dblLen = varPOI_VC[i + 0].Station - varPOI_VC[i - 1].Station; } else if (varPOI_VC[i + 1].Elevation != 0 & varPOI_VC[i - 1].Elevation == 0) { dblLen = varPOI_VC[i + 1].Station - varPOI_VC[i - 2].Station; dblElevBase = varPOI_VC[i - 2].Elevation; dblSlope = (varPOI_VC[i + 1].Elevation - dblElevBase) / dblLen; dblLen = varPOI_VC[i + 0].Station - varPOI_VC[i - 2].Station; } else if (varPOI_VC[i + 1].Elevation == 0 & varPOI_VC[i - 1].Elevation != 0) { if (i < varPOI_VC.Count - 2) { dblLen = varPOI_VC[i + 2].Station - varPOI_VC[i - 1].Station; dblElevBase = varPOI_VC[i - 1].Elevation; dblSlope = (varPOI_VC[i + 2].Elevation - dblElevBase) / dblLen; dblLen = varPOI_VC[i + 0].Station - varPOI_VC[i - 1].Station; } else { } } else if (i > 1 && i < varPOI_VC.Count - 3) { if (varPOI_VC[i + 1].Elevation == 0 & varPOI_VC[i - 1].Elevation == 0) { if (i < varPOI_VC.Count - 2) { dblLen = varPOI_VC[i + 2].Station - varPOI_VC[i - 2].Station; dblElevBase = varPOI_VC[i - 2].Elevation; dblSlope = (varPOI_VC[i + 2].Elevation - dblElevBase) / dblLen; dblLen = varPOI_VC[i + 0].Station - varPOI_VC[i - 2].Station; } else { } } } POI poiTmp = varPOI_VC[i]; poiTmp.Elevation = System.Math.Round(dblElevBase + dblSlope * dblLen, 3); poiTmp.Desc0 = "HE"; varPOI_VC[i] = poiTmp; varPOI_HC.Add(varPOI_VC[i]); break; } } } } } int a = varPOI_VC.Count - 1; if (varPOI_VC[a].Desc0 == "H0") { dblLen = varPOI_VC[a - 1].Station - varPOI_VC[a - 2].Station; dblElevBase = varPOI_VC[a - 1].Elevation; dblSlope = (dblElevBase - varPOI_VC[a - 2].Elevation) / dblLen; dblLen = varPOI_VC[a].Station - varPOI_VC[a - 1].Station; POI poiTemp = varPOI_VC[a]; poiTemp.Elevation = System.Math.Round(dblElevBase + dblSlope * dblLen, 3); poiTemp.Desc0 = "HE"; varPOI_VC[a] = poiTemp; varPOI_HC.Add(varPOI_VC[a]); } Debug.Print("Begin SET ELEVATION ON MISSING HC"); for (int i = 0; i < varPOI_HC.Count; i++) { Debug.Print(i + " " + varPOI_HC[i].Station + " " + varPOI_HC[i].Elevation + " " + varPOI_HC[i].Desc0 + " " + varPOI_HC[i].PntNum); } Debug.Print("End SET ELEVATION ON MISSING HC"); //END CHECK ON REMAINING POINTS //END SET ELEVATION ON MISSING HC varPOI_HC = varPOI_HC.sortPOIbyStation(); //BEGIN SLOPE CALC FOR EACH POINT dblLenAhead = (varPOI_VC[1].Station - varPOI_VC[0].Station); if (dblLenAhead != 0) { varPOI_VC[0].SlopeAhead = System.Math.Round((varPOI_VC[1].Elevation - varPOI_VC[0].Elevation) / dblLenAhead, 5); } int u = varPOI_VC.Count - 1; for (int i = 1; i < u - 1; i++) { dblLenBack = (varPOI_VC[i - 0].Station - varPOI_VC[i - 1].Station); dblLenAhead = (varPOI_VC[i + 1].Station - varPOI_VC[i + 0].Station); vpoi = varPOI_VC[i]; if (dblLenBack != 0) { vpoi.SlopeBack = System.Math.Round((varPOI_VC[i - 1].Elevation - varPOI_VC[i - 0].Elevation) / dblLenBack, 5); } if (dblLenAhead != 0) { vpoi.SlopeAhead = System.Math.Round((varPOI_VC[i + 1].Elevation - varPOI_VC[i + 0].Elevation) / dblLenAhead, 5); } varPOI_VC[i] = vpoi; } dblLenBack = (varPOI_VC[u - 0].Station - varPOI_VC[u - 1].Station); varPOI_VC[u].SlopeBack = System.Math.Round((varPOI_VC[u - 1].Elevation - varPOI_VC[u - 0].Elevation) / dblLenBack, 5); //END SLOPE CALC FOR EACH POINT List <int> intIndexHC = new List <int>(); for (int i = 0; i < varPOI_VC.Count; i++) { switch (varPOI_VC[i].Desc0.Substring(0, 2)) { case "HC": case "HE": case "H0": intIndexHC.Add(i); break; } } Debug.Print("Begin POI_VC"); for (int i = 0; i < varPOI_VC.Count; i++) { Debug.Print(i + " " + varPOI_VC[i].Station + " " + varPOI_VC[i].Elevation + " " + varPOI_VC[i].SlopeAhead + " " + varPOI_VC[i].SlopeBack + " " + varPOI_VC[i].Desc0 + ": " + varPOI_VC[i].PntNum); } Debug.Print("End POI_VC"); //BEGIN CHECK FOR POINTS ON GRADE int intSlopeO = 0, intSlopeX = 0; double dblSlopeTotal = 0, dblSlopeAvg = 0, dblSlopeDiff = 0, dblSlopeDiffH2H = 0; bool boolSlopeSame = false; if (intIndexHC.Count > 0) { for (int i = 0; i < intIndexHC.Count - 1; i++) { if (varPOI_VC[i].SlopeAhead >= 0) { intSlopeO = 1; } else { intSlopeO = -1; } int k = 0; dblSlopeTotal = 0.0; for (int j = intIndexHC[i + 1]; j < intIndexHC[i + 1] - 1; j++) { if (varPOI_VC[j].SlopeAhead >= 0) { intSlopeX = 1; } else { intSlopeX = -1; } if (intSlopeX == intSlopeO) { boolSlopeSame = true; k++; dblSlopeTotal = dblSlopeTotal + varPOI_VC[j].SlopeAhead; } else { boolSlopeSame = false; break; } } if (boolSlopeSame) { dblSlopeAvg = dblSlopeTotal / k; dblSlopeDiff = System.Math.Abs(System.Math.Round(varPOI_HC[i].SlopeH2H - dblSlopeAvg, 5)); if (dblSlopeDiff < 0.0005) { Debug.Print(varPOI_HC[i].Station + " SlopeH2H: " + varPOI_HC[i].SlopeH2H); Debug.Print(varPOI_HC[i + 1].Station + " SlopeH2H: " + varPOI_HC[i + 1].SlopeH2H); } else { for (int j = intIndexHC[i] + 1; j <= intIndexHC[i + 1] - 1; j++) { dblSlopeDiffH2H = System.Math.Abs(System.Math.Round(varPOI_VC[j].SlopeAhead - varPOI_HC[i].SlopeH2H, 4)); dblSlopeDiff = System.Math.Abs(System.Math.Round(varPOI_VC[j].SlopeAhead + varPOI_VC[j].SlopeBack, 4)); if (dblSlopeDiff <= 0.0005) { Debug.Print(varPOI_VC[j].Station + " " + "dblSlopeDiff <= 0.0005"); } else if (dblSlopeDiff > 0.0005 | dblSlopeDiffH2H > 0.0005) { varPOI_VC[j].Desc0 = "GB"; Debug.Print(varPOI_VC[j].Station + " " + dblSlopeDiff); } } } } else { for (int j = intIndexHC[i] + 1; j < intIndexHC[i + 1] + 1; j++) { dblSlopeDiff = System.Math.Abs(System.Math.Round(varPOI_VC[j].SlopeAhead + varPOI_VC[j].SlopeBack, 4)); if (dblSlopeDiff <= 0.0005) { Debug.Print(varPOI_VC[j].Station + " " + "dblSlopeDiff <= 0.0005"); } else { varPOI_VC[j].Desc0 = "GB"; Debug.Print(varPOI_VC[j].Station + " " + dblSlopeDiff); } } } } } else { if (varPOI_VC[0].SlopeAhead >= 0) { intSlopeO = 1; } else { intSlopeO = -1; } int k = 0; dblSlopeTotal = 0.0; //compute average slope between changes in sign of slope for (int j = 1; j < varPOI_VC.Count; j++) { if (varPOI_VC[j].SlopeAhead >= 0) { intSlopeX = 1; } else { intSlopeX = -1; } if (intSlopeX == intSlopeO) { boolSlopeSame = true; k = k + 1; dblSlopeTotal = dblSlopeTotal + varPOI_VC[j].SlopeAhead; } else { boolSlopeSame = false; break; } } if (boolSlopeSame) { dblSlopeAvg = dblSlopeTotal / k; dblSlopeDiff = System.Math.Abs(System.Math.Round(varPOI_HC[0].SlopeH2H - dblSlopeAvg, 5)); if (dblSlopeDiff < 0.0005) { Debug.Print(varPOI_HC[0].Station + " SlopeH2H: " + varPOI_HC[0].SlopeH2H); } else { //check points between HC for (int j = 1; j < varPOI_VC.Count; j++) { dblSlopeDiffH2H = System.Math.Abs(System.Math.Round(varPOI_VC[j].SlopeAhead - varPOI_HC[0].SlopeH2H, 4)); dblSlopeDiff = System.Math.Abs(System.Math.Round(varPOI_VC[j].SlopeAhead + varPOI_VC[j].SlopeBack, 4)); if (dblSlopeDiff <= 0.0005) { Debug.Print(varPOI_VC[j].Station + " " + "dblSlopeDiff <= 0.0005"); } else if (dblSlopeDiff > 0.0005 | dblSlopeDiffH2H > 0.0005) { varPOI_VC[j].Desc0 = "GB"; Debug.Print(varPOI_VC[j].Station + " " + dblSlopeDiff); } } } } else { //check points between HC for (int j = 1; j < varPOI_VC.Count; j++) { dblSlopeDiff = System.Math.Abs(System.Math.Round(varPOI_VC[j].SlopeAhead + varPOI_VC[j].SlopeBack, 4)); if (dblSlopeDiff <= 0.0005) { Debug.Print(varPOI_VC[j].Station + " " + "dblSlopeDiff <= 0.0005"); } else { varPOI_VC[j].Desc0 = "GB"; Debug.Print(varPOI_VC[j].Station + " " + dblSlopeDiff); } } } } //END CHECK FOR POINTS ON GRADE Debug.Print("Begin Mod POI_VC"); for (int i = 0; i < varPOI_VC.Count; i++) { Debug.Print(i + " " + varPOI_VC[i].Station + " " + varPOI_VC[i].Elevation + " " + varPOI_VC[i].SlopeAhead + " " + varPOI_VC[i].SlopeBack + " " + varPOI_VC[i].Desc0 + ": " + varPOI_VC[i].PntNum); } Debug.Print("End Mod POI_VC"); //BEGIN LIST OF CARDINALS for (int i = 0; i < varPOI_VC.Count; i++) { switch (varPOI_VC[i].Desc0) { case "HC": case "HE": if (varPOI_VC[i].SlopeBack + varPOI_VC[i].SlopeAhead != 0) { varPOI_VC[i].DescX = "GB " + varPOI_VC[i].Desc0; //either HC or HE varPOI_HC.Add(varPOI_VC[i]); } else if (i == 0 || i == varPOI_VC.Count - 1) { varPOI_HC.Add(varPOI_VC[i]); } break; case "GB": varPOI_HC.Add(varPOI_VC[i]); break; } } //END LIST OF CARDINALS Debug.Print("Begin Cardinals HC"); for (int i = 0; i < varPOI_HC.Count; i++) { Debug.Print(i + " " + varPOI_HC[i].Station + " " + varPOI_HC[i].Elevation + " " + varPOI_HC[i].SlopeAhead + " " + varPOI_HC[i].Desc0 + " " + varPOI_HC[i].DescX); } Debug.Print("End Cardinals HC"); varpoi = new List <POI>(); varpoi = varPOI_HC; //first and last entries are cardinals for (int i = 1; i < varpoi.Count - 1; i++) { vpoi = varpoi[i]; if (varpoi[i].SlopeBack > 0 && varpoi[i].SlopeAhead > 0) { vpoi.Desc0 = "GB LP"; } else if (varpoi[i].SlopeBack < 0 & varpoi[i].SlopeAhead < 0) { vpoi.Desc0 = "GB HP"; } varpoi[i] = vpoi; } //END VERTICAL CARDINALS Debug.Print("Begin Final Cardinals"); for (int i = 0; i < varpoi.Count; i++) { Debug.Print(i + " " + varpoi[i].Station + " " + varpoi[i].Elevation + " " + varpoi[i].SlopeAhead + " " + varpoi[i].SlopeBack + " " + varpoi[i].Desc0 + " " + varpoi[i].DescX); } Debug.Print("End Final Cardinals"); return(true); }