Задача была простая - форма с двумя кнопками: 1 - выбирает объекты, 2 - удаляет их.
Скажу сразу, если писать без окон все прекрасно работает, но с формами не получается уже два дня.
Возможно тема пересекается с 
https://adn-cis.org/forum/index.php?topic=9744.msg42859#msg42859.
Смысл ошибки понятен, но где открывать и закрывать транзакцию не понимаю.
Может вообще обработчик событий писать в другом классе? Спасибо.
За код сильно не ругайте:
- using System; 
- using Autodesk.Revit.UI; 
- using Autodesk.Revit.DB; 
- using Autodesk.Revit.UI.Selection; 
- using System.Collections.Generic; 
- using System.Linq; 
-   
- namespace Shcool 
- { 
-     [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)] 
-     [Autodesk.Revit.DB.Macros.AddInId("C84184CD-3C7D-4295-AC04-8C8A8EB02901")] 
-         public partial class ThisApplication 
-         { 
-   
-                 UIDocument uidoc; 
-                 Document doc; 
-   
-                 public void FirstStep() 
-                 { 
-                         uidoc = this.ActiveUIDocument; 
-                         doc = uidoc.Document; 
-              
-                         using(Transaction trans = new Transaction(doc, "DeleteObject")) 
-                                 { 
-                                         trans.Start(); 
-                          
-                                         GoGlamGo goGlamGo = new GoGlamGo(this); 
-                                         goGlamGo.Run(); 
-                          
-                                         trans.Commit(); 
-                                 } 
-                 } 
-         } 
-          
-         public class GoGlamGo 
-         { 
-                 UIDocument uidoc; 
-                 Document doc; 
-                 RVObjecstSelect rVObjectsSelect; 
-                 IList<Reference> rl; 
-                 List<FamilyInstance> filist = new List<FamilyInstance>(); 
-   
-                 public GoGlamGo(Shcool.ThisApplication _this) 
-                         { 
-                                 uidoc = _this.ActiveUIDocument; 
-                                 doc = uidoc.Document; 
-                                 rVObjectsSelect = new RVObjecstSelect(); 
-                                 rVObjectsSelect.btselectobj.Click += (s, a) => GetFIList(); 
-                                 rVObjectsSelect.btdeleteobj.Click += (s, a) => DeleteObj(filist); 
-                         } 
-                  
-                 public void Run() 
-                         { 
-                                 rVObjectsSelect.Show(); 
-                         } 
-                  
-                 public RVObjecstSelect UF 
-                 { 
-                         get {return rVObjectsSelect;} 
-                 } 
-   
-                 public List<FamilyInstance> GetFIList() 
-                 { 
-                         rVObjectsSelect.Hide(); 
-                          
-                         Selection sel = uidoc.Selection; 
-                         rl = sel.PickObjects(ObjectType.Element, "Select elements:"); 
-                          
-                         rVObjectsSelect.Show(); 
-                          
-                         filist = new List<FamilyInstance>(); 
-                                
-                         foreach (Reference rf in rl) 
-                         { 
-                                 filist.Add(doc.GetElement(rf) as FamilyInstance); 
-                         } 
-                          
-                         return filist; 
-                 } 
-                  
-                          
-         private void DeleteObj(List<FamilyInstance> filist) 
-         { 
-                 foreach (FamilyInstance fi in FIList) 
-                 { 
-                         doc.Delete(fi.Id); 
-                 } 
-         } 
-          
-         public List<FamilyInstance> FIList 
-         { 
-                 get 
-                 { 
-                         rVObjectsSelect.Close(); 
-                         return filist; 
-                 } 
-         } 
- } 
- } 
-   
Вот ошибка при удалении...
