AddCustomOp

AddCustomOp

導入

v5.1

詳細

自己インストール カスタム オペレータのインスタンスを作成し、それを指定された入力および出力に接続します。

このコマンドは、ほとんどの自己インストール カスタム オペレータをインスタンス化する場合に便利です。1 つのコマンドで、CustomOperator.AddInputPortCustomOperator.AddOutputPortCustomOperator.AddIOPort、およびOperator.Connectの呼び出しの機能を組み合わせることができるためです。

入力リストおよび出力リストのオブジェクトは、オペレータが読み取りまたは書き込みを行う特定のデータである必要があります。 たとえば、X3DObject を入力または出力として指定するのは不正ですが、型がClusterPropertyParameterPrimitive、またはKinematicStateのオブジェクトはすべて有効な接続です。

このコマンドが適しているのは、自己インストール プラグインの内部で定義されるオペレータを作成する場合だけです。 プリセットベースのオペレータをインスタンス化するには、ApplyOp を使用します。 ランタイム オペレータをインスタンス化するには、AddScriptedOp を使用します。

このコマンドは、Port を 1 つの PortGroup に追加することによってすべての接続を確立し、オペレータに接続されるオブジェクトすべてがすでにシーンに存在するとみなします。

注: 複数の PortGroup を使用する、よりダイナミックなオペレータを定義するには、このコマンドよりも高度なメソッドを CustomOperator オブジェクトで使用する必要があります。

スクリプト構文

oReturn = AddCustomOp( Type, OutputObjs, [InputObjs], [Name], [ConstructionMode] );

戻り値

新しく作成された CustomOperator

パラメータ

パラメータ タイプ 説明
Type 文字列 Operator を実装する自己インストール PluginItem の名前。 プラグインがインストールされていないと、このコマンドはエラーになります。
OutputObjs List オペレータの出力接続。 何も指定されていない場合は、現在の Selection が使用されます。 ほとんどのオペレータは、1 つの Output オブジェクトに接続するだけです。
InputObjs List オペレータの入力接続。 何も指定されていない場合は、オペレータは入力を使用しません。

デフォルト値:"" (空のリスト)

Name 文字列 新しいオペレータの名前。

デフォルト値:指定されていない場合は、オペレータの命名に Type 引数が使用されます。

ConstructionMode siConstructionMode オペレータを適用するコンストラクション モードを指定します。 これは、Geometry オブジェクトに対して確立された出力接続にのみ適用されます。その他のすべての接続タイプでは、モードは無視されます。

デフォルト値:現在のコンストラクション モードを使用

1. JScript の例

/*

	Create an operator called "DemoOp". The type of the operator is "EmptyOp", which 

	is a very basic operator that does nothing.

	This operator reads from a Local transform of a Null and the Geometry of a Sphere 

	and outputs to the Global transform of another Null

*/

NewScene( null, false );

var oOutput = ActiveSceneRoot.AddNull( "Out" ).Kinematics.Global ;

var oInput1 = ActiveSceneRoot.AddNull( "In1" ).Kinematics.Local ;

var oInput2 = ActiveSceneRoot.AddGeometry( "Sphere", "MeshSurface", "In2" ).ActivePrimitive ;

var oOp = AddCustomOp(

				"EmptyOp", 

				oOutput, 

				[oInput1,oInput2], 

				"DemoOp" 

			) ;

2. JScript の例

/*

	Create an operator called DemoParamOp that outputs to the PosX parameter of

	the global transform of a null.

	This operator is of type "EmptyOp" and it has no inputs so its only effect 

	is to force the value of the parameter to remain at 0.0

*/

NewScene( null, false );

var oOutput = ActiveSceneRoot.AddNull( "Out" ).Kinematics.Global.Parameters( "posx" ) ;

var oOp = AddCustomOp( 

				"EmptyOp", 

				oOutput, 

				null, 

				"DemoParamOp" 

			) ;

3. JScript の例

/*

	Create an operator called DemoManyInputs that reads from the visibility 

	property of ten nulls and outputs to the geometry of a Grid. Because it 

	uses the EmptyOp operator, it does nothing.

*/

var oInputs = new ActiveXObject( "XSI.Collection" ) ;

for ( var i = 0 ; i < 10 ; i++ )

{

	var oNull = ActiveSceneRoot.AddNull( "Input" + i ) ;

	oInputs.Add( oNull.Properties( "Visibility" ) ) ;

}

var oGrid = ActiveSceneRoot.AddGeometry( "grid", "MeshSurface", "Output" ) ;

SelectObj( oGrid.ActivePrimitive ) ;

AddCustomOp( 

		"EmptyOp",

		null,			// Softimage will use the selection

		oInputs, 

		"DemoManyInputs" 	) ;

関連項目

Parameter.AddCustomOp ProjectItem.AddCustomOp AddScriptedOp ApplyOp CustomOperator PluginRegistrar.RegisterOperator XSIFactory.CreateObject