getTinVolumeSurface(string nameSurf) { TinVolumeSurface objSurface = null; try { using (Transaction tr = BaseObjs.startTransactionDoc()) { ObjectIdCollection idsSurface = BaseObjs._civDoc.GetSurfaceIds(); foreach (ObjectId idSurface in idsSurface) { Autodesk.Civil.DatabaseServices.Surface surf = (Autodesk.Civil.DatabaseServices.Surface)tr.GetObject(idSurface, OpenMode.ForRead); if (surf is TinVolumeSurface) { Autodesk.Civil.DatabaseServices.TinVolumeSurface objTinSurface = (TinVolumeSurface)surf; if (objTinSurface.Name == nameSurf) { objSurface = objTinSurface; } } } tr.Commit(); } } catch (System.Exception ex) { BaseObjs.writeDebug(string.Format("{0} Surf.cs: line: 189", ex.Message)); } return(objSurface); }
testVolTable(int numSteps = 0, double incre = 0, short clrStart = 100) { TinVolumeSurface objSurfaceVOL = Surf.getTinVolumeSurface("wse"); double minElev = objSurfaceVOL.GetGeneralProperties().MinimumElevation; double maxElev = objSurfaceVOL.GetGeneralProperties().MaximumElevation; if (incre == 0) { incre = (maxElev - minElev) / numSteps; } if (numSteps == 0) { numSteps = (int)((maxElev - minElev) / incre); } SurfaceAnalysisElevationData[] objSurfaceAnalysisElevation = new SurfaceAnalysisElevationData[numSteps]; for (int i = 0; i < numSteps; i++) { Color clr = Color.FromColorIndex(ColorMethod.ByLayer, (short)(clrStart + (i * 2))); objSurfaceAnalysisElevation[i] = new SurfaceAnalysisElevationData(minElev + (incre * i), minElev + (incre * (i + 1)), clr); } objSurfaceVOL.Analysis.SetElevationData(objSurfaceAnalysisElevation); }
updateSpreadsheet(ref double dblVolFill, ref double dblVolCut) { string strPath = BaseObjs.docFullName; string strJN = BaseObjs.jobNumber(); string strFN = string.Format("{0}EW.xlsx", strJN); string strFullPath = strPath + "\\" + strFN; SelectionSet objSSet = EW_Utility1.buildSSet22(); if ((dblVolFill == 0)) { bool exists; ObjectId idSurfaceCUT = Surf.getSurface("VOL_EXIST_BOT", out exists); ObjectId idSurfaceFILL = Surf.getSurface("VOL_BOT_SG", out exists); TinVolumeSurface objSurfaceFILL = (TinVolumeSurface)idSurfaceFILL.getEnt(); TinVolumeSurface objSurfaceCUT = (TinVolumeSurface)idSurfaceCUT.getEnt(); dblVolCut = objSurfaceFILL.GetVolumeProperties().UnadjustedCutVolume / 27; dblVolFill = objSurfaceFILL.GetVolumeProperties().UnadjustedFillVolume / 27; dblVolCut = dblVolCut + objSurfaceCUT.GetVolumeProperties().UnadjustedCutVolume / 27; dblVolFill = dblVolFill + objSurfaceCUT.GetVolumeProperties().UnadjustedFillVolume / 27; } if (spreadSheetExists(strFullPath, dblVolFill, dblVolCut)) { Excel_ext excl = new Excel_ext(true); excl.OpenFile(strFullPath, ""); excl.FindExcelWorksheet("SUMMARY"); Excel._Worksheet objWS = excl.excelWrkSht; objWS.Range["SUMMARY!volCUT"].Value = dblVolCut; objWS.Range["SUMMARY!volFILL"].Value = dblVolFill; //objWS.Range["SUMMARY!AREA_BLDG"].Value = 0; excl.CloseFile(true, strFullPath, false); excl.excelAPP.Quit(); } else { MessageBox.Show("Error copying EW spreadsheet"); } objSSet = EW_Utility1.buildSSet8(); if (objSSet != null && objSSet.Count > 0) { ObjectId[] ids = objSSet.GetObjectIds(); for (int i = 0; i < ids.Length; i++) { ids[i].delete(); } } setupSpreadSheetMS(dblVolFill, dblVolCut); }
makeVolSurface(string strNameBASE, string strNameCOMP, bool boolShowMessage) { string nameSurface = string.Format("VOL_{0}_{1}", strNameBASE, strNameCOMP); List <string> nameSurfaces = Surf.getSurfaces(); for (int i = 0; i < nameSurfaces.Count; i++) { if (nameSurfaces[i] == nameSurface) { Surf.removeSurface(nameSurfaces[i]); } } TinSurface objSurfaceBASE = Surf.getTinSurface(strNameBASE); TinSurface objSurfaceCOMP = Surf.getTinSurface(strNameCOMP); int lngVolCut = 0; int lngVolFill = 0; ObjectId idSurfFill = TinVolumeSurface.Create(nameSurface, objSurfaceBASE.ObjectId, objSurfaceCOMP.ObjectId); SelectionSet objSSetLim = EW_Utility1.buildSSetGradingLim(); ObjectId[] ids = objSSetLim.GetObjectIds(); TinVolumeSurface objSurfaceFILL = null; if (ids != null && ids.Length > 0) { ObjectId idPoly = ids[0]; idPoly.checkIfClosed(); ObjectId idPoly3d = Conv.poly_Poly3d(idPoly, 0, "0"); ObjectId[] idBndrys = { idPoly3d }; objSurfaceFILL = (TinVolumeSurface)idSurfFill.getEnt(); objSurfaceFILL.BoundariesDefinition.AddBoundaries(new ObjectIdCollection(idBndrys), 1.0, Autodesk.Civil.SurfaceBoundaryType.Outer, true); objSurfaceFILL.Rebuild(); idPoly3d.delete(); } else { MessageBox.Show("GRADING LIMIT not found - OUTER BOUNDARY not added."); } lngVolCut = (int)objSurfaceFILL.GetVolumeProperties().UnadjustedCutVolume / 27; lngVolFill = (int)objSurfaceFILL.GetVolumeProperties().UnadjustedFillVolume / 27; if (boolShowMessage == true) { string mess = string.Format("Cut: {0} CY Fill: {1} CY", lngVolCut, lngVolFill); MessageBox.Show(mess); } EW_Main.viewResults("VOL", false); }
updateVolSurface(string strNameBASE, string strNameCOMP) { string nameSurface = string.Format("VOL_{0}_{1}", strNameBASE, strNameCOMP); List <string> nameSurfaces = Surf.getSurfaces(); for (int i = 0; i < nameSurfaces.Count; i++) { if (nameSurfaces[i] == nameSurface) { Surf.removeSurface(nameSurfaces[i]); } } TinSurface objSurfaceBASE = Surf.getTinSurface(strNameBASE); TinSurface objSurfaceCOMP = Surf.getTinSurface(strNameCOMP); TinVolumeSurface.Create(nameSurface, objSurfaceBASE.ObjectId, objSurfaceCOMP.ObjectId); }
public static SurfaceVolumeInfo?GetVolumeInfo(TinVolumeSurface volumeSurface, Polyline border) { if (!border.Closed) { Tools.GetAcadEditor().WriteMessage("\nPolyline not closed"); return(null); } Point3dCollection points = border.GetPoints(); try { return(volumeSurface.GetBoundedVolumes(points)); } catch (System.Exception ex) { Tools.GetAcadEditor().WriteMessage("\n" + ex.Message); return(null); } }
initForm() { TinVolumeSurface objSurfaceTIN = Surf.getTinVolumeSurface("VOL_EXIST_BOT"); dblVOL_EXIST_BOT_CUT = objSurfaceTIN.GetVolumeProperties().UnadjustedCutVolume / 27; dblVOL_EXIST_BOT_FILL = objSurfaceTIN.GetVolumeProperties().UnadjustedFillVolume / 27; objSurfaceTIN = Surf.getTinVolumeSurface("VOL_BOT_SG"); dblVOL_BOT_SG_CUT = objSurfaceTIN.GetVolumeProperties().UnadjustedCutVolume / 27; dblVOL_BOT_SG_FILL = objSurfaceTIN.GetVolumeProperties().UnadjustedFillVolume / 27; TinSurface objSurfaceCPNT = Surf.getTinSurface("CPNT-ON"); TinSurface objSurfaceSG = Surf.getTinSurface("SG"); dblSG_MEAN_ELEV = System.Math.Round(objSurfaceSG.GetGeneralProperties().MeanElevation, 2); dblVOL_CUT_TOT = dblVOL_EXIST_BOT_CUT + dblVOL_BOT_SG_CUT; dblVOL_FILL_TOT = dblVOL_EXIST_BOT_FILL + dblVOL_BOT_SG_FILL; dblVOL_CUT_SHRINK = dblVOL_CUT_TOT * dblSHRINKAGE_FACTOR * -1; dblVOL_CUT_NET = dblVOL_CUT_TOT + dblVOL_CUT_ADJ_NET + dblVOL_CUT_SHRINK; dblVOL_FILL_NET = dblVOL_FILL_TOT + dblVOL_FILL_ADJ_NET; dblVOL_NET = dblVOL_CUT_NET - dblVOL_FILL_NET; dblSITE_ADJUST = dblVOL_NET * 27 / dblAREA_SITE; strDATE = DateTime.Today.ToShortDateString(); strUSER = System.Environment.UserName; EW_Data varDataCurrent = new EW_Data(); varDataCurrent.ITERATION = "C"; varDataCurrent.DATE = strDATE; varDataCurrent.USER = strUSER; varDataCurrent.AREA_SITE = dblAREA_SITE; varDataCurrent.SG_MEAN_ELEV = dblSG_MEAN_ELEV; varDataCurrent.VOL_CUT_TOT = dblVOL_CUT_TOT; varDataCurrent.VOL_FILL_ADJ_NET = dblVOL_CUT_ADJ_NET; varDataCurrent.VOL_CUT_SHRINK = dblVOL_CUT_SHRINK; varDataCurrent.VOL_CUT_NET = dblVOL_CUT_NET; varDataCurrent.VOL_FILL_TOT = dblVOL_FILL_TOT; varDataCurrent.VOL_FILL_ADJ_NET = dblVOL_FILL_ADJ_NET; varDataCurrent.VOL_FILL_NET = dblVOL_FILL_NET; varDataCurrent.VOL_NET = dblVOL_NET; varDataCurrent.SITE_ADJUST = dblSITE_ADJUST; //ObjectId idDictEW = Dict.getNamedDictionary("EARTHWORK", out exists); //idDict.delete(); !!!!!!!!!!!!!!!!!!!!!!!****************************!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ObjectId idDictEW = Dict.getNamedDictionary("EARTHWORK", out exists); if (!exists) { this.Title = "NEW EARTHWORK - COOL!!"; dblSG_MEAN_ELEV0 = dblSG_MEAN_ELEV; this.AdjustSurfaceSG.Text = string.Format("{0:#0.00}", dblSG_MEAN_ELEV - dblSG_MEAN_ELEV0); ewData.Add(varDataCurrent); this.DG1.DataContext = ewData; } else { ewData = getDictData(); if (ewData.Count != 0) { dblSG_MEAN_ELEV0 = ewData[0].SG_MEAN_ELEV; if (dblSG_MEAN_ELEV0 == 0) { dblSG_MEAN_ELEV0 = dblSG_MEAN_ELEV; } this.AdjustSurfaceSG.Text = string.Format("{0:#0.00}", dblSG_MEAN_ELEV - dblSG_MEAN_ELEV0); } else { dblSG_MEAN_ELEV0 = dblSG_MEAN_ELEV; } this.DG1.DataContext = ewData; } }
balanceSite() { double dblSiteAdjust = 0; Point3d pnt3dMove0 = Point3d.Origin; TinSurface objSurfaceSG = Surf.getTinSurface("SG", out exists); TinSurface objSurfaceOX = Surf.getTinSurface("OX", out exists); dblSiteAdjust = double.Parse(this.tboxAdjSurface.Text); varDataCurrent.SITE_ADJUST = dblSiteAdjust; updateDictionary(varDataCurrent); Point3d pnt3dMoveX = new Point3d(0, 0, dblSiteAdjust); Matrix3d mtx3d = Matrix3d.Displacement(pnt3dMoveX - pnt3dMove0); objSurfaceSG.TransformBy(mtx3d); objSurfaceOX.TransformBy(mtx3d); ewtbe.reTest(); ewmsv.updateVolSurface("EXIST", "BOT"); ewmsv.updateVolSurface("BOT", "SG"); // ERROR: Not supported in C#: OnErrorStatement ObjectId idSurfaceCUT = Surf.getSurface("VOL_EXIST_BOT", out exists); if (idSurfaceCUT.IsNull) { ewmsv.updateVolSurface("EXIST", "BOT"); } ObjectId idSurfaceFILL = Surf.getSurface("VOL_BOT_SG", out exists); if (idSurfaceFILL.IsNull) { ewmsv.updateVolSurface("BOT", "SG"); } TinVolumeSurface objSurfaceCUT = (TinVolumeSurface)idSurfaceCUT.getEnt(); dblVOL_EXIST_BOT_CUT = objSurfaceCUT.GetVolumeProperties().UnadjustedCutVolume / 27; dblVOL_EXIST_BOT_FILL = objSurfaceCUT.GetVolumeProperties().UnadjustedFillVolume / 27; TinVolumeSurface objSurfaceFILL = (TinVolumeSurface)idSurfaceFILL.getEnt(); dblVOL_BOT_SG_CUT = objSurfaceFILL.GetVolumeProperties().UnadjustedCutVolume / 27; dblVOL_BOT_SG_FILL = objSurfaceFILL.GetVolumeProperties().UnadjustedFillVolume / 27; dblVOL_CUT_TOT = dblVOL_EXIST_BOT_CUT + dblVOL_BOT_SG_CUT; //Gross Cut put in spreadsheet dblVOL_FILL_TOT = dblVOL_EXIST_BOT_FILL + dblVOL_BOT_SG_FILL; //Gross Fill put in spreadsheet dblVOL_CUT_SHRINK = (dblVOL_CUT_TOT * dblSHRINKAGE_FACTOR * -1); dblVOL_CUT_NET = dblVOL_CUT_ADJ_NET + dblVOL_CUT_TOT + dblVOL_CUT_SHRINK; dblVOL_FILL_NET = dblVOL_FILL_ADJ_NET + dblVOL_FILL_TOT; dblSG_MEAN_ELEV = objSurfaceSG.GetGeneralProperties().MeanElevation; dblVOL_NET = (dblVOL_CUT_NET - dblVOL_FILL_NET); dblSITE_ADJUST = dblVOL_NET * 27 / dblAREA_SITE; this.AdjustSurfaceSG.Text = string.Format("{0:#0.00", dblSG_MEAN_ELEV - dblSG_MEAN_ELEV0); varDataCurrent.ITERATION = "C"; varDataCurrent.DATE = strDATE; varDataCurrent.USER = strUSER; varDataCurrent.AREA_SITE = dblAREA_SITE; varDataCurrent.SG_MEAN_ELEV = dblSG_MEAN_ELEV; varDataCurrent.VOL_CUT_TOT = dblVOL_CUT_TOT; varDataCurrent.VOL_CUT_ADJ_NET = dblVOL_CUT_ADJ_NET; varDataCurrent.VOL_CUT_SHRINK = dblVOL_CUT_SHRINK; varDataCurrent.VOL_CUT_NET = dblVOL_CUT_NET; varDataCurrent.VOL_FILL_TOT = dblVOL_FILL_TOT; varDataCurrent.VOL_FILL_ADJ_NET = dblVOL_FILL_ADJ_NET; varDataCurrent.VOL_FILL_NET = dblVOL_FILL_NET; varDataCurrent.VOL_NET = dblVOL_NET; varDataCurrent.SITE_ADJUST = dblSITE_ADJUST; ewData = getDictData(); ewData.Add(varDataCurrent); this.DG1.DataContext = ewData; return; }
setupSpreadSheetMS(double dblVolCut = 0, double dblVolFill = 0) { bool boolIsOpen = false; if (dblVolFill == 0) { bool exists; ObjectId idSurfaceCUT = Surf.getSurface("VOL_EXIST_BOT", out exists); ObjectId idSurfaceFILL = Surf.getSurface("VOL_BOT_SG", out exists); TinVolumeSurface objSurfaceFILL = (TinVolumeSurface)idSurfaceFILL.getEnt(); TinVolumeSurface objSurfaceCUT = (TinVolumeSurface)idSurfaceCUT.getEnt(); dblVolCut = objSurfaceFILL.GetVolumeProperties().UnadjustedCutVolume / 27; dblVolFill = objSurfaceFILL.GetVolumeProperties().UnadjustedFillVolume / 27; dblVolCut = dblVolCut + objSurfaceCUT.GetVolumeProperties().UnadjustedCutVolume / 27; dblVolFill = dblVolFill + objSurfaceCUT.GetVolumeProperties().UnadjustedFillVolume / 27; } string strPath = BaseObjs.docFullName; string strJN = BaseObjs.jobNumber(); string strFN = string.Format("{0}EW.xlsx", strJN); string strFullPath = strPath + "\\" + strFN; SelectionSet objSSet = EW_Utility1.buildSSet8(); objSSet.eraseSelectedItems(); objSSet = EW_Utility1.buildSSetTable(); Table objTable = (Table)objSSet.GetObjectIds()[0].getEnt(); Point3d varPntIns = objTable.Position; double dblWidth = objTable.Width; double dblHeight = objTable.Height; double dblPntX = varPntIns.X + dblWidth + 10; double dblPntY = varPntIns.Y - 8; string strPntX = System.Math.Round(dblPntX, 2).ToString(); string strPntY = System.Math.Round(dblPntY, 2).ToString(); string strPntIns = string.Format("{0},{1}", strPntX, strPntY); Excel._Application objExcelApp = (Excel._Application)Microsoft.VisualBasic.Interaction.GetObject(null, "Excel.Application"); Excel.Workbook objWB = null; Excel_ext excl = null; if (objExcelApp == null) { excl = new Excel_ext(); objExcelApp = excl.excelAPP; } else { for (int i = 1; i < objExcelApp.Workbooks.Count; i++) { objWB = objExcelApp.Workbooks[i]; if (objWB.Name == strFN) { boolIsOpen = true; break; } } } objExcelApp.Visible = true; if (!boolIsOpen) { if (FileSystem.FileExists(strFullPath)) { objWB = objExcelApp.Workbooks.Open(strFullPath); } else { FileSystem.CopyFile("R:\\TSet\\Template\\EARTHWORK\\0000EW.xlsx", strFullPath); objWB = objExcelApp.Workbooks.Open(strFullPath); string mess = string.Format("{0} not found. A copy of the template has been created in {1}\nExiting...", strFN, strPath); MessageBox.Show(mess); } } Excel.Worksheet objWS = objWB.Worksheets["SUMMARY"]; objWS.Activate(); objWS.Visible = Microsoft.Office.Interop.Excel.XlSheetVisibility.xlSheetVisible; objWS.Range["SUMMARY!volCUT"].Value = dblVolCut; objWS.Range["SUMMARY!volFILL"].Value = dblVolFill; objWS.Range["SUMMARY!JOB_NUMBER"].Value = BaseObjs.docName.Substring(1, 4); objWS.Range["EW_SUMMARY"].Copy(); objExcelApp.Visible = true; BaseObjs._editor.Regen(); BaseObjs._acadDoc.SendStringToExecute(string.Format("_pasteclip {0}\r", strPntIns), true, false, false); objSSet = EW_Utility1.buildSSet8(); Autodesk.AutoCAD.DatabaseServices.Ole2Frame objAcadOle = null; if (objSSet == null || objSSet.Count == 0) { SelectionSet ss = BaseObjs._editor.SelectAll().Value; int k = ss.Count; ObjectId id = ss.GetObjectIds()[k - 1]; using (var tr = BaseObjs.startTransactionDb()) { objAcadOle = (Ole2Frame)tr.GetObject(id, OpenMode.ForWrite); objAcadOle.LockAspect = false; objAcadOle.WcsHeight = dblHeight; objAcadOle.WcsWidth = dblHeight / 2; objAcadOle.Layer = "ZZ_ZZ-SPREADSHEET"; tr.Commit(); } } else { using (var tr = BaseObjs.startTransactionDb()){ objAcadOle = (Ole2Frame)tr.GetObject(objSSet.GetObjectIds()[0], OpenMode.ForWrite); objAcadOle.LockAspect = false; objAcadOle.WcsHeight = dblHeight; objAcadOle.WcsWidth = dblHeight / 2; objAcadOle.Layer = "ZZ_ZZ-SPREADSHEET"; } } BaseObjs.acadActivate(); }