The pick structure output of the Pick tool is a Field and the picked points are listed in the "positions" component of that Field. Other information may be accessed using the pick-assistance routines listed here. These allow you to query the pick structure and to traverse a picked Object. (See 9.2 , "ShowPick Module Example--Using Color to Show a Picked Object".)
It is recommended that you use the pick-assistance routines to manipulate picked Objects and pick structures, since the pick structure is undefined internally and may change in future.
Error DXGetPickPoint() | Returns the pick point in world coordinates. See DXGetPickPoint. |
Error DXQueryPickCount() | Returns the number of picks resulting from a poke. See "Example". See DXQueryPickCount. |
Error DXQueryPickPath() | Returns information about the pick path. See "Example". See DXQueryPickPath. |
Error DXQueryPokeCount() | Returns the number of pokes. See "Example". See DXQueryPokeCount. |
Error DXTraversePickPath() | Returns the subObject of the current Object selected by a pick path. See "Example". See DXTraversePickPath. |
The following code segment finds every picked vertex. (The comment at bottom is left as an exercise for the user.)
DXQueryPokeCount(pickField, &nPokes);
for (poke = 0; poke < nPokes; poke++)
{
DXQueryPickCount(pickField, poke, &nPicks);
for (pick = 0; pick < nPicks; pick++)
{
DXQueryPickPath(pickField, poke, pick,
&pathLen, &path, &elementId, &vertexId);
current = dataObject;
matrix = Identity;
for (i = 0; i < pathLen; i++)
{
current = DXTraversePickPath(current, path[i], &matrix);
if (current == NULL)
goto error;
}
/* now manipulate vertex #vertexId in field current. */
}
}