Count (PointLocatorData) *

Introduced

5.0

Description

Returns the number of point locators contained in the PointLocatorData as a Long.

C# Syntax

    // get accessor
    Int32 rtn = PointLocatorData.Count;

Examples

JScript Example

    /*
       This example uses PointLocatorData to find closest vertices on a polygon mesh
       within a specific radius, and then creates a cluster on these points.
    */
    NewScene(null, false);
    var root = Application.ActiveSceneRoot;
    var GridObj = root.AddGeometry("Grid", "MeshSurface");
    Translate(GridObj, 0, 0, -2.0, siRelative, siView, siObj, siXYZ);
    var GridGeom = GridObj.ActivePrimitive.Geometry;

    // Set up to closest vertex search
    GridGeom.SetupPointLocatorQueries(siClosestVertexOrKnot, GridObj.Kinematics.Global.Transform, null, -1);

    // Get all vertices within a radius of 2 units relatively to the world center
    var PositionToQuery = XSIMath.CreateVector3(0,0,0);
    var PointLocatorsWithinTwoUnits = GridGeom.GetClosestLocationsWithinRadius(PositionToQuery, 2.0);

    var VerticesString = " ";
    var ClosestVerticesArray = new Array();
    var PtLocIndexToQuery = new Array();

    for( i=0; i<PointLocatorsWithinTwoUnits.Count; i++ ) {
       // Even though the point locators have be defined to exactly match the vertex
       // positions, the search data is returned as a position on a specific triangle,
       // just as any other use of the Point Locator.  However the vertex that matches
       // can be determined because it will be weighted at 100%.

       PtLocIndexToQuery[0] = i;
       var SubTriangleVertices = GridGeom.GetTriangleVertexIndexArray(
           PointLocatorsWithinTwoUnits, PtLocIndexToQuery).toArray();
       var SubTriangleWeights = GridGeom.GetTriangleWeightArray(
           PointLocatorsWithinTwoUnits, PtLocIndexToQuery).toArray();

       var VtxIdx = SubTriangleVertices[0];
       if(SubTriangleWeights[1] > SubTriangleWeights[0] && SubTriangleWeights[1] > SubTriangleWeights[2])
           VtxIdx = SubTriangleVertices[1];
       else if(SubTriangleWeights[2] > SubTriangleWeights[0] && SubTriangleWeights[2] > SubTriangleWeights[1])
           VtxIdx = SubTriangleVertices[2];

       ClosestVerticesArray[i] = VtxIdx;
       VerticesString += VtxIdx
       if( i != PointLocatorsWithinTwoUnits.Count-1) {
           VerticesString += ", ";
       }
    }

    // Create a cluster on these vertices
    GridGeom.AddCluster(siVertexCluster, "ClosestVertices", ClosestVerticesArray);

    Application.LogMessage("There are " + PointLocatorsWithinTwoUnits.Count
              + " grid vertices in the 2 unit sphere located at the world center.");
    Application.LogMessage("These vertices are (ordered by proximity):");
    Application.LogMessage(VerticesString);

    // Expected results:
    // INFO : There are 5 grid vertices in the 2 unit sphere located at the world center.
    // INFO : These vertices are (ordered by proximity):
    // INFO :  42, 51, 41, 33, 43

See Also

PointLocatorData | Geometry | Geometry.GetClosestLocations | Geometry.GetClosestLocationsWithinRadius
Geometry.GetRaycastIntersections | Geometry.SetupPointLocatorQueries | Geometry.GetSurfacePointLocatorsFromPoints | Geometry.EvaluatePositions
Geometry.EvaluateNormals | Geometry.EvaluateClusterProperty | PolygonMesh.GetPolygonIndexArray | PolygonMesh.GetTriangleVertexIndexArray
PolygonMesh.GetTriangleNodeIndexArray | PolygonMesh.GetTriangleWeightArray | PolygonMesh.ConstructPointLocators | NurbsSurfaceMesh.GetSubSurfaceIndexArray
NurbsSurfaceMesh.GetNormalizedUVArray | NurbsSurfaceMesh.ConstructPointLocators |  |

Autodesk Softimage v7.5