Example #1
0
        static List <ElevationBox> BuildElevationBoxesFrom(
            Transaction transaction,
            List <ObjectId> boxes,
            List <ObjectId> labels)
        {
            var elevationBoxes = new List <ElevationBox>();

            foreach (var box in boxes)
            {
                var polyline = transaction.GetObject(box, OpenMode.ForRead) as Polyline;
                foreach (var label in labels)
                {
                    var mtext = transaction.GetObject(label, OpenMode.ForRead) as MText;
                    if (mtext == null)
                    {
                        continue;
                    }

                    for (int i = 0; i < polyline.NumberOfVertices; i++)
                    {
                        if (PointExtensions.IsNear(mtext.Location, polyline.GetPoint3dAt(i)) &&
                            !elevationBoxes.Exists(b => b.Id == polyline.Id))
                        {
                            var match = Regex.Match(
                                mtext.Text,
                                @"Elevation (\d+)",
                                RegexOptions.IgnoreCase);

                            if (!match.Success)
                            {
                                continue;
                            }

                            int elevation = int.Parse(match.Groups[1].Value);

                            var b = new ElevationBox(polyline)
                            {
                                Id        = polyline.Id,
                                Elevation = elevation
                            };

                            b.SetSides(polyline);
                            elevationBoxes.Add(b);

                            continue;
                        }
                    }
                }
            }

            return(elevationBoxes);
        }