Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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;
            }
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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;
            }
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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");
        }