public CSimpleInteraction(Inventor.Application oApplication) { mApplication = oApplication; //Initialize events mInteractionEvents = mApplication.CommandManager.CreateInteractionEvents(); mSelectEvents = mInteractionEvents.SelectEvents; //Set event handler VB.Net Style mSelectEvents.OnSelect += new Inventor.SelectEventsSink_OnSelectEventHandler(this.mSelectEvents_OnSelect); mInteractionEvents.OnTerminate += new Inventor.InteractionEventsSink_OnTerminateEventHandler(this.mInteractionEvents_OnTerminate); //Clear filter and set new ones if needed mSelectEvents.ClearSelectionFilter(); //Always Disable mouse move if not needed for performances mSelectEvents.MouseMoveEnabled = false; mSelectEvents.Enabled = true; mSelectEvents.SingleSelectEnabled = true; //Remember to Start/Stop the interaction event mInteractionEvents.Start(); }
///////////////////////////////////////////////////////////// // Use: Clear all selection filters // ///////////////////////////////////////////////////////////// public void ClearSelectionFilters() { _PreSelectFilters.Clear(); if (_SelectEvents != null) { _SelectEvents.ClearSelectionFilter(); } }
//------------------------------------------------------------------------------ public void Interactive_Selection(Inventor.Application application) { m_interactionEvents = application.CommandManager.CreateInteractionEvents(); //设置提示 m_interactionEvents.StatusBarText = "Select an cylinder face."; //连接到相关选择事件 m_selectEvents = m_interactionEvents.SelectEvents; //清除过滤器并重新定义圆柱面可选择 m_selectEvents.ClearSelectionFilter(); m_selectEvents.AddSelectionFilter(SelectionFilterEnum.kPartFaceCylindricalFilter); //单个选择使能 m_selectEvents.Enabled = true; m_selectEvents.SingleSelectEnabled = true; m_selectEvents.MouseMoveEnabled = false; //设置委托 m_Select_OnSelect_Delegate = new Inventor.SelectEventsSink_OnSelectEventHandler(this.m_SelectEvents_OnSelect); m_selectEvents.OnSelect += m_Select_OnSelect_Delegate; m_interaction_OnTerminate_Delegate = new Inventor.InteractionEventsSink_OnTerminateEventHandler(this.m_InteractionEvent_Onterminate); m_interactionEvents.OnTerminate += m_interaction_OnTerminate_Delegate; //启动选择进程 m_interactionEvents.Start(); }
private void m_buttonDef_OnExecute(NameValueMap context) { if (m_dialog != null) { m_dialog.Focus(); return; } m_interaction = m_inventorApplication.CommandManager.CreateInteractionEvents(); m_interaction.StatusBarText = "Select the face to add tabs to"; m_selects = m_interaction.SelectEvents; m_selects.ClearSelectionFilter(); m_selects.AddSelectionFilter(SelectionFilterEnum.kPartFacePlanarFilter); //m_selects.SingleSelectEnabled = true; m_selects.MouseMoveEnabled = false; // recommended for performance if not used m_selects.Enabled = true; // ??? // no idea what these event sinks are and why we need them... m_selects.OnSelect += new Inventor.SelectEventsSink_OnSelectEventHandler(this.SelectEvents_OnSelect); m_interaction.OnTerminate += new Inventor.InteractionEventsSink_OnTerminateEventHandler(this.M_interaction_OnTerminate); // TODO: only do this once per document! // TODO: why doesn't it work at all??!?! m_browser_events = m_inventorApplication.ActiveDocument.BrowserPanes.BrowserPanesEvents; m_browser_events.OnBrowserNodeActivate += new Inventor.BrowserPanesSink_OnBrowserNodeActivateEventHandler(this.BrowserPanesEvents_OnBrowserNodeActivate); m_browser_events.OnBrowserNodeLabelEdit += new Inventor.BrowserPanesSink_OnBrowserNodeLabelEditEventHandler(M_browser_events_OnBrowserNodeLabelEdit); m_dialog = new LaserTabForm(m_form_state); m_dialog.Show(new InventorMainFrame(m_inventorApplication.MainFrameHWND)); m_dialog.FormClosed += M_dialog_FormClosed; m_dialog.button_ok.Click += Button_ok_Click; m_interaction.Start(); }
///////////////////////////////////////////////////////////// // Use: // ///////////////////////////////////////////////////////////// public void Reset() { _SelectEvents.ResetSelections(); _SelectEvents.ClearSelectionFilter(); }