From my answer herehere, you can create a bounding cube around an object:
- Select the target object and press CtrlShiftAltC > Origin to goemetry, and then press F6 and select bounds center.
With the target object selected, press ShiftS> Cursor to selected to move the cursor to the objects origin.
Add a cube to be the bounding box. It will automatically be centered at the 3D cursor, which is snapped to the target object's origin point.
Copy the Dimension and Rotation values from the target object to the bounding cube. These values are located on the Properties region (N in the 3D view):
You can quickly copy and paste values by hovering over the number field and pressing CtrlC/CtrlV accordingly.
Since this process of copying and pasting the values of each channel can be a bit tedious, you can use a quick bit of python to do this for you:
import bpy active = bpy.context.active_object selected = bpy.context.selected_objects for obj in selected: obj.dimensions = active.dimensions
- Parent the bounding box to the target object so the relative location, rotation, and scale is kept the same. You can also set the bounding cube's Draw type to Wire in Properties > Object > Display > Maximum Draw Type.
This processes could be automated in python:
import bpy
selected = bpy.context.selected_objects
for obj in selected:
#ensure origin is centered on bounding box center
bpy.ops.object.origin_set(type='ORIGIN_GEOMETRY', center='BOUNDS')
#create a cube for the bounding box
bpy.ops.mesh.primitive_cube_add()
#our new cube is now the active object, so we can keep track of it in a variable:
bound_box = bpy.context.active_object
#copy transforms
bound_box.dimensions = obj.dimensions
bound_box.location = obj.location
bound_box.rotation_euler = obj.rotation_euler
This adds a bounding box object for every selected object.