예제 #1
0
        /// <summary>
        /// Поиск квартир в чертеже.
        /// </summary>
        public static List <RevitBlock> GetChilds(ObjectId idBtr, string patternBlockNameMatch)
        {
            List <RevitBlock> places = new List <RevitBlock>();

            using (var btrParent = idBtr.Open(OpenMode.ForRead) as BlockTableRecord)
            {
                foreach (ObjectId idEnt in btrParent)
                {
                    using (var blRefChild = idEnt.Open(OpenMode.ForRead, false, true) as BlockReference)
                    {
                        if (blRefChild != null)
                        {
                            string blName = blRefChild.GetEffectiveName();
                            if (IsRevitBlockName(blName, patternBlockNameMatch))
                            {
                                try
                                {
                                    var place = new RevitBlock(blRefChild, blName);
                                    places.Add(place);
                                }
                                catch (System.Exception ex)
                                {
                                    Inspector.AddError($"Ошибка считывания блока квартиры {blName} - {ex.Message}.",
                                                       blRefChild, icon: SystemIcons.Error);
                                }
                            }
                            else
                            {
                                Inspector.AddError($"Отфильтрован блок квартиры '{blName}', имя не соответствует " +
                                                   $"'{Options.Instance.BlockApartmentNameMatch}",
                                                   blRefChild, icon: SystemIcons.Information);
                            }
                        }
                    }
                }
            }
            return(places);
        }
예제 #2
0
 /// <summary>
 /// Поиск квартир в чертеже.
 /// </summary>      
 public static List<RevitBlock> GetChilds(ObjectId idBtr, string patternBlockNameMatch)
 {
     List<RevitBlock> places = new List<RevitBlock>();
      using (var btrParent = idBtr.Open(OpenMode.ForRead) as BlockTableRecord)
      {
     foreach (ObjectId idEnt in btrParent)
     {
        using (var blRefChild = idEnt.Open(OpenMode.ForRead, false, true) as BlockReference)
        {
           if (blRefChild != null)
           {
              string blName = blRefChild.GetEffectiveName();
              if (IsRevitBlockName(blName, patternBlockNameMatch))
              {
                 try
                 {
                    var place = new RevitBlock(blRefChild, blName);
                    places.Add(place);
                 }
                 catch (System.Exception ex)
                 {
                    Inspector.AddError($"Ошибка считывания блока квартиры {blName} - {ex.Message}.",
                       blRefChild, icon: SystemIcons.Error);
                 }
              }
              else
              {
                 Inspector.AddError($"Отфильтрован блок квартиры '{blName}', имя не соответствует " +
                    $"'{Options.Instance.BlockApartmentNameMatch}",
                    blRefChild, icon: SystemIcons.Information);
              }
           }
        }
     }
      }
      return places;
 }