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