How to listen and respond to Inventor events in Python using win32com (from http://wikihelp.autodesk.com/Inventor/enu/Community/Third_Party_Tools/the_python_page/Listening_to_Events). This example assumes you have succefully been able to connect to Inventor’s COM object If you have not, please do that first.
# used to listen to the application events and also the events for a custom button
import ctypes
import win32com.client
from win32com.client.gencache import EnsureDispatch
import pythoncom
class Events():
def __init__(self, oApp):
global Application
Application = oApp
#Application Events
class IVEvent():
def OnQuit(self, BeforeOrAfter, Context, HandlingCode):
print("Quiting...")
ctypes.windll.user32.PostQuitMessage(0)
Application.Quit()
#Custom Button Events
class BEvent():
def OnExecute(self, Context):
print "Dxf Button Clicked"
class DoylePlugin():
oApp=EnsureDispatch("Inventor.Application")
oApp.Visible=True
DxfButton=oApp.CommandManager.ControlDefinitions.AddButtonDefinition("Dxf Update", "dxf", 4)
DxfButton.AutoAddToGUI()
Events = Events(oApp)
AppEvents=win32com.client.DispatchWithEvents(oApp.ApplicationEvents, Events.IVEvent)
DxfEvents=win32com.client.DispatchWithEvents(DxfButton, Events.BEvent)
pythoncom.PumpMessages()