CreateObject (XSIFactory)
Introduced
4.0
Description
Creates an object from a type name.
Scripting Syntax
XSIFactory.CreateObject( NamespaceID )
C# Syntax
Object XSIFactory.CreateObject( String Name );
Parameters
|
Parameter |
Type |
Description |
|
NamespaceID |
Type Name. In the case of a Self-installed CustomProperty or CustomOperator this is the name as provided in PluginRegistrar.RegisterProperty and PluginRegistrar.RegisterOperator. |
Return Value
An XSI object, for example a CustomProperty or CustomOperator
Examples
1. JScript Example
/*
This example shows how to create a temporary instance of the Self-Installed
Custom Property called "CustomColor". This object is not part of the scene
so you don't have to delete it after you are done using it.
*/
var oColor = XSIFactory.CreateObject( "CustomColor" )
bCancelled = InspectObj( oColor, null, "Pick your favorite color", siModal, false ) ;
if ( !bCancelled )
{
Application.LogMessage( "You picked " + oColor.Color_R.Value + "," + oColor.Color_G.Value + "," + oColor.Color_B.Value ) ;
}
2. VBScript Example
'
' This example shows a typical use of XSIFactory.CreateObject to create a temporary
' CustomProperty object used as the UI for an Import or Export operation.
'
' There are two routines. DoScanUI is a user-friendly version that lets the user pick
' the options for the operation via a temporary custom pset. It then calls DoScanLowLevel
' which does the actual operation without any UI.
'
DoScanUI Application.InstallationPath( siUserPath ), false
sub DoScanUI( in_defaultScanLocation, in_bRecursive )
if NOT Application.Interactive then
' If you want your script to work in batch mode you could skip the modal dialog box and just
' use the default values. But it would be clearly code to call DoScanLowLevel directly.
DoScanLowLevel in_defaultScanLocation, in_bRecursive
exit sub
end if
' This CustomProperty is not part of the scene
' and will not be persisted
set oTempPSet = XSIFactory.CreateObject( "CustomProperty" )
oTempPSet.Name = "Scan Options"
oTempPSet.AddParameter3 "ScanFolder", siString
oTempPSet.AddParameter3 "Recursive", siBool, , , , false
' Establish the default values in the Custom PSet
oTempPSet.ScanFolder.Value = in_defaultScanLocation
oTempPSet.Recursive.Value = in_bRecursive
' Build a custom layout
set oLayout = oTempPSet.PPGLayout
oLayout.AddItem "ScanFolder", "Scan Folder", siControlFolder
oLayout.AddItem "Recursive"
' Show the custom ui, XSI is frozen until the user closes the dialog
bCancel = InspectObj( oTempPSet,,,siModal,false )
if bCancel then
Logmessage "Operation cancelled"
else
'Read the values from the pset
strScanLocation = oTempPSet.ScanFolder.Value
bRecursive = oTempPSet.Recursive.Value
DoScanLowLevel strScanLocation, bRecursive
end if
' No need to call DeleteObj
end sub
sub DoScanLowLevel( in_folder, in_bRecursive )
' Do the scanning operation not actually implemented in this example)
strMsg = "Doing "
if in_bRecursive then
strMsg = strMsg & "recursive "
end if
Application.LogMessage strMsg & "scan of " & in_folder
end sub
SOFTIMAGE|XSI v6.01