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