コード例 #1
0
 private void defineWindow(BlockReference blRef)
 {
     //if (blRef != null && blRef.DynamicBlockReferencePropertyCollection != null)
     //{
     //   foreach (DynamicBlockReferenceProperty prop in blRef.DynamicBlockReferencePropertyCollection)
     //   {
     //      if (prop.PropertyName.Equals(Settings.Default.BlockWindowVisibilityName, StringComparison.OrdinalIgnoreCase))
     //      {
     //         Mark = prop.Value.ToString();
     //         break;
     //      }
     //   }
     //}
     try
     {
         var split = BlName.Split(new[] { '_' });
         Mark = split.Skip(2).First();
         if (FireBoxMarks.Contains(Mark))
         {
             IsFireBox = true;
         }
     }
     catch
     {
     }
 }
コード例 #2
0
        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());
        }
コード例 #3
0
 public override int GetHashCode()
 {
     return(BlName.GetHashCode());
 }
コード例 #4
0
        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());
        }