## XSIFactory.CreateParamDef2

### Introduced

v4.0

### Description

Creates a new custom parameter definition (ParamDef object).
ParamDef objects contain the definition of a parameter from which you can create new parameters on the fly for one or more property sets or operators. For example, you may want to use a double with the same min/max range and use it on multiple property sets or you may simply want a quick way to add parameters to a runtime scripted operator via scripting. You can create New ParamDef objects from the XSIFactory object.
Note: If you need to specify capabilities, classification, or suggested minimum and maximum values, use XSIFactory.CreateParamDef instead.

### C# Syntax

    ParamDef XSIFactory.CreateParamDef2( String in_ScriptName, siVariantType in_Type, Object in_default, Object in_Min, Object in_Max );

### Scripting Syntax

    oReturn = XSIFactory.CreateParamDef2( ScriptName, Type, [DefaultValue], [Min], [Max] );

### Return Value

The newly created ParamDef object.

### Parameters

Parameter | Type | Description
--- | --- | ---
ScriptName | String | This argument specifies the ScriptName of a parameter (see Parameter.ScriptName). If the short name or long name arguments are not specified then this name is also used as the short name and description.
Type | siVariantType | Type of the custom parameter. The recommended types are: siString, siBool, siInt4, siUByte, and siDouble. The supported types are: siString, siBool, siDouble, siFloat, siInt4, siInt2, siUInt4, siUInt2, siByte, siUByte (see Parameter.ValueType).
DefaultValue | Variant | Default value of the custom parameter. A default value for numerical values (including boolean) is 0; the string default is "" (see Parameter.Default).
Min | Variant | Minimum value of the custom parameter. The types siString and siBool do not require a Min value. For all other numerical types the default is the minimum value possible for the type. For example, all unsigned values have a minimum value of 0 (see Parameter.Min).
Max | Variant | Maximum value of the custom parameter. The types siString and siBool do not require a Max value. For all other numerical types the default is the minimum value possible for the type. For example, the maximum value for siUByte is 255 (see Parameter.Max)

### Examples

#### JScript Example

    // This example illustrates how to add parameters to a custom operator

    NewScene( null, false )

    var null1 = GetPrim("null");

    // Create the operator

    var sop = XSIFactory.CreateScriptedOp( "MySOP", MySOP_Update.toString(), "JScript" );

    // Add the ports

    sop.AddOutputPort( null1.posx );

    // Add the parameters

    var param1 = sop.AddParameter( XSIFactory.CreateParamDef2("text", siString, "hello") );

    var param2 = sop.AddParameter( XSIFactory.CreateParamDef2("bool", siBool, true) );

    var param3 = sop.AddParameter( XSIFactory.CreateParamDef2("int", siInt4, 10, 0, 100) );

    var param4 = sop.AddParameter( XSIFactory.CreateParamDef2("dbl", siDouble, 0.5, 0.0, 1.0) );

    // List operator's parameters

    var eParams = new Enumerator( sop.parameters );

    for ( ; !eParams.atEnd(); eParams.moveNext() )

    {

    	var param = eParams.item();

    	 Application.LogMessage( param.Name + " = " + param.Value );

    }

    // Connect the operator

    sop.Connect();

    // Operator's update function

    function MySOP_Update( ctx, out )

    {

    	out.Value = ctx.CurrentFrame;

    }

### See Also

CustomOperator.AddParameter, ParamDef