## NurbsCurveCollection.Navigate

### Introduced

v3.0

### Description

Allows you to navigate through the NurbsCurves of the associated geometry. This method returns one NurbsCurve for each corresponding component in the collection. For example, if you have a NurbsCurveCollection containing 5 curves and you call this method with the direction set to siLastComponent, the returned collection will contain 5 instances of the last curve in the original NurbsCurveCollection.

### C# Syntax

    NurbsCurveCollection NurbsCurveCollection.Navigate( siNavigateComponentType in_siNavigate );

### Scripting Syntax

    oReturn = NurbsCurveCollection.Navigate( Navigation );

### Return Value

NurbsCurveCollection

### Parameters

Parameter | Type | Description
--- | --- | ---
Navigation | siNavigateComponentType | Select the direction of navigation.

### Examples

#### JScript Example

    NewScene( "", false );

    // Get a nurbs curve object

    var obj = ActiveSceneRoot.AddGeometry( "Arc", "NurbsCurve" );

    FreezeObj( obj );

    var crvlist = obj.ActivePrimitive.Geometry;

    var crv = crvlist.Curves(0);

    // Get a complete data description of the arc

    var VBdata = crv.Get2( siSiNurbs );					// returns a safearray

    var data = VBdata.toArray();					// convert the safearray to a JS array

    // For clarity, extract and store the data in separate variables

    var crtlvertices = data[0];

    var knots = data[1];

    var isclosed = data[2];

    var degree = data[3];

    var parameterization = data[4];

    // We want to make another 4 curves

    for ( times=0; times<4; times++ ){

    	// Translate every controlvertex of the new curve from 5 in x

    	for ( var i=0; i<crtlvertices.length; i=i+3 ) {

    		crtlvertices[i] = crtlvertices[i] + 5;

    	}

    	// Add a new nurbs curve using the modified data description

    	crvlist.AddCurve( crtlvertices, knots, isclosed, degree, parameterization );

    }

    // Now get the collection of all nurbs curves in the list

    var crvcoll = crvlist.Curves;

    var firstcrvs = crvcoll.Navigate( siFirstComponent );

    var fc = new Enumerator( firstcrvs ); var result = "";

    for ( ; ! fc.atEnd(); fc.moveNext() ) {

    	var crv = fc.item();

    	result += crv.Index + "\t";

    }

    LogMessage( "The associated first curves are    \t" + result );

    var lastcrvs = crvcoll.Navigate( siLastComponent );

    var lc = new Enumerator( lastcrvs ); result = ""

    for ( ; ! lc.atEnd(); lc.moveNext() ) {

    	var crv = lc.item();

    	result += crv.Index + "\t";

    }

    LogMessage( "The associated last curves are     \t" + result );

    var nextcrvs = crvcoll.Navigate( siNextComponent );

    var nc = new Enumerator( nextcrvs ); result = ""

    for ( ; ! nc.atEnd(); nc.moveNext() ) {

    	var crv = nc.item();

    	result += crv.Index + "\t";

    }

    LogMessage( "The associated next curves are     \t" + result );

    var prevcrvs = crvcoll.Navigate( siPreviousComponent );

    var pc = new Enumerator( prevcrvs ); result = ""

    for ( ; ! pc.atEnd(); pc.moveNext() ) {

    	var crv = pc.item();

    	result += crv.Index + "\t";

    }

    LogMessage( "The associated previous curves are \t" + result );

    // Expected result:

    //INFO : The associated first curves are    	0	0	0	0	0

    //INFO : The associated last curves are     	4	4	4	4	4

    //INFO : The associated next curves are     	1	2	3	4	0

    //INFO : The associated previous curves are 	4	0	1	2	3

### See Also

NurbsCurve.Navigate NurbsCurveList.Curves