sOffsToPNT_DATA(List <staOffElev> sOffs) { List <PNT_DATA> pData = new List <PNT_DATA>(); foreach (staOffElev s in sOffs) { PNT_DATA p = new PNT_DATA() { STA = s.staAlign, z = s.elev }; pData.Add(p); } return(pData); }
selectNestedPoints(string strFunction) { string strPrompt = "Select " + strFunction + " Cogo Point"; string strFile_Layer = "", strFile = "", strLayer = ""; bool escape; CogoPoint objPnt = null; Alignment objAlign = fWall1.ACTIVEALIGN; double dblStation = 0, dblOffset = 0; List <PNT_DATA> varPNT_DATA = new List <PNT_DATA>(); do { try { Entity ent = xRef.getEntity(strPrompt, out escape, out strFile_Layer); if (ent is CogoPoint) { ObjectId idPnt = ent.ObjectId; objPnt = (CogoPoint)ent; } if (objPnt != null) { Misc.processLayername(strFile_Layer, ref strLayer, ref strFile); try { try { objAlign.StationOffset(objPnt.Easting, objPnt.Northing, ref dblStation, ref dblOffset); } catch (Autodesk.Civil.PointNotOnEntityException) { dblStation = 0.0; } PNT_DATA vPNT_DATA = new PNT_DATA(); vPNT_DATA.DESC = objPnt.RawDescription; vPNT_DATA.NUM = objPnt.PointNumber; vPNT_DATA.x = objPnt.Easting; vPNT_DATA.y = objPnt.Northing; vPNT_DATA.z = System.Math.Round(objPnt.Elevation, 3); vPNT_DATA.ALIGN = objAlign.Name; vPNT_DATA.STA = System.Math.Round(dblStation, 2); vPNT_DATA.OFFSET = System.Math.Round(dblOffset, 2); varPNT_DATA.Add(vPNT_DATA); } catch (Autodesk.AutoCAD.Runtime.Exception) { } } } catch (Autodesk.AutoCAD.Runtime.Exception) { break; } }while (true); List <PNT_DATA> t = new List <PNT_DATA>(); dynamic sta = from data in varPNT_DATA orderby data.STA select data; foreach (var d in sta) { t.Add(d); } switch (strFunction) { case "DESIGN": fWall1.PNTSDESIGN = t; break; case "EXIST": fWall1.PNTSEXIST = t; break; } }
CreateProfileBySurface(string strName, ObjectId idAlign, double dblAlignOffset) { string strAlignName = Align.getAlignName(idAlign); //Dim idProfileStyle As ObjectId = Prof_Style.getProfileStyle("WALL") //Dim idStyleLabelSet As ObjectId = Prof_Style.getProfileLabelSetStyle("WALL") ObjectId idProfileStyle = Prof_Style.getProfileStyle("Standard"); ObjectId idStyleLabelSet = Prof_Style.getProfileLabelSetStyle("Standard"); string strLayerName = string.Format("PROFILE-{0}", strAlignName); Alignment objAlignOff = null; if (dblAlignOffset != 0) { ObjectId idPoly = Align.getAlignmentPoly(idAlign); ObjectId idPolyOff = Base_Tools45.Draw.addPolyOffset(idPoly, dblAlignOffset); strAlignName = string.Format("{0}_{1}_OFF", strAlignName, dblAlignOffset); objAlignOff = Align.addAlignmentFromPoly(strAlignName, strLayerName, idPolyOff, "Thienes_Proposed", "Thienes_Proposed", true); } string strSurface = ""; if (strName == "CPNT") { strSurface = "CPNT-ON"; } else { strSurface = strName; } TinSurface objSurface = null; try { bool exists = false; objSurface = Surf.getTinSurface(strSurface, out exists); } catch (Autodesk.AutoCAD.Runtime.Exception) { System.Windows.Forms.MessageBox.Show(strSurface + " is not available."); } Profile objProfile = null; if (dblAlignOffset != 0) { Prof.removeProfile(objAlignOff.ObjectId, strName); } else { Prof.removeProfile(idAlign, strName); } ObjectId idStyle = default(ObjectId); ObjectId idLabel = default(ObjectId); using (BaseObjs._acadDoc.LockDocument()) { using (Transaction TR = BaseObjs.startTransactionDb()) { ObjectId idSurf = objSurface.ObjectId; ObjectId idLayer = Layer.manageLayers(strLayerName); string mess = string.Format("WALL,{0},{1},{2},{3},{4}", idAlign, idSurf, idLayer, idStyle, idLabel); BaseObjs.write(mess); try { objProfile = Prof.addProfileBySurface(strName, idAlign, idSurf, idLayer, idProfileStyle, idStyleLabelSet); objProfile.Layer = strLayerName; } catch (Autodesk.AutoCAD.Runtime.Exception exp) { Autodesk.AutoCAD.ApplicationServices.Core.Application.ShowAlertDialog(exp.Message); } TR.Commit(); } } if (dblAlignOffset != 0) { ProfilePVI objPvi = null; List <PNT_DATA> varPnt_Data = new List <PNT_DATA>(); PNT_DATA vPnt_Data = new PNT_DATA(); for (int i = 0; i <= objProfile.PVIs.Count; i++) { objPvi = objProfile.PVIs[i]; vPnt_Data.STA = objPvi.Station; vPnt_Data.z = objPvi.Elevation; vPnt_Data.OFFSET = dblAlignOffset; varPnt_Data.Add(vPnt_Data); } fWall1.PNTSDESIGN = varPnt_Data; return(objAlignOff.ObjectId); } return(idAlign); }
getPNT_DATA_FINAL(Alignment objAlignPL, Alignment objAlignRF) { List <double> dblStationsFinal = new List <double>(); List <PNT_DATA> Pnt_Data_PL = new List <PNT_DATA>(); PNT_DATA Pnt_Data = new PNT_DATA(); double dblStationRF = 0; int i = 0; int j = 0; int k = 0; int n = 0; int x = 0; //GET PL AND RF PROFILES Profile objProfilePL = null; try { objProfilePL = Prof.getProfile(objAlignPL.Name, "EXIST"); } catch (Autodesk.AutoCAD.Runtime.Exception) { } if ((objProfilePL == null)) { Application.ShowAlertDialog("EXIST profile for PL missing. Exiting ....."); return(null); } Profile objProfileRF = null; try { objProfileRF = Prof.getProfile(objAlignRF.Name, "CPNT"); } catch (Autodesk.AutoCAD.Runtime.Exception) { } if ((objProfileRF == null)) { Application.ShowAlertDialog("CPNT profile for REF Alignment missing. Exiting ....."); return(null); } foreach (ProfilePVI objPVI_PL in objProfilePL.PVIs) { if (objPVI_PL.Station >= objAlignRF.StartingStation & objPVI_PL.Station <= objAlignRF.EndingStation) { Pnt_Data = new PNT_DATA(); Pnt_Data.STA = System.Math.Round(objPVI_PL.Station, 2); Pnt_Data_PL.Add(Pnt_Data); } } // Existing profile PVIs within objAlignRF limits double dblLenBack = 0; double dblLenAhead = 0; for (i = 1; i < Pnt_Data_PL.Count; i++) { dblLenBack = (Pnt_Data_PL[i - 0].STA - Pnt_Data_PL[i - 1].STA); dblLenAhead = (Pnt_Data_PL[i + 1].STA - Pnt_Data_PL[i + 0].STA); if (dblLenBack != 0) { Pnt_Data_PL[i].SLOPEBACK = System.Math.Round((objProfilePL.ElevationAt(Pnt_Data_PL[i - 1].STA) - objProfilePL.ElevationAt(Pnt_Data_PL[i - 0].STA)) / dblLenBack, 5); } if (dblLenAhead != 0) { Pnt_Data_PL[i].SLOPEAHEAD = System.Math.Round((objProfilePL.ElevationAt(Pnt_Data_PL[i + 1].STA) - objProfilePL.ElevationAt(Pnt_Data_PL[i + 0].STA)) / dblLenAhead, 5); } } // CPNT profile pvis List <PNT_DATA> Pnt_Data_DE = new List <PNT_DATA>(); Wall_Form.frmWall2 fWall2 = Wall_Forms.wForms.fWall2; { Pnt_Data_DE = fWall2.PNTSDESIGN; if ((Pnt_Data_DE == null)) { Pnt_Data_DE = new List <PNT_DATA>(); int z = objProfileRF.PVIs.Count; foreach (ProfilePVI objPVI_RF in objProfileRF.PVIs) { dblStationRF = objPVI_RF.Station; Pnt_Data = new PNT_DATA(); if (i == 0) { Pnt_Data.STA = System.Math.Round(dblStationRF + 0.01, 2); } else if (i == z - 1) { Pnt_Data.STA = System.Math.Round(dblStationRF - 0.01, 2); } else { Pnt_Data.STA = System.Math.Round(dblStationRF, 2); } Pnt_Data.z = objPVI_RF.Elevation; Pnt_Data_DE.Add(Pnt_Data); } } else { k = Pnt_Data_DE.Count - 1; for (i = 1; i <= k - 1; i++) { dblLenBack = (Pnt_Data_DE[i - 0].STA - Pnt_Data_DE[i - 1].STA); dblLenAhead = (Pnt_Data_DE[i + 1].STA - Pnt_Data_DE[i + 0].STA); if (dblLenBack != 0) { Pnt_Data_DE[i].SLOPEBACK = System.Math.Round((objProfileRF.ElevationAt(Pnt_Data_DE[i - 1].STA) - objProfileRF.ElevationAt(Pnt_Data_DE[i - 0].STA)) / dblLenBack, 5); } if (dblLenAhead != 0) { Pnt_Data_DE[i].SLOPEAHEAD = System.Math.Round((objProfileRF.ElevationAt(Pnt_Data_DE[i + 1].STA) - objProfileRF.ElevationAt(Pnt_Data_DE[i + 0].STA)) / dblLenAhead, 5); } } } } double dblSlopDiff = 0; List <PNT_DATA> Pnt_Data_Tmp = new List <PNT_DATA>(); if (Pnt_Data_DE.Count > 0) { Pnt_Data_Tmp.Add(Pnt_Data_DE[0]); } j = 0; for (i = 0; i <= Pnt_Data_PL.Count - 1; i++) { dblSlopDiff = Pnt_Data_PL[i].SLOPEAHEAD - Pnt_Data_PL[i].SLOPEBACK; if (System.Math.Abs(System.Math.Round(dblSlopDiff, 2)) > 0.005) { Pnt_Data_Tmp.Add(Pnt_Data_PL[i]); } } for (i = 1; i <= Pnt_Data_DE.Count - 1; i++) { dblSlopDiff = Pnt_Data_DE[i].SLOPEAHEAD + Pnt_Data_DE[i].SLOPEBACK; if (System.Math.Round(dblSlopDiff, 2) > 0.001) { Pnt_Data_Tmp.Add(Pnt_Data_DE[i]); } } if (Pnt_Data_DE.Count > 1) { Pnt_Data_Tmp.Add(Pnt_Data_DE[Pnt_Data_DE.Count - 1]); } dynamic staPNT_DATA = from data in Pnt_Data_Tmp orderby data.STA select data; i = -1; foreach (PNT_DATA vPNT_DATA in staPNT_DATA) { i = i + 1; Pnt_Data_Tmp[i] = vPNT_DATA; } List <PNT_DATA> Pnt_Data_Final = new List <PNT_DATA>(); Pnt_Data_Final.Add(Pnt_Data_Tmp[0]); k = Pnt_Data_Tmp.Count - 1; j = 0; //GET GRADEBREAKS for (i = 1; i <= k; i++) { dblLenBack = System.Math.Round(Pnt_Data_Tmp[i - 0].STA - Pnt_Data_Tmp[i - 1].STA, 1); if (Pnt_Data_Tmp[i].SLOPEBACK < 0) { if (Pnt_Data_Tmp[i].SLOPEAHEAD < 0) { Pnt_Data_Final.Add(Pnt_Data_Tmp[i]); } } else if (Pnt_Data_Tmp[i].SLOPEBACK > 0) { if (Pnt_Data_Tmp[i].SLOPEAHEAD > 0) { Pnt_Data_Final.Add(Pnt_Data_Tmp[i]); } } } int intInterval = 10; //ADD DATAPOINTS EVERY intInterval FEET for (i = 1; i < Pnt_Data_Tmp.Count; i++) { dblLenBack = System.Math.Round(Pnt_Data_Tmp[i - 0].STA - Pnt_Data_Tmp[i - 1].STA, 1); if (dblLenBack > intInterval) { n = (int)System.Math.Truncate(dblLenBack / intInterval); if (i == 1) { for (x = 1; x <= n; x++) { Pnt_Data = new PNT_DATA(); Pnt_Data.STA = Pnt_Data_Tmp[i - 1].STA + x * intInterval; Pnt_Data_Final.Add(Pnt_Data); } } else { if (dblLenBack / intInterval - n < 0.2) { Pnt_Data = new PNT_DATA(); Pnt_Data_Final.Add(Pnt_Data_Tmp[i - 1]); Pnt_Data = new PNT_DATA(); Pnt_Data.STA = Pnt_Data_Tmp[i - 1].STA + dblLenBack / (n + 1); Pnt_Data_Final.Add(Pnt_Data); } else { for (x = 0; x <= n; x++) { Pnt_Data = new PNT_DATA(); Pnt_Data.STA = Pnt_Data_Tmp[i - 1].STA + x * intInterval; Pnt_Data_Final.Add(Pnt_Data); } } } } else if (dblLenBack > 5) { Pnt_Data_Final.Add(Pnt_Data_Tmp[i]); } } j = Pnt_Data_Final.Count - 1; if (objAlignRF.EndingStation - Pnt_Data_Final[j].STA > 5) { Pnt_Data_Final.Add(Pnt_Data_Tmp[k]); } else { Pnt_Data_Final[j] = Pnt_Data_Tmp[k]; } for (i = 0; i <= Pnt_Data_Final.Count - 1; i++) { if (Pnt_Data_Final[i].STA < Pnt_Data_PL[0].STA) { Pnt_Data_Final[i] = Pnt_Data_PL[0]; } else { break; // TODO: might not be correct. Was : Exit For } } if (Pnt_Data_DE.Count > 1) { Pnt_Data_Final.Add(Pnt_Data_DE[Pnt_Data_DE.Count - 1]); } staPNT_DATA = from data in Pnt_Data_Final orderby data.STA select data; Pnt_Data_Tmp = new List <PNT_DATA>(); foreach (PNT_DATA vPNT_DATA in staPNT_DATA) { vPNT_DATA.STA = System.Math.Round(vPNT_DATA.STA, 1); Pnt_Data_Tmp.Add(vPNT_DATA); } Pnt_Data_Final = new List <PNT_DATA>(); Pnt_Data_Final = Misc.removeDuplicateStations(Pnt_Data_Tmp); dblStationsFinal = new List <double>(); for (i = 0; i < Pnt_Data_Final.Count; i++) { dblStationsFinal.Add(Pnt_Data_Final[i].STA); } return(dblStationsFinal); }
getPoints(string strFunction) { ObjectId idPnt = default(ObjectId); CogoPoint objPnt = default(CogoPoint); double dblStation = 0; double dblOffset = 0; List <PNT_DATA> varPNT_DATA = new List <PNT_DATA>(); PNT_DATA vPNT_DATA = new PNT_DATA(); Alignment objAlign = fWall1.ACTIVEALIGN; BaseObjs.write(string.Format("\nSelect {0} Points adjacent to Alignment: ", strFunction)); do { try { idPnt = wne.getNestedPoint("Select Point <ESC to exit>: \n"); } catch (Autodesk.AutoCAD.Runtime.Exception) { break; } if ((idPnt == ObjectId.Null)) { return; } objPnt = (CogoPoint)idPnt.getEnt(); try { objAlign.StationOffset(objPnt.Easting, objPnt.Northing, ref dblStation, ref dblOffset); } catch (Autodesk.Civil.PointNotOnEntityException) { dblStation = 0.0; } vPNT_DATA.DESC = objPnt.RawDescription; vPNT_DATA.NUM = objPnt.PointNumber; vPNT_DATA.x = objPnt.Easting; vPNT_DATA.y = objPnt.Northing; vPNT_DATA.z = System.Math.Round(objPnt.Elevation, 3); vPNT_DATA.ALIGN = objAlign.Name; vPNT_DATA.STA = System.Math.Round(dblStation, 2); vPNT_DATA.OFFSET = System.Math.Round(dblOffset, 2); varPNT_DATA.Add(vPNT_DATA); } while (true); dynamic staPNT_DATA = from data in varPNT_DATA orderby data.STA select data; List <PNT_DATA> p = new List <PNT_DATA>(); foreach (var d in staPNT_DATA) { p.Add(d); } if (strFunction == "EXIST") { fWall1.PNTSEXIST = varPNT_DATA; } else if (strFunction == "DESIGN") { fWall1.PNTSDESIGN = varPNT_DATA; } }
CreateWallProfileView(Alignment objAlign, List <AlgnEntData> algnEntDataList, Polyline3d objBrkLEFT, Polyline3d objBrkRIGHT, string strAPP) { ObjectId idAlign = objAlign.ObjectId; ObjectId idPViewStyle = default(ObjectId); ObjectId idPViewBandSetStyle = default(ObjectId); ProfileView objProfileView = default(ProfileView); string strLayer = null; List <staOffElev> sOffs = wd.convert3dPolyToPnt_Data(objAlign, algnEntDataList, objBrkLEFT.ObjectId, "BRKLEFT"); List <PNT_DATA> PntsBrkLEFT = new List <PNT_DATA>(); foreach (staOffElev s in sOffs) { PNT_DATA p = new PNT_DATA() { STA = s.staAlign, z = s.elev }; PntsBrkLEFT.Add(p); } wdp.CreateProfileByLayout2("BRKLEFT", objAlign, PntsBrkLEFT); sOffs = new List <staOffElev>(); sOffs = wd.convert3dPolyToPnt_Data(objAlign, algnEntDataList, objBrkRIGHT.ObjectId, "BRKRIGHT"); List <PNT_DATA> PntsBrkRIGHT = new List <PNT_DATA>(); foreach (staOffElev s in sOffs) { PNT_DATA p = new PNT_DATA() { STA = s.staAlign, z = s.elev }; PntsBrkRIGHT.Add(p); } wdp.CreateProfileByLayout2("BRKRIGHT", objAlign, PntsBrkRIGHT); Debug.Print("CreateProfileView - Line 45"); try { using (BaseObjs._acadDoc.LockDocument()) { idPViewStyle = Prof_Style.getProfileViewStyle("WALL"); if (idPViewStyle == ObjectId.Null) { idPViewStyle = Prof_Style.CreateProfileViewStyle("WALL"); if (idPViewStyle.IsNull) { idPViewStyle = BaseObjs._civDoc.Styles.ProfileViewStyles[0]; } } } using (BaseObjs._acadDoc.LockDocument()) { idPViewBandSetStyle = Prof_Style.getProfileViewBandSetStyle("WALL"); if (idPViewBandSetStyle == ObjectId.Null) { idPViewBandSetStyle = Prof_Style.CreateProfileViewBandSetStyle("WALL"); if (idPViewBandSetStyle.IsNull) { idPViewBandSetStyle = BaseObjs._civDoc.Styles.ProfileViewBandSetStyles[0]; } } } } catch (Autodesk.AutoCAD.Runtime.Exception ex) { Application.ShowAlertDialog(ex.ToString()); return(null); } PromptStatus ps = default(PromptStatus); Point3d pnt3dIns = default(Point3d); try { pnt3dIns = UserInput.getPoint("Select insertion point for Profile View", out ps, osMode: 0); } catch (Autodesk.AutoCAD.Runtime.Exception) { objAlign.Erase(); return(null); } strLayer = string.Format("{0}-PROFILEVIEW", objAlign.Name); Layer.manageLayers(strLayer); Debug.Print("CreateProfileView - Line 75"); using (BaseObjs._acadDoc.LockDocument()) { using (Transaction TR = BaseObjs.startTransactionDb()) { try { Prof.removeProfileViews(objAlign); } catch (Autodesk.AutoCAD.Runtime.Exception ex) { Application.ShowAlertDialog(ex.ToString()); } objProfileView = Prof.addProfileView(objAlign.ObjectId, pnt3dIns, idPViewBandSetStyle, idPViewStyle); TypedValue[] tvs = new TypedValue[2] { new TypedValue(1001, "WALLDESIGN"), new TypedValue(1005, objProfileView.Handle) }; idAlign.setXData(tvs, "WALLDESIGN"); tvs = new TypedValue[4] { new TypedValue(1001, "BRKRIGHT"), new TypedValue(1005, objBrkRIGHT.Handle), new TypedValue(1040, PntsBrkRIGHT[0].STA), new TypedValue(1040, PntsBrkRIGHT[PntsBrkRIGHT.Count - 1].STA) }; objProfileView.ObjectId.setXData(tvs, "BRKRIGHT"); tvs = new TypedValue[4] { new TypedValue(1001, "BRKLEFT"), new TypedValue(1005, objBrkLEFT.Handle), new TypedValue(1040, PntsBrkLEFT[0].STA), new TypedValue(1040, PntsBrkLEFT[PntsBrkLEFT.Count - 1].STA) }; objProfileView.ObjectId.setXData(tvs, "BRKLEFT"); Profile objProfile1 = Prof.getProfile(objAlign.ObjectId, "BRKLEFT"); //Prof.removeProfileLabelGroup(objProfileView.ObjectId, objProfile1.ObjectId) Profile objProfile2 = Prof.getProfile(objAlign.ObjectId, "BRKRIGHT"); //Prof.removeProfileLabelGroup(objProfileView.ObjectId, objProfile2.ObjectId) TR.Commit(); } } Debug.Print("CreateProfileView - Line 145"); return(objProfileView); }
private void btn_Update_Click(object sender, EventArgs e) { ProfileView objProfileView = null; TypedValue[] tvs; try { BaseObjs.acadActivate(); Point3d pnt3d = Point3d.Origin; objProfileView = (ProfileView)Base_Tools45.Select.selectEntity(typeof(ProfileView), "Select Profile View: ", "Profile View Selection failed", out pnt3d, out ps); } catch (Autodesk.AutoCAD.Runtime.Exception) { return; } string strHandleRIGHT = ""; try { ResultBuffer rb = objProfileView.ObjectId.getXData("BRKRIGHT"); tvs = rb.AsArray(); strHandleRIGHT = tvs[1].Value.ToString(); } catch (Autodesk.AutoCAD.Runtime.Exception) { } string strHandleLEFT = ""; try { ResultBuffer rb = objProfileView.ObjectId.getXData("BRKLEFT"); tvs = rb.AsArray(); strHandleLEFT = tvs[1].Value.ToString(); } catch (Autodesk.AutoCAD.Runtime.Exception) { } Polyline3d Poly3dRIGHT = null; bool boolUpdateRIGHT = false; try { Poly3dRIGHT = (Polyline3d)Base_Tools45.Db.handleToObject(strHandleRIGHT); } catch (Autodesk.AutoCAD.Runtime.Exception) { if ((Poly3dRIGHT == null)) { DialogResult dr = MessageBox.Show("The Breakline for the RIGHT side has been deleted.\n Would you like to select a new Design Reference Breakline for the RIGHT Side?", "", MessageBoxButtons.YesNo); switch (dr) { case DialogResult.Yes: try { strHandleRIGHT = selectBrkLine("RIGHT", objProfileView); if (strHandleRIGHT != string.Empty) { Poly3dRIGHT = (Polyline3d)Base_Tools45.Db.handleToObject(strHandleRIGHT); boolUpdateRIGHT = true; } else { DialogResult dr2 = MessageBox.Show("Selection Failed. Try again?", "", MessageBoxButtons.YesNo); switch (dr2) { case DialogResult.Yes: strHandleRIGHT = selectBrkLine("RIGHT", objProfileView); if (strHandleRIGHT != string.Empty) { Poly3dRIGHT = (Polyline3d)Base_Tools45.Db.handleToObject(strHandleRIGHT); boolUpdateRIGHT = true; } else { return; } break; case DialogResult.No: return; } } } catch (Autodesk.AutoCAD.Runtime.Exception) { } break; case DialogResult.No: return; } } } Polyline3d Poly3dLEFT = null; bool boolUpdateLEFT = false; try { Poly3dLEFT = (Polyline3d)Base_Tools45.Db.handleToObject(strHandleLEFT); } catch (Autodesk.AutoCAD.Runtime.Exception) { if (Poly3dLEFT == null) { DialogResult dr = MessageBox.Show("The Breakline for the LEFT side has been deleted.\n Would you like to select a new Design Reference Breakline for the LEFT Side?", "", MessageBoxButtons.YesNo); switch (dr) { case DialogResult.Yes: try { strHandleLEFT = selectBrkLine("LEFT", objProfileView); if (strHandleLEFT != string.Empty) { Poly3dLEFT = (Polyline3d)Base_Tools45.Db.handleToObject(strHandleLEFT); boolUpdateLEFT = true; } else { DialogResult dr2 = MessageBox.Show("Selection Failed. Try again?", "", MessageBoxButtons.YesNo); switch (dr2) { case DialogResult.Yes: strHandleRIGHT = selectBrkLine("RIGHT", objProfileView); if (strHandleRIGHT != string.Empty) { Poly3dLEFT = (Polyline3d)Base_Tools45.Db.handleToObject(strHandleLEFT); boolUpdateLEFT = true; } else { return; } break; case DialogResult.No: break; } } } catch (Autodesk.AutoCAD.Runtime.Exception) { } break; case DialogResult.No: return; } } } BRKLINE_DESIGN_HANDLE = strHandleRIGHT; BRKLINE_EXIST_HANDLE = strHandleLEFT; Alignment objAlign = null; using (Transaction TR = BaseObjs.startTransactionDb()) { try { objAlign = (Alignment)TR.GetObject(objProfileView.AlignmentId, OpenMode.ForRead); ACTIVEALIGN = objAlign; } catch (Autodesk.AutoCAD.Runtime.Exception) { Autodesk.AutoCAD.ApplicationServices.Application.ShowAlertDialog("Original Alignment is not available. Exiting....."); return; } } List <staOffElev> sOffs = wd.convert3dPolyToPnt_Data(objAlign, ALGNENTDATA, Poly3dRIGHT.ObjectId, "DESIGN"); PNTSDESIGN = new List <PNT_DATA>(); foreach (staOffElev s in sOffs) //convert data to work with existing methods. { PNT_DATA p = new PNT_DATA() { STA = s.staAlign, z = s.elev }; PNTSDESIGN.Add(p); } wdp.CreateProfileByLayout2("BRKRIGHT", objAlign, PNTSDESIGN); if (boolUpdateRIGHT) { tvs = new TypedValue[4] { new TypedValue(1001, "BRKRIGHT"), new TypedValue(1005, Poly3dRIGHT.Handle), new TypedValue(1040, PNTSDESIGN[0].STA), new TypedValue(1040, PNTSDESIGN[PNTSDESIGN.Count - 1].STA) }; objProfileView.ObjectId.setXData(tvs, "BRKRIGHT"); } sOffs = wd.convert3dPolyToPnt_Data(ACTIVEALIGN, ALGNENTDATA, Poly3dLEFT.ObjectId, "EXIST"); PNTSEXIST = new List <PNT_DATA>(); foreach (staOffElev s in sOffs) { PNT_DATA p = new PNT_DATA() { STA = s.staAlign, z = s.elev }; PNTSEXIST.Add(p); } wdp.CreateProfileByLayout2("BRKLEFT", objAlign, PNTSEXIST); if (boolUpdateLEFT) { tvs = new TypedValue[4] { new TypedValue(1001, "BRKLEFT"), new TypedValue(1005, Poly3dLEFT.Handle), new TypedValue(1040, PNTSEXIST[0].STA), new TypedValue(1040, PNTSEXIST[PNTSEXIST.Count - 1].STA) }; objProfileView.ObjectId.setXData(tvs, "BRKLEFT"); } wdl.wallDesignLimits(objProfileView, "WDE"); }