-  public void CountBlc() 
-         { 
-             Document doc = Application.DocumentManager.MdiActiveDocument; 
-             Database db = doc.Database; 
-             if (doc == null) return; 
-             Editor ed = doc.Editor; 
-   
-             Stopwatch s = new Stopwatch(); 
-             int cnt = 0; 
-             PromptKeywordOptions pko = new PromptKeywordOptions( 
-                 "\nСпособ выбора блоков? "); 
-             pko.AllowNone = false; 
-             pko.Keywords.Add("Enum"); 
-             pko.Keywords.Add("enumRX"); 
-             pko.Keywords.Add("Selset"); 
-             pko.Keywords.Default = "Selset"; 
-             PromptResult pr = ed.GetKeywords(pko); 
-   
-             if (pr.StringResult == "Selset") 
-             { 
-                 s.Start(); 
-                 LayoutManager layoutMgr = LayoutManager.Current; 
-                 TypedValue[] filterlist = new TypedValue[2];//фильтр 
-                 filterlist[0] = new TypedValue(0, "INSERT");//только блоки 
-                 filterlist[1] = new TypedValue(410, layoutMgr.CurrentLayout);//только в текущем пространстве 
-                 SelectionFilter filter = new SelectionFilter(filterlist); 
-                 PromptSelectionResult psr = ed.SelectAll(filter); 
-   
-                 if (psr.Status == PromptStatus.OK) 
-                 { 
-                     s.Stop(); 
-                     ed.WriteMessage("\nSelSet получен блоков {0} за {1}\n", 
-                                     psr.Value.Count, 
-                                     s.Elapsed 
-                                     ); 
-                     s.Start(); 
-                     SelectionSet set = psr.Value; 
-                     using (Transaction tr = db.TransactionManager.StartTransaction())//открываем транзакцию 
-                     { 
-                         foreach (ObjectId brId in set.GetObjectIds())//перебираем полученные ID блоков 
-                         { 
-                             BlockReference br = tr.GetObject(brId, OpenMode.ForRead) as BlockReference;//получаем вставку блока 
-                             if (br != null) 
-                             { 
-                                 BlockTableRecord btr = tr.GetObject( 
-                                     br.BlockTableRecord, 
-                                     OpenMode.ForRead) as BlockTableRecord;//по вставке получаем описание блока 
-                                 if (!btr.IsFromExternalReference 
-                                     && !btr.IsDependent 
-                                     )//если не внешняя сылка и не зависимый блок, считаем 
-                                 { 
-                                     cnt++; 
-                                 } 
-                             } 
-                         } 
-   
-                         s.Stop(); 
-                         ed.WriteMessage( 
-                                      "\nSelSet Before Commit {0}\n", 
-                                     s.Elapsed 
-                                     ); 
-                         s.Start(); 
-   
-                         tr.Commit(); 
-   
-                         s.Stop(); 
-                         ed.WriteMessage( 
-                                      "\nSelSet After Commit {0}\n", 
-                                     s.Elapsed 
-                                     ); 
-                         s.Start(); 
-                     } 
-                 } 
-   
-                 s.Stop(); 
-                 ed.WriteMessage("\nSelSet блоков {0} за {1}\n", 
-                                 cnt, 
-                                 s.Elapsed 
-                                 ); 
-                 s.Start(); 
-             } 
-             else if (pr.StringResult == "Enum") 
-             { 
-                 s.Start(); 
-                 using (Transaction tr = db.TransactionManager.StartTransaction()) 
-                 { 
-                     ObjectId SpaceId = db.CurrentSpaceId;//ID активного пространства 
-   
-                     BlockTableRecord btrs = tr.GetObject( 
-                                                 SpaceId, 
-                                                 OpenMode.ForRead 
-                                                 ) as BlockTableRecord;//получаем запись BlockTableRecord активного пространства 
-   
-                     foreach (ObjectId brId in btrs)//в активном пространстве перебираем все что в нем находится 
-                     { 
-                         BlockReference br = tr.GetObject(brId, OpenMode.ForRead) as BlockReference;//пытаемся получить вставку блока 
-                         if (br != null) 
-                         { 
-                             BlockTableRecord btr = tr.GetObject( 
-                                 br.BlockTableRecord, 
-                                 OpenMode.ForRead) as BlockTableRecord;//по вставке получаем описание блока 
-                             if (!btr.IsFromExternalReference 
-                                 && !btr.IsDependent 
-                                 )//если не внешняя сылка и не зависимый блок, считаем 
-                             { 
-                                 cnt++; 
-                             } 
-                         } 
-                     } 
-                     s.Stop(); 
-   
-                     ed.WriteMessage( 
-                      "\nEnum Before Commit {0}\n", 
-                     s.Elapsed); 
-   
-                     s.Start(); 
-   
-                     tr.Commit(); 
-   
-                     s.Stop(); 
-   
-                     ed.WriteMessage( 
-                      "\nEnum After Commit {0}\n", 
-                     s.Elapsed); 
-   
-                     s.Start(); 
-                 } 
-                 s.Stop(); 
-                 ed.WriteMessage( 
-                  "\nEnum блоков {0} за {1}\n", 
-                 cnt, 
-                 s.Elapsed 
-                 ); 
-   
-                 s.Start(); 
-             } 
-             else if (pr.StringResult == "enumRX") 
-             { 
-                 s.Start(); 
-                 RXClass dimenClass = RXObject.GetClass(typeof(BlockReference)); 
-                 using (Transaction tr = db.TransactionManager.StartTransaction()) 
-                 { 
-                     ObjectId SpaceId = db.CurrentSpaceId;//ID активного пространства 
-   
-                     BlockTableRecord btrs = tr.GetObject( 
-                                                 SpaceId, 
-                                                 OpenMode.ForRead 
-                                                 ) as BlockTableRecord;//получаем запись BlockTableRecord активного пространства 
-   
-                     foreach (ObjectId brId in btrs)//в активном пространстве перебираем все что в нем находится 
-                     { 
-                         //var objTest = brId.ObjectClass.Name; 
-                         if (!brId.ObjectClass.IsDerivedFrom(dimenClass)) 
-                         { 
-                             continue; 
-                         } 
-   
-   
-                         BlockReference br = tr.GetObject(brId, OpenMode.ForRead) as BlockReference;//пытаемся получить вставку блока 
-                         if (br != null) 
-                         { 
-                             BlockTableRecord btr = tr.GetObject( 
-                                 br.BlockTableRecord, 
-                                 OpenMode.ForRead) as BlockTableRecord;//по вставке получаем описание блока 
-                             if (!btr.IsFromExternalReference 
-                                 && !btr.IsDependent 
-                                 )//если не внешняя сылка и не зависимый блок, считаем 
-                             { 
-                                 cnt++; 
-                             } 
-                         } 
-                     } 
-                     s.Stop(); 
-   
-                     ed.WriteMessage( 
-                      "\nEnumRX Before Commit {0}\n", 
-                     s.Elapsed); 
-   
-                     s.Start(); 
-   
-                     tr.Commit(); 
-   
-                     s.Stop(); 
-   
-                     ed.WriteMessage( 
-                      "\nEnumRX After Commit {0}\n", 
-                     s.Elapsed); 
-   
-                     s.Start(); 
-                 } 
-                 s.Stop(); 
-                 ed.WriteMessage( 
-                  "\nEnumRX блоков {0} за {1}\n", 
-                 cnt, 
-                 s.Elapsed 
-                 ); 
-   
-                 s.Start(); 
-             } 
-             else 
-             { 
-                 ed.WriteMessage("\nОтмена"); 
-                 return; 
-             } 
-   
-             s.Stop(); 
-             ed.WriteMessage( 
-                          "\nBefore Regen {0}\n", 
-                         s.Elapsed 
-                         ); 
-             s.Start(); 
-   
-             ed.Regen(); 
-   
-             s.Stop(); 
-             ed.WriteMessage( 
-                  "\nTotal {0}", 
-                 s.Elapsed 
-                 ); 
-         } 
-