Object Hierarchy | 関連する C++クラス:PortGroup
PortGroup
v4.0
ポートグループは、Operator の Port オブジェクトのグループです。ポートグループは、通常は X3DObject によってスコープが設定される複数のポート接続を、論理的にグループ化したものです。1 つのポートグループに InputPort と OutputPort の両方を含めることができます。
注: PortGroup オブジェクトを Group オブジェクトと混同しないでください。
オペレータにより定義されるポートグループの数は Operator.GetNumPortGroups メソッドにより決まり、PortGroup 内のポートの数は Operator.GetNumPortsInGroup メソッドにより決まります。
組み込みOperatorの場合、ポートグループには選択したオブジェクトのパーツに接続するすべてのポートが含まれています。たとえば、選択したオブジェクトに Twist オペレータが適用されると、twise オペレータは、オブジェクトのローカル KinematicState と Geometry から読み取られるポートと、取得されるオブジェクトのジオメトリに記述するポートを持つようになります。
ただし、一般的な自己インストールカスタムオペレータの場合は、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 プロパティを使用して決定できます。
| Application | Categories | Filter | Flags |
FullName | Help | Index | InstanceCount |
| Max | Min | Name | NestedObjects |
| Origin | OriginPath | Parent | PickPrompt |
| Ports | Type | ||
/*
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 |