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 |