- using Autodesk.AutoCAD.ApplicationServices; 
- using Autodesk.AutoCAD.DatabaseServices; 
-   
- namespace ClassLibrary2 
- { 
-     public class Class1 
-     { 
-         public void Initialize() 
-         { 
-             Application.DocumentManager.DocumentCreated += DocumentManager_DocumentCreated; 
-         } 
-   
-         private void DocumentManager_DocumentCreated(object sender, DocumentCollectionEventArgs e) 
-         { 
-             // Чтение данных из расширенных данных чертежа 
-             // код не привожу, т.к. для вопроса не важен 
-             if (!MpCadHelpers.HasXDataDictionary("MP_LayerToEnt")) 
-                 return; 
-             if (MpCadHelpers.GetStringXData("MP_LayerToEnt").Equals("ON")) 
-             { 
-                 MpLayerAutoFunctions.LayerAutoIsEventOn = true; 
-                 this.On(); 
-             } 
-             else 
-             { 
-                 MpLayerAutoFunctions.LayerAutoIsEventOn = false; 
-                 this.Off(); 
-             } 
-         } 
-   
-         // Коллекция ObjectId 
-         public ObjectIdCollection ObjCol; 
-         // Переменная служит для определения включена ли работа функции 
-         public static bool LayerAutoIsEventOn; 
-   
-         public void On() 
-         { 
-             // Создаем новую коллекцию ObjectId 
-             ObjCol = new ObjectIdCollection(); 
-             //  
-             LayerAutoIsEventOn = true; 
-             // Включаем обработчики событий 
-             Application.DocumentManager.MdiActiveDocument.Database.ObjectAppended += CallBack_ObjectAppended; 
-             Application.DocumentManager.MdiActiveDocument.CommandEnded += CallBack_CommandEnded; 
-             Application.DocumentManager.MdiActiveDocument.CommandCancelled += CallBack_CommandEnded; 
-             Application.DocumentManager.MdiActiveDocument.CommandFailed += MdiActiveDocument_CommandFailed; 
-             Application.DocumentManager.DocumentActivated += DocumentManager_DocumentActivated; 
-         } 
-         private void DocumentManager_DocumentActivated(object sender, DocumentCollectionEventArgs e) 
-         { 
-             // Очищаем список 
-             ObjCol?.Clear(); 
-             // В переменную записывается значение из расширенных данных чертежа 
-             // код не привожу, т.к. он не важен (в случае отсутсвия данных возвращает false) 
-             LayerAutoIsEventOn = MpCadHelpers.GetStringXData("MP_LayerToEnt").Equals("ON"); 
-         } 
-         // Отключение работы функции 
-         public void Off() 
-         { 
-             // "Обнуляем" переменные 
-             ObjCol = null; 
-             LayerAutoIsEventOn = false; 
-             // Отключаем обработчики событий 
-             Application.DocumentManager.MdiActiveDocument.Database.ObjectAppended -= CallBack_ObjectAppended; 
-             Application.DocumentManager.MdiActiveDocument.CommandEnded -= CallBack_CommandEnded; 
-             Application.DocumentManager.MdiActiveDocument.CommandCancelled -= CallBack_CommandEnded; 
-             Application.DocumentManager.MdiActiveDocument.CommandFailed -= MdiActiveDocument_CommandFailed; 
-             Application.DocumentManager.DocumentActivated -= DocumentManager_DocumentActivated; 
-         } 
-         private void CallBack_CommandEnded(object sender, CommandEventArgs e) 
-         { 
-             if (!LayerAutoIsEventOn) 
-                 return; 
-             // Дальше код программы. Для вопроса не важен 
-         } 
-         // Команда завершилась неудачно 
-         private void MdiActiveDocument_CommandFailed(object sender, CommandEventArgs e) 
-         { 
-             // Очищаем список 
-             ObjCol?.Clear(); 
-         } 
-         // Обработка события добавления объекта в БД чертежа 
-         private void CallBack_ObjectAppended(object sender, ObjectEventArgs e) 
-         { 
-             if (!LayerAutoIsEventOn) 
-                 return; 
-             // Дальше код программы. Для вопроса не важен 
-         } 
-     } 
- }