Esempio n. 1
0
        getStakedPnts()
        {
            SelectionSet ss = Select.buildSSet(typeof(CogoPoint), false, "Select Cogo Point");

            ObjectId[]       ids        = ss.GetObjectIds();
            List <StakedPnt> stakedPnts = new List <StakedPnt>();

            for (int i = 0; i <= ids.Length; i++)
            {
                ObjectId     idCgPnt = ids[i];
                ResultBuffer rb      = idCgPnt.getXData("STAKE");
                if (rb == null)
                {
                    continue;
                }
                TypedValue[] tvs       = rb.AsArray();
                StakedPnt    stakedPnt = new StakedPnt
                {
                    hCgPnt  = idCgPnt.getHandle(),
                    hAlign  = tvs[1].Value.ToString().stringToHandle(),
                    Station = double.Parse(tvs[2].Value.ToString()),
                    Offset  = double.Parse(tvs[3].Value.ToString()),
                    Elev    = idCgPnt.getCogoPntElevation(),
                    Desc    = idCgPnt.getCogoPntDesc(),
                    Number  = (uint)idCgPnt.getCogoPntNumber()
                };
                stakedPnts.Add(stakedPnt);
            }
            return(stakedPnts);
        }
Esempio n. 2
0
        SelectPntsByAlign()
        {
            bool byAlign = false;

            ObjectIdCollection idsAlign = Align.getAlignmentIDs();
            bool     exists             = false;
            ObjectId idDict             = Dict.getNamedDictionary("STAKE_PNTS", out exists);

            if (!exists)
            {
                return(false);
            }

            List <StakedPnt>         stakedPnts = new List <StakedPnt>();
            List <DBDictionaryEntry> entries    = Dict.getEntries(idDict);

            foreach (DBDictionaryEntry entry in entries)
            {
                if (entry.GetType() == typeof(Xrecord))
                {
                    Xrecord      xRec = Dict.getXRec(idDict, entry);
                    ResultBuffer rb   = xRec.Data;
                    if (rb == null)
                    {
                        continue;
                    }

                    TypedValue[] tvs       = rb.AsArray();
                    StakedPnt    stakedPnt = new StakedPnt
                    {
                        hAlign = tvs[0].Value.ToString().stringToHandle(),
                        Number = uint.Parse(tvs[1].Value.ToString())
                    };
                    stakedPnts.Add(stakedPnt);
                }
            }

            var sortPnts = from p in stakedPnts
                           orderby p.Number ascending
                           group p by p.hAlign
                           into grpAlign
                           orderby grpAlign.Key
                           select grpAlign;

            //List<StakePntSum> stakedPntSum = new List<StakePntSum>();   //align handle and list of points
            List <DataSet> dataSet = new List <DataSet>();

            foreach (var p in sortPnts)
            {
                Handle    hAlign = p.Key;
                Alignment align  = (Alignment)hAlign.getEnt();

                if (align != null)
                {
                    List <uint> nums = new List <uint>();
                    foreach (var n in p)
                    {
                        nums.Add(n.Number);
                    }

                    var sortNums = from a in nums
                                   orderby a ascending
                                   select a;

                    ResultBuffer rb = align.GetXDataForApplication("STAKE");
                    if (rb == null)
                    {
                        continue;
                    }
                    TypedValue[] tvs = rb.AsArray();

                    DataSet dSet = new DataSet
                    {
                        Layer      = tvs[3].Value.ToString(),
                        ObjectName = align.Name,
                        Lower      = (uint)sortNums.Min(),
                        Upper      = (uint)sortNums.Max(),
                        COUNT      = (int)sortNums.Count(),
                        Nums       = nums
                    };
                    dataSet.Add(dSet);
                    byAlign = true;
                }
                else
                {
                    byAlign = false;
                }
            }
            return(byAlign);
        }