Community
Inventor Programming - iLogic, Macros, AddIns & Apprentice
Inventor iLogic, Macros, AddIns & Apprentice Forum. Share your knowledge, ask questions, and explore popular Inventor topics related to programming, creating add-ins, macros, working with the API or creating iLogic tools.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

VBA - adding custom command to context menu

1 REPLY 1
Reply
Message 1 of 2
Anonymous
2149 Views, 1 Reply

VBA - adding custom command to context menu

How can I add custom command (macro) to a context menu in Inventor 2010 via VBA?

 

(I searched the forum and got it to the point when I'm able to add commands that are built in Inventor)

 

The example how to do it would be the best solution

 

Thx

1 REPLY 1
Message 2 of 2
xiaodong_liang
in reply to: Anonymous

Hi,

 

In the previous releases, the linear MarkingMenu and RadialMarkingMenu are not introduced. UsertInputEvents. OnContextMenu is to customize the context menu. The structure of VBA code is as below.
 

' *************module*****************
Sub test()

Dim oC As clsUserInput
Set oC = New clsUserInput

oC.Initialize

Do While True
  DoEvents
 
Loop

End Sub

 


******class: clsUserInput *********

Option Explicit
Private WithEvents oUserInputEvents As UserInputEvents
Private WithEvents oCtrlDefNew As ButtonDefinition

Public Sub Initialize()

Set oUserInputEvents = ThisApplication.CommandManager.UserInputEvents

End Sub

Private Sub oUserInputEvents_OnContextMenu(ByVal SelectionDevice As SelectionDeviceEnum, ByVal AdditionalInfo As NameValueMap, ByVal CommandBar As CommandBar)

On Error Resume Next

' Check if the context menu has the 'Home View' (formerly 'Isometric View') command
Dim oCmdBarControl As CommandBarControl
Set oCmdBarControl = CommandBar.Controls.Item("AppIsometricViewCmd")

If Not oCmdBarControl Is Nothing Then

'Dim oCtrlDefNew As ButtonDefinition
Set oCtrlDefNew = ThisApplication.CommandManager.ControlDefinitions.AddButtonDefinition("MyContextMenu", _
"MyContextMenu", kShapeEditCmdType, "", "MyContextMenu", "MyContextMenu")

If oCtrlDefNew Is Nothing Then
Set oCtrlDefNew = ThisApplication.CommandManager.ControlDefinitions("MyContextMenu")
End If

Call CommandBar.Controls.AddButton(oCtrlDefNew, oCmdBarControl.index)

End If

End Sub

Public Sub oCtrlDefNew_OnExecute(ByVal Context As NameValueMap) ¡®event of button

oCtrlDefNew.Pressed = Not oCtrlDefNew.Pressed ¡®pressed or un-pressed

MsgBox "my button is clicked"

End Sub

Now, you will need to use


 UsertInputEvents. OnLinearMarkingMenu
UsertInputEvents. OnRadialMarkingMenu
UsertInputEvents. OnContextualMiniToolbar

The code demo is as below:

' *************module*****************
Sub test()

Dim oC As Class1
Set oC = New Class1

oC.ini

Do While True
  DoEvents
 
Loop

End Sub


'*********** event *****************
 
Private WithEvents oUE As UserInputEvents

Public Sub ini()
 
Set oUE = ThisApplication.CommandManager.UserInputEvents
 
End Sub

 
Private Sub oUE_OnLinearMarkingMenu(ByVal SelectedEntities As ObjectsEnumerator, ByVal SelectionDevice As SelectionDeviceEnum, ByVal LinearMenu As CommandControls, ByVal AdditionalInfo As NameValueMap)
     
       ' Check to see if a single planar face is selected.
    If SelectedEntities.Count = 1 Then
        If TypeOf SelectedEntities.Item(1) Is Face Then
            Dim oFace As Face
            Set oFace = SelectedEntities.Item(1)
            
            If oFace.SurfaceType = kPlaneSurface Then
               
               Call LinearMenu.AddButton(ThisApplication.CommandManager.ControlDefinitions("mycommand_internalname"), True)
            End If
        End If
    End If
    
     Set oUE = Nothing  'stop the events
     
End Sub


Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk Design & Make Report