A quick guide on how to discover the bounding box of your Maya objects using Python. This is useful if you were creating a tool which handles alignment, scale or transforms based on surrounding objects.
As always, as we will be using the Maya commands library we need to import it, we’ll also use the pretty print module to display our bounding box values in a readable way.
from maya import cmds import pprint
Then define our function:
def boundingBox():
Create a couple of objects and store the names of each:
# Create a couple of objects cube = cmds.polyCube() sphere = cmds.polySphere() # Get the shapes of both objects cubeShape = cube[0] sphereShape = sphere[0]
Select both objects:
cmds.select(cubeShape, sphereShape)
Add the selected objects to a new variable:
nodes = cmds.ls(selection=True)
Create an empty list which we’ll use to store our bounding box values within our loop:
bboxes = {}
Now that we have our 2 objects stored in our nodes variable, we’ll loop through them:
for node in nodes:
And store the bounding box for each node in a new ‘bbox’ variable:
bbox = cmds.exactWorldBoundingBox(node)
Add the value of bbox into the bboxes list:
bboxes[node] = bbox
And finally we’ll print the bounding box for each node in the loop:
print node, bbox
Output:
pCube1 [-0.5, -0.5, -0.5, 0.5, 0.5, 0.5]
pSphere1 [-1.000000238418579, -1.0, -1.0000004768371582, 1.0, 1.0, 1.0000001192092896]
And if we print the bboxes list (Using the pretty print module):
print pprint.pprint(bboxes)
{u'pCube2': [-0.5, -0.5, -0.5, 0.5, 0.5, 0.5],
u'pSphere2': [-1.000000238418579,
-1.0,
-1.0000004768371582,
1.0,
1.0,
1.0000001192092896]}
These values look a bit confusing, let me explain, the values represent the min and max values:
X Min | Y Min | Z Min | X Max | Y Max | Z Max | ||
[ | -0.5 | -0.5 | -0.5 | 0.5 | 0.5 | 0.5 | ] |
For