Пример #1
0
        getDesignPoints(ObjectId idAlign, ref List <POI> varPOI, string strSide)
        {
            List <POI> varPOI_PNTs = new List <POI>();
            POI        vPOI_PNT    = default(POI);

            vPOI_PNT       = new POI();
            vPOI_PNT.Desc0 = "NOTHING";
            varPOI_PNTs.Add(vPOI_PNT);

            double dblStation = 0;
            double dblOffset  = 0;

            double dblToleranceLength = 0;

            short i = 0;
            short k = 0;

            bool boolAdd = false;

            CogoPointCollection objCogoPnts = BaseObjs._civDoc.CogoPoints;

            k = -1;

            foreach (ObjectId idCogoPnt in objCogoPnts)
            {
                CogoPoint objCogoPnt = (CogoPoint)idCogoPnt.getEnt();

                boolAdd = false;

                try {
                    try {
                        idAlign.getAlignStaOffset(objCogoPnt.Location, ref dblStation, ref dblOffset);
                    }
                    catch (Autodesk.Civil.PointNotOnEntityException) {
                        dblStation = 0.0;
                    }

                    if (strSide == "LEFT")
                    {
                        if (dblOffset > dblToleranceLength * -1 & dblOffset < 0)
                        {
                            boolAdd = true;
                        }
                    }
                    else if (strSide == "RIGHT")
                    {
                        if (dblOffset > 0 & dblOffset < dblToleranceLength)
                        {
                            boolAdd = true;
                        }
                    }
                    else if (strSide == "BOTH")
                    {
                        if (System.Math.Abs(dblOffset) < dblToleranceLength)
                        {
                            boolAdd = true;
                        }
                    }
                }
                catch (Autodesk.AutoCAD.Runtime.Exception ex) {
                    boolAdd = false;
                    Debug.Print(ex.ToString());
                }

                if (boolAdd == true)
                {
                    vPOI_PNT           = new POI();
                    vPOI_PNT.Station   = Base_Tools45.Math.roundDown3(dblStation);
                    vPOI_PNT.PntNum    = objCogoPnt.PointNumber.ToString();
                    vPOI_PNT.Elevation = System.Math.Round(objCogoPnt.Elevation, 3);

                    try {
                        idAlign.getAlignStaOffset(objCogoPnt.Location, ref dblStation, ref dblOffset);
                    }
                    catch (Autodesk.Civil.PointNotOnEntityException) {
                        dblStation = 0.0;
                    }

                    vPOI_PNT.OFFSET    = System.Math.Round(dblOffset, 2);
                    vPOI_PNT.Desc0     = string.Format("{0} {1}", varPOI_PNTs[k].OFFSET, varPOI_PNTs[k].Elevation);
                    vPOI_PNT.PntSource = "GCAL";

                    varPOI_PNTs.Add(vPOI_PNT);
                }

                objCogoPnt.Dispose();
            }

            dynamic stations = from data in varPOI_PNTs
                               orderby data.Station
                               select data;
            List <POI> p = new List <POI>();

            foreach (var d in stations)
            {
                p.Add(d);
            }
            varPOI_PNTs = p;

            Misc.removeDuplicatePoints(ref varPOI_PNTs);

            if (varPOI_PNTs.Count > 0)
            {
                for (i = 0; i < varPOI_PNTs.Count; i++)
                {
                    varPOI.Add(varPOI_PNTs[i]);
                }
            }

            dynamic staPOI = from data in varPOI
                             orderby data.Station
                             select data;

            p = new List <POI>();
            foreach (var d in staPOI)
            {
                p.Add(d);
            }

            if (varPOI.Count > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }