## Operator.DisconnectGroup

### Introduced

v4.0

### Description

Disconnects the object connected to a PortGroup instance.

### C# Syntax

    Operator.DisconnectGroup( Int32 in_group, Int32 in_instance, Boolean in_force );

### Scripting Syntax

    Operator.DisconnectGroup( Group, Instance, [Force] );

### Parameters

Parameter | Type | Description
--- | --- | ---
Group | Long | Which port group to disconnect
Instance | Long | Port group index to which the object is connected.
Force | Boolean | Force the disconnection of the object even if the port is not optional. Default Value: False

### Examples

#### JScript Example

    /*

    	This example demonstrates how to disconnect an object from a group in a runtime custom operator.

    */

    NewScene( null, false );

    var null1 = GetPrim( "null" );

    var null2 = GetPrim( "null" );

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

    sop.Debug = 1;

    var group1 = sop.AddPortGroup( "MainGroup" );

    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, "", group2.Index, -1, siOptionalInputPort );

    // Connect operator

    sop.Connect( null1 + ";" + null2 );

    // null2 will rotate with null1

    Rotate( null2, 90 );

    // Disconnect null2 from second port group

    sop.DisconnectGroup( group2.Index, 0 );

    // null1 is no longer constrained

    Rotate( null2, 180 );

    // 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 an object connected to this group?

    	if ( ctx.Operator.GetNumInstancesInGroup( 1 ) )

    	{

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

    		// Is the port connected?

    		if ( inlocal2.IsConnected )

    		{

    			var rot = XSIMath.CreateRotation();

    			inlocal2.Value.Transform.GetRotation(rot);

    			transfo.SetRotation( rot );

    		}

    	}

    	out.Value.Transform = transfo;

    }

    // Expected results:

    //INFO : 4000 - myexpr<238> Evaluate frame(sec)=0.033367, Outlocal(null.kine.local)

    //INFO : myexpr_Update: Outlocal

    //INFO : undefined

### See Also

Operator.ConnectToGroup