//------------------------------------------------------------------------------ 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(); }
public void Measure(MeasureTypeEnum measureType) { m_measureType = measureType; bStillMeasure = true; m_interactionEvents = m_inventorApplication.CommandManager.CreateInteractionEvents(); m_Interaction_OnTerminate_Delegate = new InteractionEventsSink_OnTerminateEventHandler(InteractionEvents_OnTerminate); m_interactionEvents.OnTerminate += m_Interaction_OnTerminate_Delegate; m_MeasureEvents = m_interactionEvents.MeasureEvents; m_Measure_OnMeasure_Delegate = new MeasureEventsSink_OnMeasureEventHandler(MeasureEvents_OnMeasure); m_MeasureEvents.OnMeasure += m_Measure_OnMeasure_Delegate; m_interactionEvents.Start(); if (m_measureType == MeasureTypeEnum.kDistanceMeasure) { m_MeasureEvents.Measure(MeasureTypeEnum.kDistanceMeasure); } do { m_inventorApplication.UserInterfaceManager.DoEvents(); }while (bStillMeasure); m_interactionEvents.Stop(); m_MeasureEvents = null; m_interactionEvents = null; }
public void StartInteraction(Inventor.Application application, string interactionName, out InteractionEvents interactionEvents) { try { //----------------------------------------------------- //------------------InteractionEvents------------------ //----------------------------------------------------- //create the InteractionEvents object m_interactionEvents = application.CommandManager.CreateInteractionEvents(); //define that we want select events rather than mouse events m_interactionEvents.SelectionActive = true; //set the name for the interaction events m_interactionEvents.Name = interactionName; //connect the interaction event sink m_interaction_OnTerminate_Delegate = new InteractionEventsSink_OnTerminateEventHandler(InteractionEvents_OnTerminate); m_interactionEvents.OnTerminate += m_interaction_OnTerminate_Delegate; //------------------SelectEvents-------------------- //set a reference to the select events m_selectEvents = m_interactionEvents.SelectEvents; //connect the select event sink m_Select_OnSelect_Delegate = new SelectEventsSink_OnSelectEventHandler(SelectEvents_OnSelect); m_selectEvents.OnSelect += m_Select_OnSelect_Delegate; m_Select_OnPreSelect_Delegate = new SelectEventsSink_OnPreSelectEventHandler(SelectEvents_OnPreSelect); m_selectEvents.OnPreSelect += m_Select_OnPreSelect_Delegate; m_Select_OnPreSelectMouseMove_Delegate = new SelectEventsSink_OnPreSelectMouseMoveEventHandler(SelectEvents_OnPreSelectMouseMove); m_selectEvents.OnPreSelectMouseMove += m_Select_OnPreSelectMouseMove_Delegate; m_Select_OnStopPreSelect_Delegate = new SelectEventsSink_OnStopPreSelectEventHandler(SelectEvents_OnStopPreSelect); m_selectEvents.OnStopPreSelect += m_Select_OnStopPreSelect_Delegate; m_Select_OnUnSelect_Delegate = new SelectEventsSink_OnUnSelectEventHandler(SelectEvents_OnUnSelect); m_selectEvents.OnUnSelect += m_Select_OnUnSelect_Delegate; //------------------MouseEvents-------------------- //set a reference to the mouse events m_mouseEvents = m_interactionEvents.MouseEvents; //connect the mouse event sink m_Mouse_OnMouseMove_Delegate = new MouseEventsSink_OnMouseMoveEventHandler(MouseEvents_OnMouseMove); m_mouseEvents.OnMouseMove += m_Mouse_OnMouseMove_Delegate; m_Mouse_OnMouseUp_Delegate = new MouseEventsSink_OnMouseUpEventHandler(MouseEvents_OnMouseUp); m_mouseEvents.OnMouseUp += m_Mouse_OnMouseUp_Delegate; m_Mouse_OnMouseDown_Delegate = new MouseEventsSink_OnMouseDownEventHandler(MouseEvents_OnMouseDown); m_mouseEvents.OnMouseDown += m_Mouse_OnMouseDown_Delegate; m_Mouse_OnMouseClick_Delegate = new MouseEventsSink_OnMouseClickEventHandler(MouseEvents_OnMouseClick); m_mouseEvents.OnMouseClick += m_Mouse_OnMouseClick_Delegate; m_Mouse_OnMouseDoubleClick_Delegate = new MouseEventsSink_OnMouseDoubleClickEventHandler(MouseEvents_OnMouseDoubleClick); m_mouseEvents.OnMouseDoubleClick += m_Mouse_OnMouseDoubleClick_Delegate; m_Mouse_OnMouseLeave_Delegate = new MouseEventsSink_OnMouseLeaveEventHandler(MouseEvents_OnMouseLeave); m_mouseEvents.OnMouseLeave += m_Mouse_OnMouseLeave_Delegate; //------------------TriadEvents-------------------- //set a reference to the triad events m_triadEvents = m_interactionEvents.TriadEvents; //connect the triad event sink m_Triad_OnActivate_Delegate = new TriadEventsSink_OnActivateEventHandler(TriadEvents_OnActivate); m_triadEvents.OnActivate += m_Triad_OnActivate_Delegate; m_Triad_OnEndMove_Delegate = new TriadEventsSink_OnEndMoveEventHandler(TriadEvents_OnEndMove); m_triadEvents.OnEndMove += m_Triad_OnEndMove_Delegate; m_Triad_OnEndSequence_Delegate = new TriadEventsSink_OnEndSequenceEventHandler(TriadEvents_OnEndSequence); m_triadEvents.OnEndSequence += m_Triad_OnEndSequence_Delegate; m_Triad_OnMove_Delegate = new TriadEventsSink_OnMoveEventHandler(TriadEvents_OnMove); m_triadEvents.OnMove += m_Triad_OnMove_Delegate; m_Triad_OnMoveTriadOnlyToggle_Delegate = new TriadEventsSink_OnMoveTriadOnlyToggleEventHandler(TriadEvents_OnMoveTriadOnlyToggle); m_triadEvents.OnMoveTriadOnlyToggle += m_Triad_OnMoveTriadOnlyToggle_Delegate; m_Triad_OnSegmentSelectionChange_Delegate = new TriadEventsSink_OnSegmentSelectionChangeEventHandler(TriadEvents_OnSegmentSelectionChange); m_triadEvents.OnSegmentSelectionChange += m_Triad_OnSegmentSelectionChange_Delegate; m_Triad_OnStartMove_Delegate = new TriadEventsSink_OnStartMoveEventHandler(TriadEvents_OnStartMove); m_triadEvents.OnStartMove += m_Triad_OnStartMove_Delegate; m_Triad_OnStartSequence_Delegate = new TriadEventsSink_OnStartSequenceEventHandler(TriadEvents_OnStartSequence); m_triadEvents.OnStartSequence += m_Triad_OnStartSequence_Delegate; m_Triad_OnTerminate_Delegate = new TriadEventsSink_OnTerminateEventHandler(TriadEvents_OnTerminate); m_triadEvents.OnTerminate += m_Triad_OnTerminate_Delegate; //start the InteractionEvents m_interactionEvents.Start(); } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.ToString()); } finally { interactionEvents = m_interactionEvents; } }