-         public static int LetsMadeAnAttributeToSelectedBR(long brHandle, Document doc, string AttrName, string AttrValue) 
-         { 
-             int AttrCreatedCount = 0; 
-             Database acCurDb = doc.Database; 
-             using (DocumentLock acLckDoc = doc.LockDocument()) 
-             { 
-                 using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction()) 
-                 { 
-                     // Open the Block table for write 
-                     BlockTable acBlkTbl; 
-                     acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForWrite) as BlockTable; 
-                     // Open the Block table record Model space for write 
-                     BlockTableRecord acBlkTblRec; 
-                     acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord; 
-                     //BlockReference nbr = acBlkTblRec .geto 
-                     Handle hBlock = new Handle(brHandle); 
-                     ObjectId idBlock; 
-                     BlockReference brBlock = null; 
-                     if (acCurDb.TryGetObjectId(hBlock, out idBlock)) 
-                         brBlock = idBlock.GetObject(OpenMode.ForWrite) as BlockReference; 
-                     // проверяем есть ли блок с таким handle 
-                     if (brBlock == null) 
-                         return 0; 
-                     // получаем атрибуты 
-                     AttributeCollection attrC = null; 
-                     attrC = brBlock.AttributeCollection; 
-                     // проверяем есть ли атрибуты 
-                     if (attrC.Count == 0) 
-                     { 
-                         if (brBlock.IsDynamicBlock) 
-                         { 
-                             AttrCreatedCount += CreateNewAttrDynamicBlock(AttrName, AttrValue, acTrans, acBlkTbl, acBlkTblRec, brBlock); 
-                         } 
-                         else 
-                             AttrCreatedCount += CreateNewAttrSimpleBlock(AttrName, AttrValue, acTrans, acBlkTbl, acBlkTblRec, brBlock); 
-                     } 
-                     else 
-                     { 
-                         // смотрим есть ли такой атрибут 
-                         foreach (ObjectId idAtrRef in attrC) 
-                         { 
-                             // если есть, то меняем значение 
-                             using (var atrRef = idAtrRef.GetObject(OpenMode.ForWrite) as AttributeReference) 
-                             { 
-                                 // если блок динамический то изменяем активные атрибуты 
-                                 if (brBlock.IsDynamicBlock) 
-                                 { 
-                                     if (atrRef != null && atrRef.Visible) 
-                                         if (ComparePrefixWithNumber(AttrName, atrRef.Tag)) 
-                                         { 
-                                             atrRef.TextString = AttrValue; 
-                                             AttrCreatedCount++; 
-                                         } 
-                                 } 
-                                 else 
-                                 // если обычный, то просто изменяем атрибут 
-                                 { 
-                                     if (atrRef != null) 
-                                         if (ComparePrefixWithNumber(AttrName, atrRef.Tag)) 
-                                         { 
-                                             atrRef.TextString = AttrValue; 
-                                             AttrCreatedCount++; 
-                                         } 
-                                 } 
-                             } // using 
-                         } 
-                         // если атрибуты есть, но нет атрибута с таким именем то создаем атрибут 
-                         if (AttrCreatedCount == 0) 
-                         { 
-                             if (brBlock.IsDynamicBlock) 
-                             { 
-                                 // создаем список атрибутов, которые есть у блока и совпадающие с префиксом 
-                                 List<string> AttrNames = new List<string>(); 
-                                 foreach (ObjectId idAtrRef in attrC) 
-                                 { 
-                                     using (var atrRef = idAtrRef.GetObject(OpenMode.ForWrite) as AttributeReference) 
-                                     { 
-                                         if (atrRef != null) 
-                                             if (ComparePrefixWithNumber(AttrName, atrRef.Tag)) 
-                                                 AttrNames.Add(atrRef.TextString); 
-                                     } 
-                                 } 
-                                 // новое имя атрибута 
-                                 string NewAttrName = AttrName; 
-                                 // если атрибуты есть, но не видимые, то добавляем постфикс следующее число 
-                                 if (AttrNames.Count > 0) 
-                                     NewAttrName = AttrName + NextAttrName(AttrNames); 
-                                 // надо создать атрибуты для динамического блока 
-                                 AttrCreatedCount += CreateNewAttrDynamicBlock(NewAttrName, AttrValue, acTrans, acBlkTbl, acBlkTblRec, brBlock); 
-                             } 
-                             else 
-                                 //если блок обычный 
-                                 AttrCreatedCount += CreateNewAttrSimpleBlock(AttrName, AttrValue, acTrans, acBlkTbl, acBlkTblRec, brBlock); 
-                         } 
-                     } 
-                     acTrans.Commit(); 
-                     acTrans.Dispose(); 
-                 } 
-             } 
-             return AttrCreatedCount; 
-         } 
-   
-        private static int CreateNewAttrSimpleBlock(string AttrName, string AttrValue, Transaction acTrans, BlockTable acBlkTbl, BlockTableRecord acBlkTblRec, BlockReference brBlock) 
-         { 
-             int AttrCreatedCount = 0; 
-             // создаем атрибут 
-             using (AttributeDefinition acAttDef = new AttributeDefinition()) 
-             { 
-                 acAttDef.Position = new Point3d(0, 0, 0); 
-                 acAttDef.Invisible = false; 
-                 acAttDef.Visible = true; 
-                 acAttDef.Verifiable = false; 
-                 acAttDef.Prompt = AttrValue; 
-                 acAttDef.Tag = AttrName; 
-                 acAttDef.TextString = AttrValue; 
-                 acAttDef.Height = 5; 
-                 acAttDef.Justify = AttachmentPoint.BottomLeft; 
-                 acBlkTblRec.AppendEntity(acAttDef); 
-                 acBlkTbl.UpgradeOpen(); 
-                 acBlkTbl.Add(acBlkTblRec); 
-                 AttributeReference ar = new AttributeReference(); 
-                 ar.SetAttributeFromBlock(acAttDef, brBlock.BlockTransform); 
-                 brBlock.AttributeCollection.AppendAttribute(ar); 
-                 acTrans.AddNewlyCreatedDBObject(ar, true); 
-                 AttrCreatedCount++; 
-             } 
-             return AttrCreatedCount; 
-         } 
-   
-