It's possible with a little addon:
bl_info = {
"name": "Cycle Cameras",
"author": "CoDEmanX",
"version": (1, 0),
"blender": (2, 65, 0),
"location": "View3D > Ctrl + Shift + Left/Right Arrow",
"description": "Switch scene camera to next or previous camera object",
"warning": "",
"wiki_url": "",
"category": "3D View"}
import bpy
class VIEW3D_OT_cycle_cameras(bpy.types.Operator):
"""Cycle through available cameras"""
bl_idname = "view3d.cycle_cameras"
bl_label = "Cycle Cameras"
bl_options = {'REGISTER', 'UNDO'}
direction = bpy.props.EnumProperty(
name="Direction",
items=(
('FORWARD', "Forward", "Next camera (alphabetically)"),
('BACKWARD', "Backward", "Previous camera (alphabetically)"),
),
default='FORWARD'
)
def execute(self, context):
scene = context.scene
cam_objects = [ob for ob in bpy.data.objects if ob.type == 'CAMERA']
if len(cam_objects) == 0:
return {'CANCELLED'}
try:
idx = cam_objects.index(scene.camera)
new_idx = (idx + 1 if self.direction == 'FORWARD' else idx - 1) % len(cam_objects)
except ValueError:
new_idx = 0
context.scene.camera = cam_objects[new_idx]
return {'FINISHED'}
addon_keymaps = []
def register():
bpy.utils.register_module(__name__)
wm = bpy.context.window_manager
kc = wm.keyconfigs.addon
if kc:
km = wm.keyconfigs.addon.keymaps.new(name='3D View', space_type='VIEW_3D')
kmi = km.keymap_items.new(VIEW3D_OT_cycle_cameras.bl_idname, 'RIGHT_ARROW', 'PRESS', ctrl=True, shift=True)
kmi.properties.direction = 'FORWARD'
addon_keymaps.append((km, kmi))
kmi = km.keymap_items.new(VIEW3D_OT_cycle_cameras.bl_idname, 'LEFT_ARROW', 'PRESS', ctrl=True, shift=True)
kmi.properties.direction = 'BACKWARD'
addon_keymaps.append((km, kmi))
def unregister():
for km, kmi in addon_keymaps:
km.keymap_items.remove(kmi)
addon_keymaps.clear()
bpy.utils.unregister_module(__name__)
if __name__ == "__main__":
register()
An operator to cycle through available camera objects is bound to CtrlShiftLeft Arrow to go to (alphabetically) previous camera and CtrlShiftRight Arrow to go to next camera.