AutoCAD .NET Addin Wizard (AcadNetAddinWizard) provides kinds of Event Handler Wizards to help automatically and intelligently generate start code of even handlers and register them in an chosen application extension or command method or both.
AutoCAD .NET Database Events Wizard is one of them. After a source file name is given and the Add button pressed, the event wizard Welcome page, Event Chosen page, Naming Convention and Application-Extension/Command-Method Setting page, and Summary page will show up one after another.
If all events are chosen and other settings are like above, the even handler class will look like this:
using System;
using System.Text;
using System.Linq;
using System.Xml;
using System.Reflection;
using System.ComponentModel;
using System.Collections;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Media.Imaging;
using System.Windows.Forms;
using System.IO;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.Windows;
using AcadApplication = Autodesk.AutoCAD.ApplicationServices.Application;
using AcadDocument = Autodesk.AutoCAD.ApplicationServices.Document;
using AcadWindows = Autodesk.AutoCAD.Windows;
namespace AcadNetAddinByVS2010
{
public class DbEvents1
{
public static void DbEvent_AbortDxfIn_Handler(object sender, EventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("AbortDxfIn");
}
public static void DbEvent_AbortDxfOut_Handler(object sender, EventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("AbortDxfOut");
}
public static void DbEvent_AbortSave_Handler(object sender, EventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("AbortSave");
}
public static void DbEvent_BeginDeepClone_Handler(object sender, IdMappingEventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("BeginDeepClone");
}
public static void DbEvent_BeginDeepCloneTranslation_Handler(object sender, IdMappingEventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("BeginDeepCloneTranslation");
}
public static void DbEvent_BeginDxfIn_Handler(object sender, EventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("BeginDxfIn");
}
public static void DbEvent_BeginDxfOut_Handler(object sender, EventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("BeginDxfOut");
}
public static void DbEvent_BeginInsert_Handler(object sender, BeginInsertEventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("BeginInsert");
}
public static void DbEvent_BeginSave_Handler(object sender, DatabaseIOEventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("BeginSave");
}
public static void DbEvent_BeginWblockBlock_Handler(object sender, BeginWblockBlockEventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("BeginWblockBlock");
}
public static void DbEvent_BeginWblockEntireDatabase_Handler(object sender, BeginWblockEntireDatabaseEventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("BeginWblockEntireDatabase");
}
public static void DbEvent_BeginWblockObjects_Handler(object sender, BeginWblockObjectsEventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("BeginWblockObjects");
}
public static void DbEvent_BeginWblockSelectedObjects_Handler(object sender, BeginWblockSelectedObjectsEventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("BeginWblockSelectedObjects");
}
public static void DbEvent_DatabaseConstructed_Handler(object sender, EventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("DatabaseConstructed");
}
public static void DbEvent_DatabaseToBeDestroyed_Handler(object sender, EventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("DatabaseToBeDestroyed");
}
public static void DbEvent_DeepCloneAborted_Handler(object sender, EventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("DeepCloneAborted");
}
public static void DbEvent_DeepCloneEnded_Handler(object sender, EventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("DeepCloneEnded");
}
public static void DbEvent_Disposed_Handler(object sender, EventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("Disposed");
}
public static void DbEvent_DwgFileOpened_Handler(object sender, DatabaseIOEventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("DwgFileOpened");
}
public static void DbEvent_DxfInComplete_Handler(object sender, EventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("DxfInComplete");
}
public static void DbEvent_DxfOutComplete_Handler(object sender, EventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("DxfOutComplete");
}
public static void DbEvent_InitialDwgFileOpenComplete_Handler(object sender, EventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("InitialDwgFileOpenComplete");
}
public static void DbEvent_InsertAborted_Handler(object sender, EventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("InsertAborted");
}
public static void DbEvent_InsertEnded_Handler(object sender, EventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("InsertEnded");
}
public static void DbEvent_InsertMappingAvailable_Handler(object sender, IdMappingEventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("InsertMappingAvailable");
}
public static void DbEvent_ObjectAppended_Handler(object sender, ObjectEventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("ObjectAppended");
}
public static void DbEvent_ObjectErased_Handler(object sender, ObjectErasedEventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("ObjectErased");
}
public static void DbEvent_ObjectModified_Handler(object sender, ObjectEventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("ObjectModified");
}
public static void DbEvent_ObjectOpenedForModify_Handler(object sender, ObjectEventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("ObjectOpenedForModify");
}
public static void DbEvent_ObjectReappended_Handler(object sender, ObjectEventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("ObjectReappended");
}
public static void DbEvent_ObjectUnappended_Handler(object sender, ObjectEventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("ObjectUnappended");
}
public static void DbEvent_PartialOpenNotice_Handler(object sender, EventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("PartialOpenNotice");
}
public static void DbEvent_ProxyResurrectionCompleted_Handler(object sender, ProxyResurrectionCompletedEventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("ProxyResurrectionCompleted");
}
public static void DbEvent_SaveComplete_Handler(object sender, DatabaseIOEventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("SaveComplete");
}
public static void DbEvent_SystemVariableChanged_Handler(object sender, Autodesk.AutoCAD.DatabaseServices.SystemVariableChangedEventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("SystemVariableChanged");
}
public static void DbEvent_SystemVariableWillChange_Handler(object sender, Autodesk.AutoCAD.DatabaseServices.SystemVariableChangingEventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("SystemVariableWillChange");
}
public static void DbEvent_WblockAborted_Handler(object sender, EventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("WblockAborted");
}
public static void DbEvent_WblockEnded_Handler(object sender, EventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("WblockEnded");
}
public static void DbEvent_WblockMappingAvailable_Handler(object sender, IdMappingEventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("WblockMappingAvailable");
}
public static void DbEvent_WblockNotice_Handler(object sender, WblockNoticeEventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("WblockNotice");
}
public static void DbEvent_XrefAttachAborted_Handler(object sender, EventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("XrefAttachAborted");
}
public static void DbEvent_XrefAttachEnded_Handler(object sender, EventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("XrefAttachEnded");
}
public static void DbEvent_XrefBeginAttached_Handler(object sender, XrefBeginOperationEventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("XrefBeginAttached");
}
public static void DbEvent_XrefBeginOtherAttached_Handler(object sender, XrefBeginOperationEventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("XrefBeginOtherAttached");
}
public static void DbEvent_XrefBeginRestore_Handler(object sender, XrefBeginOperationEventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("XrefBeginRestore");
}
public static void DbEvent_XrefComandeered_Handler(object sender, XrefComandeeredEventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("XrefComandeered");
}
public static void DbEvent_XrefPreXrefLockFile_Handler(object sender, XrefPreXrefLockFileEventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("XrefPreXrefLockFile");
}
public static void DbEvent_XrefRedirected_Handler(object sender, XrefRedirectedEventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("XrefRedirected");
}
public static void DbEvent_XrefRestoreAborted_Handler(object sender, EventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("XrefRestoreAborted");
}
public static void DbEvent_XrefRestoreEnded_Handler(object sender, EventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("XrefRestoreEnded");
}
public static void DbEvent_XrefSubCommandAborted_Handler(object sender, XrefSubCommandEventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("XrefSubCommandAborted");
}
public static void DbEvent_XrefSubCommandStart_Handler(object sender, XrefVetoableSubCommandEventArgs e)
{
AcadApplication.DocumentManager.GetDocument(sender as Database).Editor.WriteMessage("XrefSubCommandStart");
}
public DbEvents1()
{
SubscribeForApplication();
AcadApplication.DocumentManager.DocumentCreated += new DocumentCollectionEventHandler(DocumentManager_DocumentCreated);
}
public static void SubscribeForApplication()
{
IEnumerator enumerator = AcadApplication.DocumentManager.GetEnumerator();
while (enumerator.MoveNext())
{
SubscribeToDb((enumerator.Current as Document).Database);
}
}
public static void UnsubscribeForApplication()
{
IEnumerator enumerator = AcadApplication.DocumentManager.GetEnumerator();
while (enumerator.MoveNext())
{
SubscribeToDb((enumerator.Current as Document).Database);
}
}
public static void SubscribeToDb(Database db)
{
db.AbortDxfIn += DbEvent_AbortDxfIn_Handler;
db.AbortDxfOut += DbEvent_AbortDxfOut_Handler;
db.AbortSave += DbEvent_AbortSave_Handler;
db.BeginDeepClone += DbEvent_BeginDeepClone_Handler;
db.BeginDeepCloneTranslation += DbEvent_BeginDeepCloneTranslation_Handler;
db.BeginDxfIn += DbEvent_BeginDxfIn_Handler;
db.BeginDxfOut += DbEvent_BeginDxfOut_Handler;
db.BeginInsert += DbEvent_BeginInsert_Handler;
db.BeginSave += DbEvent_BeginSave_Handler;
db.BeginWblockBlock += DbEvent_BeginWblockBlock_Handler;
db.BeginWblockEntireDatabase += DbEvent_BeginWblockEntireDatabase_Handler;
db.BeginWblockObjects += DbEvent_BeginWblockObjects_Handler;
db.BeginWblockSelectedObjects += DbEvent_BeginWblockSelectedObjects_Handler;
//db.DatabaseConstructed += DbEvent_DatabaseConstructed_Handler;
Database.DatabaseConstructed += DbEvent_DatabaseConstructed_Handler;
db.DatabaseToBeDestroyed += DbEvent_DatabaseToBeDestroyed_Handler;
db.DeepCloneAborted += DbEvent_DeepCloneAborted_Handler;
db.DeepCloneEnded += DbEvent_DeepCloneEnded_Handler;
db.Disposed += DbEvent_Disposed_Handler;
db.DwgFileOpened += DbEvent_DwgFileOpened_Handler;
db.DxfInComplete += DbEvent_DxfInComplete_Handler;
db.DxfOutComplete += DbEvent_DxfOutComplete_Handler;
db.InitialDwgFileOpenComplete += DbEvent_InitialDwgFileOpenComplete_Handler;
db.InsertAborted += DbEvent_InsertAborted_Handler;
db.InsertEnded += DbEvent_InsertEnded_Handler;
db.InsertMappingAvailable += DbEvent_InsertMappingAvailable_Handler;
db.ObjectAppended += DbEvent_ObjectAppended_Handler;
db.ObjectErased += DbEvent_ObjectErased_Handler;
db.ObjectModified += DbEvent_ObjectModified_Handler;
db.ObjectOpenedForModify += DbEvent_ObjectOpenedForModify_Handler;
db.ObjectReappended += DbEvent_ObjectReappended_Handler;
db.ObjectUnappended += DbEvent_ObjectUnappended_Handler;
db.PartialOpenNotice += DbEvent_PartialOpenNotice_Handler;
db.ProxyResurrectionCompleted += DbEvent_ProxyResurrectionCompleted_Handler;
db.SaveComplete += DbEvent_SaveComplete_Handler;
db.SystemVariableChanged += DbEvent_SystemVariableChanged_Handler;
db.SystemVariableWillChange += DbEvent_SystemVariableWillChange_Handler;
db.WblockAborted += DbEvent_WblockAborted_Handler;
db.WblockEnded += DbEvent_WblockEnded_Handler;
db.WblockMappingAvailable += DbEvent_WblockMappingAvailable_Handler;
db.WblockNotice += DbEvent_WblockNotice_Handler;
//db.XrefAttachAborted += DbEvent_XrefAttachAborted_Handler;
Database.XrefAttachAborted += DbEvent_XrefAttachAborted_Handler;
db.XrefAttachEnded += DbEvent_XrefAttachEnded_Handler;
db.XrefBeginAttached += DbEvent_XrefBeginAttached_Handler;
db.XrefBeginOtherAttached += DbEvent_XrefBeginOtherAttached_Handler;
db.XrefBeginRestore += DbEvent_XrefBeginRestore_Handler;
db.XrefComandeered += DbEvent_XrefComandeered_Handler;
db.XrefPreXrefLockFile += DbEvent_XrefPreXrefLockFile_Handler;
db.XrefRedirected += DbEvent_XrefRedirected_Handler;
db.XrefRestoreAborted += DbEvent_XrefRestoreAborted_Handler;
db.XrefRestoreEnded += DbEvent_XrefRestoreEnded_Handler;
db.XrefSubCommandAborted += DbEvent_XrefSubCommandAborted_Handler;
db.XrefSubCommandStart += DbEvent_XrefSubCommandStart_Handler;
}
public static void UnsubscribeFromDb(Database db)
{
db.AbortDxfIn -= DbEvent_AbortDxfIn_Handler;
db.AbortDxfOut -= DbEvent_AbortDxfOut_Handler;
db.AbortSave -= DbEvent_AbortSave_Handler;
db.BeginDeepClone -= DbEvent_BeginDeepClone_Handler;
db.BeginDeepCloneTranslation -= DbEvent_BeginDeepCloneTranslation_Handler;
db.BeginDxfIn -= DbEvent_BeginDxfIn_Handler;
db.BeginDxfOut -= DbEvent_BeginDxfOut_Handler;
db.BeginInsert -= DbEvent_BeginInsert_Handler;
db.BeginSave -= DbEvent_BeginSave_Handler;
db.BeginWblockBlock -= DbEvent_BeginWblockBlock_Handler;
db.BeginWblockEntireDatabase -= DbEvent_BeginWblockEntireDatabase_Handler;
db.BeginWblockObjects -= DbEvent_BeginWblockObjects_Handler;
db.BeginWblockSelectedObjects -= DbEvent_BeginWblockSelectedObjects_Handler;
//db.DatabaseConstructed -= DbEvent_DatabaseConstructed_Handler;
Database.DatabaseConstructed -= DbEvent_DatabaseConstructed_Handler;
db.DatabaseToBeDestroyed -= DbEvent_DatabaseToBeDestroyed_Handler;
db.DeepCloneAborted -= DbEvent_DeepCloneAborted_Handler;
db.DeepCloneEnded -= DbEvent_DeepCloneEnded_Handler;
db.Disposed -= DbEvent_Disposed_Handler;
db.DwgFileOpened -= DbEvent_DwgFileOpened_Handler;
db.DxfInComplete -= DbEvent_DxfInComplete_Handler;
db.DxfOutComplete -= DbEvent_DxfOutComplete_Handler;
db.InitialDwgFileOpenComplete -= DbEvent_InitialDwgFileOpenComplete_Handler;
db.InsertAborted -= DbEvent_InsertAborted_Handler;
db.InsertEnded -= DbEvent_InsertEnded_Handler;
db.InsertMappingAvailable -= DbEvent_InsertMappingAvailable_Handler;
db.ObjectAppended -= DbEvent_ObjectAppended_Handler;
db.ObjectErased -= DbEvent_ObjectErased_Handler;
db.ObjectModified -= DbEvent_ObjectModified_Handler;
db.ObjectOpenedForModify -= DbEvent_ObjectOpenedForModify_Handler;
db.ObjectReappended -= DbEvent_ObjectReappended_Handler;
db.ObjectUnappended -= DbEvent_ObjectUnappended_Handler;
db.PartialOpenNotice -= DbEvent_PartialOpenNotice_Handler;
db.ProxyResurrectionCompleted -= DbEvent_ProxyResurrectionCompleted_Handler;
db.SaveComplete -= DbEvent_SaveComplete_Handler;
db.SystemVariableChanged -= DbEvent_SystemVariableChanged_Handler;
db.SystemVariableWillChange -= DbEvent_SystemVariableWillChange_Handler;
db.WblockAborted -= DbEvent_WblockAborted_Handler;
db.WblockEnded -= DbEvent_WblockEnded_Handler;
db.WblockMappingAvailable -= DbEvent_WblockMappingAvailable_Handler;
db.WblockNotice -= DbEvent_WblockNotice_Handler;
//db.XrefAttachAborted -= DbEvent_XrefAttachAborted_Handler;
Database.XrefAttachAborted -= DbEvent_XrefAttachAborted_Handler;
db.XrefAttachEnded -= DbEvent_XrefAttachEnded_Handler;
db.XrefBeginAttached -= DbEvent_XrefBeginAttached_Handler;
db.XrefBeginOtherAttached -= DbEvent_XrefBeginOtherAttached_Handler;
db.XrefBeginRestore -= DbEvent_XrefBeginRestore_Handler;
db.XrefComandeered -= DbEvent_XrefComandeered_Handler;
db.XrefPreXrefLockFile -= DbEvent_XrefPreXrefLockFile_Handler;
db.XrefRedirected -= DbEvent_XrefRedirected_Handler;
db.XrefRestoreAborted -= DbEvent_XrefRestoreAborted_Handler;
db.XrefRestoreEnded -= DbEvent_XrefRestoreEnded_Handler;
db.XrefSubCommandAborted -= DbEvent_XrefSubCommandAborted_Handler;
db.XrefSubCommandStart -= DbEvent_XrefSubCommandStart_Handler;
}
static void DocumentManager_DocumentCreated(object sender, DocumentCollectionEventArgs e)
{
SubscribeToDb(e.Document.Database);
}
}
}
Here is the event registration code in the chosen IExtensionApplication implementation by the way:
#region Namespaces
using System;
using System.Text;
using System.Linq;
using System.Xml;
using System.Reflection;
using System.ComponentModel;
using System.Collections;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Media.Imaging;
using System.Windows.Forms;
using System.Drawing;
using System.IO;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.Windows;
using AcadApplication = Autodesk.AutoCAD.ApplicationServices.Application;
using AcadDocument = Autodesk.AutoCAD.ApplicationServices.Document;
using AcadWindows = Autodesk.AutoCAD.Windows;
#endregion
namespace AcadNetAddinByVS2010
{
public class ExtApp : IExtensionApplication
{
#region IExtensionApplication Members
public void Initialize()
{
//TODO: add code to run when the ExtApp initializes. Here are a few examples:
// Checking some host information like build #, a patch or a particular Arx/Dbx/Dll;
// Creating/Opening some files to use in the whole life of the assembly, e.g. logs;
// Adding some ribbon tabs, panels, and/or buttons, when necessary;
// Loading some dependents explicitly which are not taken care of automatically;
// Subscribing to some events which are important for the whole session;
// Etc.
DbEvents1 mDbEvents1 = new DbEvents1(); //Subscribe to all databases in the whole AutoCAD session.
}
public void Terminate()
{
//TODO: add code to clean up things when the ExtApp terminates. For example:
// Closing the log files;
// Deleting the custom ribbon tabs/panels/buttons;
// Unloading those dependents;
// Un-subscribing to those events;
// Etc.
mAppEvents1.UnRegister();
}
#endregion
}
}
Here is the event registration in the chosen Command Method:
#region Namespaces
using System;
using System.Text;
using System.Linq;
using System.Xml;
using System.Reflection;
using System.ComponentModel;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Windows;
using System.Windows.Media.Imaging;
using System.Windows.Forms;
using System.Drawing;
using System.IO;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.Windows;
using AcadApplication = Autodesk.AutoCAD.ApplicationServices.Application;
using AcadDocument = Autodesk.AutoCAD.ApplicationServices.Document;
using AcadWindows = Autodesk.AutoCAD.Windows;
#endregion
namespace AcadNetAddinByVS2010
{
public class CmdGroup1
{
[CommandMethod("CmdGroup1", "Command1", null, CommandFlags.Modal, null, "AcadNetAddinByVS2010", "Command1")]
public void Command1_Method()
{
Database db = HostApplicationServices.WorkingDatabase;
Editor ed = AcadApplication.DocumentManager.MdiActiveDocument.Editor;
try
{
using (Transaction tr = db.TransactionManager.StartTransaction())
{
//TODO: add your code below.
Debug.WriteLine("Command1 ran.");
ed.WriteMessage("Command1 ran.\n");
tr.Commit();
}
}
catch (System.Exception ex)
{
Debug.WriteLine(ex.ToString());
ed.WriteMessage(ex.ToString());
}
DbEvents1.SubscribeToDb(Autodesk.AutoCAD.DatabaseServices.HostApplicationServices.WorkingDatabase); //Subscribe to the working database.
}
}
}
Reader may want to move the event registration code to anywhere in the method if necessary.
The leading edge AutoCAD .NET Addin Wizard (AcadNetAddinWizard) has provided many nice Event Wizards to auto-generate start code of even handlers and registers flexibly in no time. People can expect more and cooler wizards, coders, and widgets in the near future.
Recent Comments