Navigate (NurbsCurveCollecti on)

Introduced

3.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.

Scripting Syntax

    NurbsCurveCollection.Navigate( Navigation )

C# Syntax

    NurbsCurveCollection NurbsCurveCollection.Navigate( siNavigateComponentType in_siNavigate );

Parameters

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

Return Value

NurbsCurveCollection

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

Autodesk Softimage v7.5