PortGroup

Object Hierarchy | 関連する C++クラス:PortGroup

継承

SIObject

PortGroup

導入

v4.0

詳細

ポートグループは、OperatorPort オブジェクトのグループです。ポートグループは、通常は X3DObject によってスコープが設定される複数のポート接続を、論理的にグループ化したものです。1 つのポートグループに InputPortOutputPort の両方を含めることができます。

注: PortGroup オブジェクトを Group オブジェクトと混同しないでください。

オペレータにより定義されるポートグループの数は Operator.GetNumPortGroups メソッドにより決まり、PortGroup 内のポートの数は Operator.GetNumPortsInGroup メソッドにより決まります。

組み込みOperatorの場合、ポートグループには選択したオブジェクトのパーツに接続するすべてのポートが含まれています。たとえば、選択したオブジェクトに Twist オペレータが適用されると、twise オペレータは、オブジェクトのローカル KinematicStateGeometry から読み取られるポートと、取得されるオブジェクトのジオメトリに記述するポートを持つようになります。

ただし、一般的な自己インストールカスタムオペレータの場合は、1 つの PortGroup にすべての出力および入力を含めることができます。これは、CustomOperator.AddInputPort または AddCustomOp への呼び出し時に各ポートの個々のターゲットが限定的に提供されるためです。実際、PortGroup の概念は、ほとんどのカスタムオペレータで完全に無視されます。ただし、高度なオペレータでは、Operator.ConnectToGroup が使用できるようにするために、動的な入力が独自の PortGroup にある必要があります。

複数のオブジェクトを同じポートグループに接続することができます。たとえば、Loft オペレータは、最終的なメッシュを作成するために多数のカーブから読み取られる場合があります。この場合、入力カーブはそれぞれ同一ポートグループに接続し、各接続はポートグループインスタンスにより呼び出されます。ポートグループに接続するオブジェクトの数は、Operator.GetNumInstancesInGroup または PortGroup.InstanceCount メソッドを使用して決定できます。

SIObject.Parentを使用してこの PortGroup の Operator を取得するか、SIObject.Nameを使用してこのポートグループの名前を取得します。

ポートが属するポートグループは、Port.GroupName プロパティまたは Port.GroupIndex プロパティを使用して決定できます。ポートが属するポートグループインスタンスは、Port.GroupInstance プロパティを使用して決定できます。

メソッド

IsClassOfオペレータ IsEqualToオペレータ IsOptional SupportsBranchGroup

プロパティ

Application Categories Filter Flags
FullNameオペレータ Help Index InstanceCount
Max Min Nameオペレータ NestedObjects
Origin OriginPath Parent PickPrompt
Ports Typeオペレータ    
       

JScript の例

/*

	This example illustrates how to browse the port groups of an operator.

*/

NewScene( null, false );

CreatePrim( "Cylinder", "MeshSurface" );

var op = ApplyOp( "Shear", "cylinder", 3, siPersistentOperation )(0);

dump_portgroups(op);

function dump_portgroups(op)

{

	if ( ! op.BelongsTo("Operators") )

		return;

	var ePortGroups = new Enumerator( op.PortGroups );

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

	{

		var portgroup = ePortGroups.item();

		var str = ""; 

		str += "group name: " + portgroup.Name;

		str += ", type: " + portgroup.Type;

		str += ", parent: " + portgroup.Parent;

		str += ", index: " + portgroup.Index;

		str += ", flags: " + portgroup.Flags;

		str += ", min: " + portgroup.Min;

		str += ", max: " + portgroup.Max;

		str += ", filter: " + portgroup.Filter;

		str += ", pickprompt: " + portgroup.PickPrompt;

		str += ", optional: " + portgroup.IsOptional();

		str += ", branchgroup: " + portgroup.SupportsBranchGroup();

		Application.LogMessage( str ); 

		var ePorts = new Enumerator( portgroup.Ports );

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

		{

			var port = ePorts.item();

			dump_port(port);

		}

	}

}	

function dump_port(port)

{	

	var str = "";

	str += "port name: " + port.Name;

	str += ", type: " + port.Type;

	str += ", porttype: " + port.PortType;

	str += ", connected: " + port.IsConnected;

	if ( port.IsConnected)

		str += ", target: " + port.Target2; 

	str += ", parent: " + port.Parent;

	str += ", index: " + port.Index;

	str += ", flags: " + port.Flags;

	if ( port.Type == "InputPort" )

		str += ", optional: " + port.Optional;

	if ( port.type == "OutputPort" )

		str += ", created: " + port.Created;

	str += ", branchgroup: " + port.BranchGroup;

	str += ", groupname: " + port.GroupName;

	str += ", groupindex: " + port.GroupIndex;

	str += ", groupinstance: " + port.GroupInstance;

	Application.LogMessage( str ); 

}

// Expected result:

//INFO : group name: Group_0, type: PortGroup, parent: cylinder.polymsh.shearop, index: 0, flags: 513, min: 1, max: 1, filter: DeformableComponent, pickprompt: Deformation Value, optional: false, branchgroup: true

//INFO : port name: Port_0, type: InputPort, porttype: 0, connected: false, parent: cylinder.polymsh.shearop, index: 0, flags: 1026, optional: false, branchgroup: true, groupname: Group_0, groupindex: 0, groupinstance: -1

//INFO : port name: Port_2, type: InputPort, porttype: 0, connected: false, parent: cylinder.polymsh.shearop, index: 1, flags: 1088, optional: false, branchgroup: true, groupname: Group_0, groupindex: 0, groupinstance: -1

//INFO : port name: Port_3, type: InputPort, porttype: 0, connected: false, parent: cylinder.polymsh.shearop, index: 2, flags: 64, optional: false, branchgroup: false, groupname: Group_0, groupindex: 0, groupinstance: -1

//INFO : port name: Port_4, type: InputPort, porttype: 0, connected: false, parent: cylinder.polymsh.shearop, index: 3, flags: 24, optional: true, branchgroup: false, groupname: Group_0, groupindex: 0, groupinstance: -1

//INFO : port name: Port_5, type: InputPort, porttype: 0, connected: false, parent: cylinder.polymsh.shearop, index: 4, flags: 24, optional: true, branchgroup: false, groupname: Group_0, groupindex: 0, groupinstance: -1

//INFO : port name: Port_1, type: OutputPort, porttype: 1, connected: false, parent: cylinder.polymsh.shearop, index: 5, flags: 525313, created: false, branchgroup: true, groupname: Group_0, groupindex: 0, groupinstance: -1

//INFO : group name: Group_1, type: PortGroup, parent: cylinder.polymsh.shearop, index: 1, flags: 128, min: 0, max: 1, filter: , pickprompt: , optional: true, branchgroup: false

//INFO : port name: Port_0, type: InputPort, porttype: 0, connected: false, parent: cylinder.polymsh.shearop, index: 0, flags: 24, optional: true, branchgroup: false, groupname: Group_1, groupindex: 1, groupinstance: -1

関連項目

Operator.GetNumInstancesInGroup