# jooRequestedStackOneXform.py 0.1
#
# Authors: Janne 'Joojaa' Ojala
# Testing: None
# Request: Pamela Case
# Licence: Creative Commons, Attribution, Share Alike
# About:
#
# Usage:
# import contained module and run:
#
# jooRequestedStackOneXform('y+',5)
#
# other possible directions are, x+, x-, y+, y-, z+ ,z-
#
# Changelist:
# 24.01.2012 - Request
import maya.cmds as cmd
def jooListMul(a, b):
ret = []
for i in range(len(a)):
ret.append(a[i]*b[i])
return ret
def jooListSub(a, b):
ret = []
for i in range(len(a)):
ret.append(a[i]-b[i])
return ret
def jooMoveOneBB(dir):
options = {'x': [1,0,0], 'y': [0,1,0], 'z': [0,0,1]}
dvec = options[dir[0]]
bb = cmd.xform(q=1, bb=1)
if (dir[1] == '-'):
tvec = jooListSub(bb[:3],bb[3:])
else:
tvec = jooListSub(bb[3:],bb[:3])
cmd.move(r=1,*jooListMul(tvec, dvec))
def jooRequestedStackOneXform(dir, num):
if not len(cmd.ls(sl=1)) == 1:
raise Exception('select one object or group')
for i in range(num-1):
cmd.duplicate()
jooMoveOneBB(dir)
tough you probably get things faster done with hitting x down drag and then shift+D a few times. No scripting needed.