Try this, it's an script written by Matt Lind I found in the list some time
ago.
In the last sentence there was a mistake I fixed.
(it was "grid" when it should been the parent 3d object)
Martin Yara
//=======================================================
// ML_SelectPolygonsFromSamples()
//
// Given a selection of polygon nodes (samples) on a mesh,
// select the polygons which the nodes are attached.
//=======================================================
function ML_SelectPolygonsFromSamples()
{
if ( Selection.Count <= 0 ) {
LogMessage( "Nothing selected", siError );
return(-1);
}
// Get selection
var oItem = Selection(0);
if ( oItem.Type != "sampleSubComponent" ) {
// Selection does not contain polygon nodes
LogMessage( "Invalid selection", siError );
return(-1);
}
var oPolygonNodes = oItem.SubComponent.ComponentCollection;
var oObject = oItem.SubComponent.Parent3DObject;
if ( oObject.Type != "polymsh" ) {
LogMessage( "Not a polygon mesh: " + oObject.FullName,
siError );
return(-1);
}
// build hash table of polygon nodes selected by user.
// this table will be referenced by the search.
var NbComparisons = 0; // for statistics only
var aHash = new Array();
for ( var i = 0; i < oPolygonNodes.Count; i++ ) {
var oPolygonNode = oPolygonNodes(i);
aHash[ oPolygonNode.Index ] = true;
NbComparisons++; }
// Search the mesh for polygon nodes selected by user.
// Traverse the nodes collection of each polygon in the mesh.
var NbPolygonNodes = oPolygonNodes.Count;
var aPolygonIndices = new Array();
var oPolygons = oObject.ActivePrimitive.Geometry.Polygons;
for ( var i = 0; (i < oPolygons.Count) && (NbPolygonNodes > 0); i++
) {
// Get current polygon
var oPolygon = oPolygons(i);
var oNodes = oPolygon.Nodes;
var found = false;
for ( var j = 0; (j < oNodes.Count) && (NbPolygonNodes >
0); j++ ) {
// Get current polygon node
var oNode = oNodes(j);
NbComparisons++;
// Lookup node to see if user selected it.
if ( aHash[ oNode.Index] == true ) {
// node is selected by user
found = true;
NbPolygonNodes--;
}
}
if ( found ) {
// mark polygon for selection
aPolygonIndices.push( oPolygon.Index );
}
}
// Select the polygons
Selection.SetAsText( oObject + ".poly[" + aPolygonIndices + "]" );
LogMessage( "NbComparisons: " + NbComparisons );
return;
}