v4.0
新しいカスタムパラメータ定義を作成します(ParamDef オブジェクト)。
ParamDef オブジェクトには、複数のプロパティセットまたはオペレータの新規パラメータを 1 度の操作で作成できるパラメータの定義があります。たとえば、同じ最小値/最大値の範囲を複製して複数のプロパティセットで使用する場合や、スクリプトを使用してランタイムスクリプトオペレータにパラメータをすばやく追加する場合などに有効です。XSIFactory オブジェクトから新しい ParamDef オブジェクトを作成できます。
注:単純なバージョンについては、「XSIFactory.CreateParamDef2」を参照してください。
ParamDef XSIFactory.CreateParamDef( String in_ScriptName, siVariantType in_Type, siParamClassification in_classification, Int32 in_capabilities, String in_name, String in_description, Object in_default, Object in_Min, Object in_Max, Object in_SuggestedMin, Object in_SuggestedMax ); |
oReturn = XSIFactory.CreateParamDef( ScriptName, Type, [Classification], [Capabilities], [Name], [Description], [DefaultValue], [Min], [Max], [SuggestedMin], [SuggestedMax] ); |
新しく作成された ParamDef オブジェクト
パラメータ | タイプ | 説明 |
---|---|---|
ScriptName | String | この引数はパラメータの ScriptName を指定します(Parameter.ScriptName を参照)。引数のショート名またはロング名が指定されていない場合は、この名前がショート名および説明として使用されます。 |
Type | siVariantType | カスタムパラメータのタイプ。推奨タイプは siString、siBool、siInt4、siUByte、および SiDouble です。使用可能なタイプは、siString、siBool、siDouble、siFloat、siInt4、siInt2、siUInt4、siUInt2、siByte、siUByte です(Parameter.ValueType を参照)。 |
Classification | siParamClassification |
カスタムパラメータの分類 デフォルト値: siClassifUnknown |
Capabilities | (「Integer」を参照)に基づくビットフィールド siCapabilities |
カスタムパラメータの機能。インスペクト不能のカスタムオペレータパラメータを作成すると、インターフェイスには表示されませんがスクリプトでは使用できます。このパラメータが読み取り専用の場合も、インターフェイスでは淡色表示されますが、スクリプトでは使用できます。 siPersistable フラグは省略可能で、すべてのカスタムパラメータに対して有効になりますsiPersistable フラグは、パラメータの全インスタンスに対してデフォルトの Capabilityパラメータを付与しますが、Parameter.Capabilitiesを使用するとインスタンスごとに siPersistable フラグが無効になります。 デフォルト値:siPersistable+siAnimatable |
Name | String |
ショートの、ユーザフレンドリなカスタムパラメータの名前のバージョン。このパラメータ名はシーン Explorer に表示されます(Show Script Names が有効な場合は例外です)。この引数が指定されない場合、パラメータの名前は ScriptName になります(SIObject.Name および Parameter.ScriptName を参照)。
デフォルト値: "" |
Description | String |
カスタムパラメータの説明。指定すると、カスタムプロパティのインスペクト時にパラメータラベルに表示される名前が冗長になります。たとえば、パラメータのロング名はユーザに理解しやすい"Use Light Color as Energy"とし、通常の名前はスクリプトで扱いやすい"use_color"とすることができます(Parameter.Description を参照)。
デフォルト値: "" |
DefaultValue | Variant | カスタムパラメータのデフォルト値。ブール値および数値の場合のデフォルト値は 0 で、文字列のデフォルト値は""です(Parameter.Default を参照)。 |
Min | Variant | カスタムパラメータの最小値。siString タイプと siBool タイプでは Min 値は不要です。その他の数値タイプでは、デフォルト値をそのタイプの最小値にすることができます。たとえば、すべての未署名値には min=0 が設定されます(Parameter.Min を参照)。 |
Max | Variant | カスタムパラメータの最大値。siString タイプと siBool タイプでは Max 値は不要です。その他の数値タイプでは、デフォルト値をそのタイプの最小値にすることができます。たとえば、siUByte の最大値は 255 です(Parameter.Max を参照)。 |
SuggestedMin | Variant | カスタムパラメータの推奨最小値。siString タイプと siBool タイプでは SuggestedMin 値は不要です。デフォルトの推奨最小値(数値)は、0 です。推奨最小値には、最小値以上の値を指定してください。この値は、UI コントロールの範囲設定に使用されます(Parameter.SuggestedMin を参照)。 |
SuggestedMax | Variant | カスタムパラメータの推奨最大値。siString タイプと siBool タイプでは SuggestedMax 値は不要です。デフォルトの推奨最大値(数値)は、100 です。推奨最大値には、最大値以下の値を指定してください。この値は、UI コントロールの範囲設定に使用されます(Parameter.SuggestedMax を参照)。 |
/* This example illustrates how to add parameters to a custom operator */ var null1 = GetPrim( "null" ); var sop = XSIFactory.CreateScriptedOp( "MySOP", MySOP_Update.toString(), "JScript" ); sop.AddOutputPort( null1.posx ); // String var paramdef1 = XSIFactory.CreateParamDef( "text", siString, 0, siAnimatable, "Text", "a text parameter", "the text..."); var param1 = sop.AddParameter( paramdef1 ); // Boolean var paramdef2 = XSIFactory.CreateParamDef("bool", siBool, 0, siAnimatable, "Boolean", "a boolean parameter", true); var param2 = sop.AddParameter( paramdef2 ); // Integer var paramdef3 = XSIFactory.CreateParamDef("int", siInt4, 0, siAnimatable, "Integer", "a integer parameter", -1, -5, 5); var param3 = sop.AddParameter( paramdef3 ); // Double var paramdef4 = XSIFactory.CreateParamDef("dbl", siDouble, 0, siAnimatable && siReadOnly, "Double", "a double parameter", 0.69, 0.1, 10.9); var param4 = sop.AddParameter( paramdef4 ); // Connect operator sop.Connect(); // 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 ); } function MySOP_Update( ctx, out ) { out.Value = ctx.CurrentFrame; } |