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); }
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); }