/// <summary>
 /// Initializes a new instance of the <see cref="InViewNumerateData"/> class.
 /// </summary>
 /// <param name="parameter">Параметр</param>
 /// <param name="startValue">Начальное числовое значение</param>
 /// <param name="prefix">Префикс</param>
 /// <param name="suffix">Суффикс</param>
 /// <param name="locationOrder">Направление нумерации по положению элементов</param>
 /// <param name="orderDirection">Направление нумерации (по возрастанию или убыванию)</param>
 public InViewNumerateData(
     ExtParameter parameter,
     string startValue,
     string prefix,
     string suffix,
     LocationOrder locationOrder,
     OrderDirection orderDirection)
     : base(parameter, startValue, prefix, suffix, orderDirection)
 {
     LocationOrder = locationOrder;
 }
        private static List <Element> GetElementsSortedByLocation(
            IEnumerable <Element> elements, LocationOrder locationOrder)
        {
            var sortedElements = new List <Element>();

            var points = new Dictionary <Element, XYZ>();

            // get points
            foreach (var element in elements)
            {
                if (element is Grid grid && grid.Curve is Curve curve)
                {
                    points.Add(element, curve.Evaluate(0.5, true));
                }