Execute (Command)

Description

This callback is fired every time you invoke the command.

Use this callback to implement a command. This is where you process the arguments, peform some actions, and then return the result (if any). In other words, this callback is roughly equivalent to the XSIOnCommand and XSIOnCommandCPP legacy callbacks.

Applies To

Custom Commands

Syntax

    // C#
    public class <command_name>
    {
       public bool Execute( Context in_ctxt )
       {
           ...
       }
    }

    // C++
    CStatus <command_name>_Execute( CRef& in_context )
    {
       ...
    }

    // JScript
    function <command_name>_Execute( in_arg0, in_arg1, in_arg2, ... )
    {
       ...
    }

    # Python
    def <command_name>_Execute( in_arg0, in_arg1, in_arg2, ... ) :
       ...

    ' VBScript
    Function <command_name>_Execute( in_arg0, in_arg1, in_arg2, ... )
       ...
    End Function

    # PerlScript
    sub <command_name>_Execute
    {
       my (@in_args) = @;
    }

<command_name> is the name specified in the call to PluginRegistrar.RegisterCommand, with any spaces removed.

Parameters

Parameter | Language | Type | Description
in_args | Scripting | Depends on the argument | The list of arguments matches the arguments added to the command in the Init (Command) callback. The actual type of an argument depends on the argument handler (if any) and the value passed in by the caller.
in_context | C# | Context | Context.Source returns the Command. The command arguments and return value are stored as context attributes.
in_context | C++ | CRef & (C++) | A reference to the Context object. The command arguments and return value are stored as context attributes.

Context Attributes

C++ and C# custom commands use context attributes to get the command arguments and to return values.

Attribute | Description
Arguments | C# An array of type System.Object. You must cast each element of the array to its proper type before being able to use it. C++ A CValueArray. Each element of this array is a CValue object that stores an argument, which could be a boolean, numeric, or string value, a single Softimage object, or a collection of objects. See Working with Arguments.
ReturnValue | Stores the return value of the command. See Returning Values.
UndoRequired | C++ API only Determines whether or not an undo stack must be maintained. See Undoing and Redoing Custom Commands.
UndoRedoData | C++ API only Stores the current activity in the undo stack, which can later be retrieved in the Undo callback See Undoing and Redoing Custom Commands.

Examples

JScript Example

    // JScript code generated by the Command Wizard
    function XSILoadPlugin( in_reg )
    {
       in_reg.Author = "sblair";
       in_reg.Name = "NewCommand12Plugin";
       in_reg.Email = "";
       in_reg.URL = "";
       in_reg.Major = 1;
       in_reg.Minor = 0;

       in_reg.RegisterCommand("NewCommand12","NewCommand12");
       //RegistrationInsertionPoint - do not remove this line

       return true;
    }

    function XSIUnloadPlugin( in_reg )
    {
       strPluginName = in_reg.Name;
       Application.LogMessage(strPluginName + " has been unloaded.");
       return true;
    }

    function NewCommand12_Init( ctxt )
    {
       var oCmd;
       oCmd = ctxt.Source;
       oCmd.Description = "";
       oCmd.ReturnValue = true;

       var oArgs;
       oArgs = oCmd.Arguments;
       oArgs.AddWithHandler("Arg0","AnimatableParameters");
       oArgs.AddWithHandler("Arg1","Collection");
       oArgs.AddWithHandler("Arg2","SingleObj");
       oArgs.AddWithHandler("Arg3","Frame");
       oArgs.AddWithHandler("Arg4","MarkedParameters");
       oArgs.Add("Arg5",siArgumentInput);
       return true;
    }

    function NewCommand12_Execute( Arg0,Arg1,Arg2,Arg3,Arg4,Arg5 )
    {

       Application.LogMessage("NewCommand12_Execute called");

       //
       // TODO: Put your command implementation here.
       //
       return true;
    }

C++ Example

    // C++ code generated by the Command Wizard
    #include <xsi_application.h>
    #include <xsi_context.h>
    #include <xsi_pluginregistrar.h>
    #include <xsi_status.h>
    #include <xsi_argument.h>
    #include <xsi_command.h>
    using namespace XSI;

    XSIPLUGINCALLBACK CStatus XSILoadPlugin( PluginRegistrar& in_reg )
    {
       in_reg.PutAuthor(L"sblair");
       in_reg.PutName(L"CmdCppExamplePlugin");
       in_reg.PutEmail(L"");
       in_reg.PutURL(L"");
       in_reg.PutVersion(1,0);
       in_reg.RegisterCommand(L"CmdCppExample",L"CmdCppExample");
       //RegistrationInsertionPoint - do not remove this line

       return CStatus::OK;
    }

    XSIPLUGINCALLBACK CStatus XSIUnloadPlugin( const PluginRegistrar& in_reg )
    {
       CString strPluginName = in_reg.GetName();
       Application().LogMessage(strPluginName + L" has been unloaded.");
       return CStatus::OK;
    }

    XSIPLUGINCALLBACK CStatus CmdCppExample_Init( CRef& in_ctxt )
    {
       Context ctxt( in_ctxt );
       Command oCmd;
       oCmd = ctxt.GetSource();
       oCmd.PutDescription(L"");
       oCmd.EnableReturnValue(true);

       ArgumentArray oArgs;
       oArgs = oCmd.GetArguments();
       oArgs.AddWithHandler(L"Arg0",L"AnimatableParameters");
       oArgs.AddWithHandler(L"Arg1",L"Collection");
       oArgs.AddWithHandler(L"Arg2",L"SingleObj");
       oArgs.AddWithHandler(L"Arg3",L"Frame");
       oArgs.AddWithHandler(L"Arg4",L"MarkedParameters");
       oArgs.Add(L"Arg5");
       return CStatus::OK;
    }

    XSIPLUGINCALLBACK CStatus CmdCppExample_Execute( CRef& in_ctxt )
    {
       Context ctxt( in_ctxt );
       CValueArray args = ctxt.GetAttribute(L"Arguments");
       CValue Arg0 = args[0];
       CValue Arg1 = args[1];
       CValue Arg2 = args[2];
       CValue Arg3 = args[3];
       CValue Arg4 = args[4];
       CValue Arg5 = args[5];

       Application().LogMessage(L"CmdCppExample_Execute called");
       //
       // TODO: Put your command implementation here.
       //
       // Return a value by setting this attribute:
       ctxt.PutAttribute( L"ReturnValue", true );

       // Return CStatus::Fail if you want to raise a script error
       return CStatus::OK;
    }

See Also

• Command Callbacks

• Init (Command)

• Redo

• TermUndoRedo

• Undo

• Custom Command Examples

Autodesk Softimage v7.5