DisconnectGroup (Operator)

Introduced

4.0

Description

Disconnects the object connected to a PortGroup instance.

Scripting Syntax

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

C# Syntax

    Operator.DisconnectGroup( Int32 in_group, Int32 in_instance, Boolean in_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

Autodesk Softimage v7.5