Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        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);
            }
        }
Exemple #7
0
        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;
            }
        }
Exemple #8
0
        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;
        }
Exemple #9
0
        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();
        }