When you create an object, a transform node, a shape node, and a history node are created, among others. Select the object, and you will see that the tabs across the top of the Attribute Editor display these nodes.
The transform node has attributes that allow you to transform an object, for example, move, scale or rotate.
The history node has attributes used to create an object, for example, subdivisions, radius and so forth.
The shape node has attributes used to control the tessellation attributes of the mesh, the visibility of the object and so forth.
If you create an object using MEL; for example:
string $plane[] = `polyPlane`;
The Script Editor top tab displays the results:
// Result: pPlane1 polyPlane1 //
In other words, $plane[0] points to pPlane1 (transform node), and $plane[1] points to polyPlane1 (history node).
Shape nodes are child nodes of transform nodes. In this case, the shape node would be pPlaneShape1.
To obtain a shape node from its transform node, use the listRelatives command:
{ //Lists the transform nodes of all selected objects in the scene string $nodes[] = `ls -selection`; for ($node in $nodes) { //From each transform node, obtain its shape node and print its name string $shapes[] = `listRelatives -shapes $node`; print $shapes; } }