## Operator.ConnectToGroup

### Introduced

v4.0

### Description

Connects an object to a port group. This method is useful for dynamic operators, where optional or multi-instance connections are made after the object is already connected.
Note: This method only works for Self-Installed Custom Operators if there is a single port inside the port group. This limitation exists because you can only pass a single object in the Object argument.

### C# Syntax

    Int32 Operator.ConnectToGroup( Int32 in_group, Object in_obj );

### Scripting Syntax

    oLong = Operator.ConnectToGroup( Group, Object );

### Return Value

Long The index of new port group instance.

### Parameters

Parameter | Type | Description
--- | --- | ---
Group | Long | Which port group to connect
Object | Object | The object to be connected to the port. For built-in Operators this object can be a X3DObject and Softimage will attempt to find the correct data underneath the X3DObject to match each port inside the PortGroup. For Self-Installed Custom Operators this should be the specific target object for the port inside the PortGroup.

### Examples

#### JScript Example

    /*

    	This example demonstrates how to connect a runtime custom operator to an object.

    */

    NewScene( null, false );

    var null1 = GetPrim( "null" );

    var null2 = GetPrim( "null" );

    // Create a runtime scripted operator and turn on debugging (logs extra information)

    var sop = XSIFactory.CreateScriptedOp( "myexpr", myexpr_Update.toString(), "JScript" );

    sop.Debug = 1;

    // Add a portgroup to read from/write to

    var group1 = sop.AddPortGroup( "MainGroup" )

    // We use an IO port because we want to blend the existing

    // transformation rather than completely replacing it

    sop.AddIOPort( null1.Kinematics.Local, "", group1.Index );

    // Add a second group with an optional port

    var group2 = sop.AddPortGroup( "SecondGroup", 0, 1 )

    sop.AddInputPort( null2.Kinematics.Local, "inputs", -1, group2.Index );

    // Connect first group.  Operator would start functioning immediately

    sop.ConnectToGroup( group1.Index, null1.Kinematics.Local );

    // Connect to the optional port

    sop.ConnectToGroup( 1, null2.Kinematics.Local);

    // This has no effect on null1

    Translate( null2, 1, -1, 1 );

    // This changes null1 rotation as well

    Rotate(null2, 90, -45, 0 ) ;

    // This operator constrains the rotation of the connected (target) object to the

    // rotation of the object connected through the second portgroup.

    function myexpr_Update( ctx, out, inlocal1, inlocal2 )

    {

    	Application.LogMessage( "myexpr_Update: " + out.Name );

    	Application.LogMessage( ""+(inlocal2) );

    	var transfo = inlocal1.Value.Transform;

    	// Is there an object connected to the 2nd group?

    	if ( ctx.Operator.GetNumInstancesInGroup( 1 ) )

    	{

    		var inlocal2 = ctx.Operator.PortAt( 0, 1, 0 );

    		// Is the port connected?

    		if ( inlocal2.IsConnected )

    		{

    			var rot = inlocal2.Value.Transform.Rotation;

    			transfo.SetRotation	( rot );

    		}

    	}

    	out.Value.Transform = transfo;

    }

### See Also

Operator.DisconnectGroup UpdateConnectOnOp