Inventor API provides many events in various objects. The Application Events may be the most important ones. In this post, let’s see how to manipulate Inventor Application Events using .NET, particularly C# here.
We create the event handlers for each available Inventor Application Event and provide registers and un-registers like the following:
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 Microsoft.Win32;
using System.Runtime.InteropServices;
using Inventor;
namespace InventorNetAddin1
{
public class AppEventsHandler
{
public void Register()
{
AddinGlobal.InventorApp.ApplicationEvents.OnTranslateDocument += AppEvent_OnTranslateDocument_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnTerminateDocument += AppEvent_OnTerminateDocument_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnSaveDocument += AppEvent_OnSaveDocument_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnRestart32BitHost += AppEvent_OnRestart32BitHost_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnReady += AppEvent_OnReady_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnQuit += AppEvent_OnQuit_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnOpenDocument += AppEvent_OnOpenDocument_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnNewView += AppEvent_OnNewView_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnNewEditObject += AppEvent_OnNewEditObject_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnNewDocument += AppEvent_OnNewDocument_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnMigrateDocument += AppEvent_OnMigrateDocument_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnInitializeDocument += AppEvent_OnInitializeDocument_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnDocumentChange += AppEvent_OnDocumentChange_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnDisplayModeChange += AppEvent_OnDisplayModeChange_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnDeactivateView += AppEvent_OnDeactivateView_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnDeactivateDocument += AppEvent_OnDeactivateDocument_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnCloseView += AppEvent_OnCloseView_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnCloseDocument += AppEvent_OnCloseDocument_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnApplicationOptionChange += AppEvent_OnApplicationOptionChange_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnActiveProjectChanged += AppEvent_OnActiveProjectChanged_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnActivateView += AppEvent_OnActivateView_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnActivateDocument += AppEvent_OnActivateDocument_Handler;
}
public void UnRegister()
{
AddinGlobal.InventorApp.ApplicationEvents.OnTranslateDocument -= AppEvent_OnTranslateDocument_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnTerminateDocument -= AppEvent_OnTerminateDocument_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnSaveDocument -= AppEvent_OnSaveDocument_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnRestart32BitHost -= AppEvent_OnRestart32BitHost_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnReady -= AppEvent_OnReady_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnQuit -= AppEvent_OnQuit_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnOpenDocument -= AppEvent_OnOpenDocument_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnNewView -= AppEvent_OnNewView_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnNewEditObject -= AppEvent_OnNewEditObject_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnNewDocument -= AppEvent_OnNewDocument_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnMigrateDocument -= AppEvent_OnMigrateDocument_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnInitializeDocument -= AppEvent_OnInitializeDocument_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnDocumentChange -= AppEvent_OnDocumentChange_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnDisplayModeChange -= AppEvent_OnDisplayModeChange_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnDeactivateView -= AppEvent_OnDeactivateView_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnDeactivateDocument -= AppEvent_OnDeactivateDocument_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnCloseView -= AppEvent_OnCloseView_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnCloseDocument -= AppEvent_OnCloseDocument_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnApplicationOptionChange -= AppEvent_OnApplicationOptionChange_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnActiveProjectChanged -= AppEvent_OnActiveProjectChanged_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnActivateView -= AppEvent_OnActivateView_Handler;
AddinGlobal.InventorApp.ApplicationEvents.OnActivateDocument -= AppEvent_OnActivateDocument_Handler;
}
public void AppEvent_OnActivateDocument_Handler(_Document DocumentObject, EventTimingEnum BeforeOrAfter, NameValueMap Context, out HandlingCodeEnum HandlingCode)
{
MessageBox.Show("OnActivateDocument");
HandlingCode = HandlingCodeEnum.kEventHandled;
}
public void AppEvent_OnActivateView_Handler(Inventor.View ViewObject, EventTimingEnum BeforeOrAfter, NameValueMap Context, out HandlingCodeEnum HandlingCode)
{
MessageBox.Show("OnActivateView");
HandlingCode = HandlingCodeEnum.kEventHandled;
}
public void AppEvent_OnActiveProjectChanged_Handler(DesignProject ProjectObject, EventTimingEnum BeforeOrAfter, NameValueMap Context, out HandlingCodeEnum HandlingCode)
{
MessageBox.Show("OnActiveProjectChanged");
HandlingCode = HandlingCodeEnum.kEventHandled;
}
public void AppEvent_OnApplicationOptionChange_Handler(EventTimingEnum BeforeOrAfter, NameValueMap Context, out HandlingCodeEnum HandlingCode)
{
MessageBox.Show("OnApplicationOptionChange");
HandlingCode = HandlingCodeEnum.kEventHandled;
}
public void AppEvent_OnCloseDocument_Handler(_Document DocumentObject, string FullDocumentName, EventTimingEnum BeforeOrAfter, NameValueMap Context, out HandlingCodeEnum HandlingCode)
{
MessageBox.Show("OnCloseDocument");
HandlingCode = HandlingCodeEnum.kEventHandled;
}
public void AppEvent_OnCloseView_Handler(Inventor.View ViewObject, EventTimingEnum BeforeOrAfter, NameValueMap Context, out HandlingCodeEnum HandlingCode)
{
MessageBox.Show("OnCloseView");
HandlingCode = HandlingCodeEnum.kEventHandled;
}
public void AppEvent_OnDeactivateDocument_Handler(_Document DocumentObject, EventTimingEnum BeforeOrAfter, NameValueMap Context, out HandlingCodeEnum HandlingCode)
{
MessageBox.Show("OnDeactivateDocument");
HandlingCode = HandlingCodeEnum.kEventHandled;
}
public void AppEvent_OnDeactivateView_Handler(Inventor.View ViewObject, EventTimingEnum BeforeOrAfter, NameValueMap Context, out HandlingCodeEnum HandlingCode)
{
MessageBox.Show("OnDeactivateView");
HandlingCode = HandlingCodeEnum.kEventHandled;
}
public void AppEvent_OnDisplayModeChange_Handler(Inventor.View ViewObject, EventTimingEnum BeforeOrAfter, NameValueMap Context, out HandlingCodeEnum HandlingCode)
{
MessageBox.Show("OnDisplayModeChange");
HandlingCode = HandlingCodeEnum.kEventHandled;
}
public void AppEvent_OnDocumentChange_Handler(_Document DocumentObject, EventTimingEnum BeforeOrAfter, CommandTypesEnum ReasonsForChange, NameValueMap Context, out HandlingCodeEnum HandlingCode)
{
MessageBox.Show("OnDocumentChange");
HandlingCode = HandlingCodeEnum.kEventHandled;
}
public void AppEvent_OnInitializeDocument_Handler(_Document DocumentObject, string FullDocumentName, EventTimingEnum BeforeOrAfter, NameValueMap Context, out HandlingCodeEnum HandlingCode)
{
MessageBox.Show("OnInitializeDocument");
HandlingCode = HandlingCodeEnum.kEventHandled;
}
public void AppEvent_OnMigrateDocument_Handler(_Document DocumentObject, EventTimingEnum BeforeOrAfter, NameValueMap Context, out HandlingCodeEnum HandlingCode)
{
MessageBox.Show("OnMigrateDocument");
HandlingCode = HandlingCodeEnum.kEventHandled;
}
public void AppEvent_OnNewDocument_Handler(_Document DocumentObject, EventTimingEnum BeforeOrAfter, NameValueMap Context, out HandlingCodeEnum HandlingCode)
{
MessageBox.Show("OnNewDocument");
HandlingCode = HandlingCodeEnum.kEventHandled;
}
public void AppEvent_OnNewEditObject_Handler(object EditObject, EventTimingEnum BeforeOrAfter, NameValueMap Context, out HandlingCodeEnum HandlingCode)
{
MessageBox.Show("OnNewEditObject");
HandlingCode = HandlingCodeEnum.kEventHandled;
}
public void AppEvent_OnNewView_Handler(Inventor.View ViewObject, EventTimingEnum BeforeOrAfter, NameValueMap Context, out HandlingCodeEnum HandlingCode)
{
MessageBox.Show("OnNewView");
HandlingCode = HandlingCodeEnum.kEventHandled;
}
public void AppEvent_OnOpenDocument_Handler(_Document DocumentObject, string FullDocumentName, EventTimingEnum BeforeOrAfter, NameValueMap Context, out HandlingCodeEnum HandlingCode)
{
MessageBox.Show("OnOpenDocument");
HandlingCode = HandlingCodeEnum.kEventHandled;
}
public void AppEvent_OnQuit_Handler(EventTimingEnum BeforeOrAfter, NameValueMap Context, out HandlingCodeEnum HandlingCode)
{
MessageBox.Show("OnQuit");
HandlingCode = HandlingCodeEnum.kEventHandled;
}
public void AppEvent_OnReady_Handler(EventTimingEnum BeforeOrAfter, NameValueMap Context, out HandlingCodeEnum HandlingCode)
{
MessageBox.Show("OnReady");
HandlingCode = HandlingCodeEnum.kEventHandled;
}
public void AppEvent_OnRestart32BitHost_Handler(EventTimingEnum BeforeOrAfter, NameValueMap Context, out HandlingCodeEnum HandlingCode)
{
MessageBox.Show("OnRestart32BitHost");
HandlingCode = HandlingCodeEnum.kEventHandled;
}
public void AppEvent_OnSaveDocument_Handler(_Document DocumentObject, EventTimingEnum BeforeOrAfter, NameValueMap Context, out HandlingCodeEnum HandlingCode)
{
MessageBox.Show("OnSaveDocument");
HandlingCode = HandlingCodeEnum.kEventHandled;
}
public void AppEvent_OnTerminateDocument_Handler(_Document DocumentObject, string FullDocumentName, EventTimingEnum BeforeOrAfter, NameValueMap Context, out HandlingCodeEnum HandlingCode)
{
MessageBox.Show("OnTerminateDocument");
HandlingCode = HandlingCodeEnum.kEventHandled;
}
public void AppEvent_OnTranslateDocument_Handler(bool TranslatingIn, _Document DocumentObject, string FullFileName, EventTimingEnum BeforeOrAfter, NameValueMap Context, out HandlingCodeEnum HandlingCode)
{
MessageBox.Show("OnTranslateDocument");
HandlingCode = HandlingCodeEnum.kEventHandled;
}
}
}
Thing becomes straightforward. We create an instance of the application event handler, register all those events through calling the Register() method of the handler in the Activate implementation, and un-register them accordingly through calling the UnRegister() method in the Deactivate() implementation of the Inventor Addin Server.
...
AppEventsHandler mAppEventsHandler = new AppEventsHandler();
...
public void Activate(Inventor.ApplicationAddInSite siteObj, bool loaded1stTime)
{
…
mAppEventsHandler.Register();
}
public void Deactivate()
{
mAppEventsHandler.UnRegister();
…
}
Now we are ready to go. We make the Inventor assembly loadable through creating an addin manifest file, deploy it to the right place, launch Inventor, and play around the application events that are registered as above.
The Inventor .NET Addin Wizard (InventorNetAddinWizard) can generate Inventor .NET addin projects automatically including addin server interface implementations, COM registry free treatment, a sample Ribbon Button, and manifest file creation and deployment. Right after that, the Inventor addin assembly is ready to be launched by Inventor and debugged by the Visual Studio Debugger simply through pressing the F5 key.
The list of its cool features and the link to the installer download can be found from the A Wizard for Inventor .NET Addin page.
Very useful information in this article! its really useful in
asp.net web development services
Posted by: janu3vj | 10/05/2016 at 07:58 AM