Softimage SDK Programmer's Guide > Plug-in Development > Working with Return Values and Output Arguments > Examples of Handling Return Values and Output Arguments >

# JScript Example: Using the Method Ô2' Workaround

The VBScript example above can be rewritten in JScript using the NurbsCurve.Get2 method, which returns a complete data description of the Nurbs Curve using an array of output values:

    var oSpiral = ActiveSceneRoot.AddGeometry( "Arc", "NurbsCurve" );
    var vbOutput = new VBArray( oSpiral.ActivePrimitive.Geometry.Curves(0).Get2( siSINurbs ) );
    var aOutput = vbOutput.toArray();

    var vbCtrlPts = new VBArray( aOutput[0] );
    var vbKnots = new VBArray( aOutput[1] );
    var bClosed = aOutput[2];
    var lDegree = aOutput[3];
    var eParFactor = aOutput[4];

    LogMessage( "INFORMATION FOR " + oSpiral + ":" );
    LogMessage( "===================================================================" );
    LogMessage( "Control Points:" );
    for ( i = 0; i < vbCtrlPts.ubound(2); i++ )
    {
    	LogMessage( "x = " + vbCtrlPts.getItem(0,i) +
    			"; y = " + vbCtrlPts.getItem(1,i) +
    			"; z = " + vbCtrlPts.getItem(2,i)
    			);
    }

    LogMessage( "---------------------------------------------------------------" );
    LogMessage( "Knots:" );
    var sKnotArray = "";
    for ( j = 0; j < vbKnots.ubound(1); j++ )
    {
    	if ( j == 0 )
    	{
    		sKnotArray = vbKnots.getItem(j).toString(10);
    	}
    	else
    	{
    		sKnotArray = sKnotArray + ", " + vbKnots.getItem(j).toString(10);
    	}
    }
    LogMessage( sKnotArray );

    LogMessage( "---------------------------------------------------------------" );
    if ( bClosed )
    {
    	LogMessage( oSpiral + " is closed." );
    }
    else
    {
    	LogMessage( oSpiral + " is not closed." );
    }

    LogMessage( "---------------------------------------------------------------" );
    LogMessage( "Degree of " + oSpiral + " is " + lDegree + "." );

    LogMessage( "---------------------------------------------------------------" );
    switch( eParFactor )
    {
    	case siUniformParameterization :
    		LogMessage( oSpiral + "'s knot parameterization is uniform." );
    		break;
    	case siNonUniformParameterization :
    		LogMessage( oSpiral + "'s knot parameterization is non-uniform." );
    		break;
    	case siChordLengthParameterization :
    		LogMessage( oSpiral + "'s knot parameterization is chord-length." );
    		break;
    	default :
    		LogMessage( oSpiral + "'s knot parameterization is centripetal." );
    }

    // Output:
    //INFO : "INFORMATION FOR arc:"
    //INFO : "================================================================="
    //INFO : "Control Points:"
    //INFO : "x = 0; y = 4; z = 0"
    //INFO : "x = 0.13092598458093568; y = 4; z = 0"
    //INFO : "x = 0.39268664586056534; y = 3.9871386274509976; z = 0"
    //INFO : "x = 0.7816191305260763; y = 3.9294482440542317; z = 0"
    //INFO : "x = 1.1630045604222143; y = 3.833915126009607; z = 0"
    //INFO : "x = 1.5331948818921716; y = 3.701459309480353; z = 0"
    //INFO : "x = 1.888618288771264; y = 3.5333564163398594; z = 0"
    //INFO : "x = 2.22585364684673; y = 3.3312253695207223; z = 0"
    //INFO : "x = 2.541652716312285; y = 3.0970128008383315; z = 0"
    //INFO : "x = 2.832974307831633; y = 2.83297430783163; z = 0"
    //INFO : "x = 3.097012800838334; y = 2.541652716312281; z = 0"
    //INFO : "x = 3.331225369520725; y = 2.225853646846725; z = 0"
    //INFO : "x = 3.5333564163398616; y = 1.8886182887712594; z = 0"
    //INFO : "x = 3.701459309480355; y = 1.5331948818921681; z = 0"
    //INFO : "x = 3.8339151260096073; y = 1.1630045604222107; z = 0"
    //INFO : "x = 3.9294482440542317; y = 0.7816191305260733; z = 0"
    //INFO : "x = 3.987138627450999; y = 0.39268664586056134; z = 0"
    //INFO : "x = 4; y = 0.13092598458093568; z = 0"
    //INFO : "-----------------------------------------------------------------"
    //INFO : "Knots:"
    //INFO : "0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 16"
    //INFO : "-----------------------------------------------------------------"
    //INFO : "arc is not closed."
    //INFO : "-----------------------------------------------------------------"
    //INFO : "Degree of arc is 3."
    //INFO : "-----------------------------------------------------------------"
    //INFO : "arc's knot parameterization is non-uniform."

Important

If the function has a return value explicitly defined, you cannot extract any output arguments from the return value. This is because the function is not returning an output argument array, but a specific value. You can check the Return Value section in the reference documentation to see whether it uses an explicit return value and what that value is.