XSIApplication.ExecuteScriptCommand

Description

Executes a Softimage Command. This method can be used to execute any built-in or custom command. The name of the method is misleading, because compiled custom commands can also be executed via this method. For this reason the equivalent method in the C++ API has been renamed to Application::ExecuteCommand.

Typically this method is not necessary from scripting because Softimage commands can be invoked directly. So the main purpose of this method is to enable C++ applications written with COM to be able to call Softimage commands. With the advent of the C++ API it is rarely necessary to use this method.

This method, in scripting, can only return arguments via the return value. In C++ the arguments are supplied to the command via a variant containing a SafeArray. Output arguments must be passed by reference; this is done by setting the variant's argument type to VT_VARIANT | VT_BYREF.

Scripting Syntax

oVariant = XSIApplication.ExecuteScriptCommand( Name, [Arguments] );

Return Value

Variant (return value from script command)

Parameters

Parameter Type Description
Name String Command's script name
Arguments Array of Variants Array of all required script command arguments, including output arguments passed by reference. In C++ the argument is implemented as a variant containing a SafeArray of variants.

Examples

1. VBScript Example

'
'       This example illustrates how to create a image clip and inspect it using
'       a modal property page.
'
Dim clip, args
args = Array(Application.InstallationPath( siFactoryPath ) & "\Data\XSI_SAMPLES\Pictures\A_Green_Suit.JPG")
set clip = ExecuteScriptCommand( "CreateImageClip", args )
On Error Resume Next
ExecuteScriptCommand "InspectObj", Array( clip,,,siModal)
if Err.Number = siErrCancelled then
        Application.LogMessage "command cancelled"
end if
On Error Goto 0

2. VBScript Example

'
'       This example shows different ways to
'       call a Softimage command from vbscript
'
' Normal method.  This method will not work
' on Netview
GetPrim "Null"
' This method will not work on Netview
' (because there is no global Application object)
Application.GetPrim "Null"
' This is the method that works in a Netview
' script.  The oXsi object can be cached.
set oXsi = CreateObject( "XSI.Application" )
set oXsi = oXsi.Application
oXsi.GetPrim "Null"
' Because of the convenience of the previous methods,
' this mechanism is not recommended from vbscript.
' it is most useful for COM C++ plug-ins
Application.ExecuteScriptCommand "GetPrim", Array( "Null" )

3. Python Example

#
# Python Example
#
args = ["Cone","MeshSurface","",""]
retval = Application.ExecuteScriptCommand( "CreatePrim", args )
args = [retval,"","", 4]        # siModal=4
try:
        Application.ExecuteScriptCommand( "InspectObj", args )
except:
        Application.LogMessage("command cancelled")

4. JScript Example

/*
        JScript Example
*/
var obj,i=0;
var aArgs1 = new Array();
i=0;
aArgs1[i++] = "Cone";
aArgs1[i++] = "MeshSurface";
aArgs1[i++] = null;
aArgs1[i++] = null;
obj = ExecuteScriptCommand("CreatePrim", aArgs1 );
var aArgs2 = new Array();
i=0;
aArgs2[i++] = obj
aArgs2[i++] = null;
aArgs2[i++] = null;
aArgs2[i++] = siModal;
try {
        ExecuteScriptCommand("InspectObj", aArgs2 );
}
catch (e) {
        LogMessage("command cancelled");
}

See Also

Application.ExecuteScript Command