public override Result ParseBlName()
        {
            var ending = BlName.Substring(Settings.Default.BlockPanelSectionHorizontalPrefixName.Length);

            if (string.IsNullOrEmpty(ending))
            {
                //IsSimple = true;
                return(Result.Ok());
            }
            var options = ending.Split('_');

            foreach (var opt in options)
            {
                if (string.IsNullOrWhiteSpace(opt))
                {
                    continue;
                }
                // Кол слоев в панели (1 или 3 слойная стеновая панель)
                if (opt.StartsWith("сл", StringComparison.OrdinalIgnoreCase))
                {
                    int n;
                    if (int.TryParse(opt.Substring("сл".Length), out n))
                    {
                        NLayerPanel = n;
                    }
                    else
                    {
                        Inspector.AddError($"В блоке сечения {BlName} не определено количество слоев по префиксу 'сл'",
                                           icon: System.Drawing.SystemIcons.Error);
                    }
                }
                // Торец слева (Cheek)
                else if (opt.Equals("тл", StringComparison.OrdinalIgnoreCase))
                {
                    IsCheekLeft = true;
                }
                // Торец справа (Cheek)
                else if (opt.Equals("тп", StringComparison.OrdinalIgnoreCase))
                {
                    IsCheekRight = true;
                }
                // Примыкание справа (Outside)
                else if (opt.Equals("пп", StringComparison.OrdinalIgnoreCase))
                {
                    IsOutsideRight = true;
                }
                // Примыкание слева (Outside)
                else if (opt.Equals("пл", StringComparison.OrdinalIgnoreCase))
                {
                    IsOutsideLeft = true;
                }
            }
            return(Result.Ok());
        }
        public override Result ParseBlName()
        {
            var ending = BlName.Substring(Settings.Default.BlockPanelSectionVerticalPrefixName.Length);

            if (string.IsNullOrEmpty(ending))
            {
                return(Result.Ok());
                //return Result.Fail("В имени блока не найдены параметры высоты и наличия окна");
            }
            var options = ending.Split('_');

            foreach (var opt in options)
            {
                if (string.IsNullOrWhiteSpace(opt))
                {
                    continue;
                }
                // Кол слоев панели 1-слойная(бетон), 3-слойная(несущий, утеплитель, внешний)
                if (opt.StartsWith("сл", StringComparison.OrdinalIgnoreCase))
                {
                    int n;
                    if (int.TryParse(opt.Substring("сл".Length), out n))
                    {
                        NLayerPanel = n;
                    }
                    else
                    {
                        Inspector.AddError($"В блоке сечения {BlName} не определено количество слоев по префиксу 'сл'",
                                           icon: System.Drawing.SystemIcons.Error);
                    }
                }
                // Высота сечения
                else if (opt.StartsWith("h", StringComparison.OrdinalIgnoreCase))
                {
                    int h;
                    if (int.TryParse(opt.Substring(1), out h))
                    {
                        Height = h;
                    }
                    else
                    {
                        Inspector.AddError($"В блоке сечения {BlName} не определена высота сечения по префиксу 'h'",
                                           icon: System.Drawing.SystemIcons.Error);
                    }
                }
                // Наличие окна в сечении
                else if (opt.Equals("w", StringComparison.OrdinalIgnoreCase))
                {
                    Window = true;
                }
                // Сечение для чердачной панели
                else if (opt.Equals("ч", StringComparison.OrdinalIgnoreCase))
                {
                    IsUpperStoreyPanel = true;
                }
                // Сечение для ОЛ панели
                else if (opt.Equals("ол", StringComparison.OrdinalIgnoreCase))
                {
                    IsOL = true;
                }
            }
            return(checkParamVerticalSec());
        }