It is now possible to create custom action items in a .NET assembly. This is done by creating a public class that implements the interface ICuiActionCommand
(found in MaxCustomControls.dll ) and placing the DLL containing the implemented interface in the bin\assemblies folder. 3ds Max will then dynamically load an instance of this class as an action in its CUI interface. When the action is executed by 3ds Max the method ICommand.Execute()
will be called on the loaded class.
To simplify the construction of .NET custom actions, a custom class can inherit from the abstract base class CuiActionCommandAdapter
. In the code samples below, we provide an example of such an inheritance using VB.NET and C#. For more information, consult the .NET reference guide.
Imports Autodesk.Max
Imports MaxCustomControls
Public Class Class1
Inherits CuiActionCommandAdapter
Public Overrides ReadOnly Property ActionText As String
Get
Return InternalActionText
End Get
End Property
Public Overrides ReadOnly Property InternalActionText As String
Get
Return "Action 1"
End Get
End Property
Public Overrides ReadOnly Property Category As String
Get
Return InternalCategory
End Get
End Property
Public Overrides ReadOnly Property InternalCategory As String
Get
Return "ADN Samples"
End Get
End Property
Public Overrides Sub Execute(parameter As Object)
Dim myglobal As IGlobal = Autodesk.Max.GlobalInterface.Instance
Dim ip As IInterface13 = myglobal.COREInterface13
ip.PushPrompt("Hello 3ds Max .Net API!")
End Sub
End Class
public class MaxDotNetCUIDemo : CuiActionCommandAdapter {
public override string ActionText {
get { return InternalActionText; }
}
public override string Category {
get { return InternalCategory; }
}
public override void Execute(object parameter) {
Autodesk.Max.Global.Instance.COREInstance13.AddPrompt("Yeeehaaaaaaaaaa!");
}
public override string InternalActionText {
get { return "Prompt me!"; }
}
public override string InternalCategory {
get { return "3ds Max .NET Demo"; }
}
}