Certain of the controller time and key functions can be called on any 3ds Max object or collection of 3ds Max objects, not just individual controllers. If called in this way, they apply recursively to all the nested controllers within those objects and on any on sub-objects and sub-controllers within those objects. In this way, they work in a manner similar to the object-level tracks in the 3ds Max Track View that allow you to manipulate keys and time for all the sub-objects and sub-controllers within them.
The time and controller functions that work this way are:
The above functions can be called on any 3ds Max object collection (such as a wild-card pathname or object set or array of objects ) and will recursively apply to all animation within those objects. If they are called on components within an object that themselves have nested controllers, they are applied to all those nested controllers - see the examples below.
An exception to the above behavior is the setTimeRange function which will be applied recursively only when a #linkToKeys argument is provided. See setTimeRange for details.
insertTime $box01.xform 0f 10f
all keys after 0f in all controllers in the xform modifier are moved by 10f
insertTime $box01 0f 10f
all keys after 0f in box01 are moved (transform, creation, modifiers)
selectKeys $box02.xform.gizmo.rotation.controller 0f 100f
selects keys in 0-100f, if controller is Euler, e.g., will select x, y and z keys
deleteTime $box* 10f 20f
delete time from frame 10 and frame 20 in all objects named $box* (works with any pathname or array of objects)
insertTime $box03.children 0f 10f
inserts time in all controllers of all children of $box03
reduceKeys $box01.modifiers 0.5 1f
applies key reductions to all controllers in all modifiers in $box01 (leaves transform and creation parameters alone)