def doOptions(input_width, input_divisionsType, input_divisions, input_divisionsPerUnit, input_taper, input_frontTwist, input_lengthTwist, input_upVector, input_uvScale, input_uvScaleType, input_uvPinLocation): """This is the function called when the apply or create button is clicked""" try: utils.dg.validateSelection(type='transform', min=1) curves = utils.dg.getFilteredRelatives(cmds.ls(sl=True), 'nurbsCurve', False) if len(curves) is 0: raise Exception('None of the objects you have selected are NURBS curves.') # call the command if cmds.radioButtonGrp(input_divisionsType, q=True, select=True) == 1: cmds.am_ribbon( width = cmds.floatSliderGrp(input_width, q=True, v=True), divisions = cmds.floatSliderGrp(input_divisions, q=True, v=True), taper = cmds.floatSliderGrp(input_taper, q=True, v=True), twistBase = cmds.floatSliderGrp(input_frontTwist, q=True, v=True), twistLength = cmds.floatSliderGrp(input_lengthTwist, q=True, v=True), upVector = cmds.floatFieldGrp(input_upVector, q=True, v=True), uvScale = cmds.floatSliderGrp(input_uvScale, q=True, v=True), uvGroupScale = cmds.radioButtonGrp(input_uvScaleType, q=True, select=True) - 1, uvPin = cmds.radioButtonGrp(input_uvPinLocation, q=True, select=True) - 1) else: cmds.am_ribbon( width = cmds.floatSliderGrp(input_width, q=True, v=True), divisionsPerUnit = cmds.floatSliderGrp(input_divisionsPerUnit, q=True, v=True), taper = cmds.floatSliderGrp(input_taper, q=True, v=True), twistBase = cmds.floatSliderGrp(input_frontTwist, q=True, v=True), twistLength = cmds.floatSliderGrp(input_lengthTwist, q=True, v=True), upVector = cmds.floatFieldGrp(input_upVector, q=True, v=True), uvScale = cmds.floatSliderGrp(input_uvScale, q=True, v=True), uvGroupScale = cmds.radioButtonGrp(input_uvScaleType, q=True, select=True) - 1, uvPin = cmds.radioButtonGrp(input_uvPinLocation, q=True, select=True) - 1) except: raise
def unitTest(): """A simple unit test for the am_ribbon command""" curve = cmds.curve(d=3, p=[[-3,0,-5], [-2.75,0,-3.916667], [-2.25,0,-1.75], [0,0,0], [2.25,0,1.75], [2.75,0,3.916667], [3,0,5]], k=[0,0,0,1,2,3,4,4,4]) # test create mode print '---TESTING CREATE---' ribbon = cmds.am_ribbon(curve) # test edit mode and query mode def compareVectors(listVec, tupleVec): """Return test result comparing vectors""" return listVec[0]==tupleVec[0] and listVec[1]==tupleVec[1] and listVec[2]==tupleVec[2] def verifyValues(outNum, rNode, expWid, expTap, expTwb, expTwl, expUpv, expUvs, expUvp): """Print test results""" print '%s (test %i):'%(rNode, outNum) print'\twidth: %s'%(expWid == cmds.am_ribbon(rNode, q=True, w=True)) print'\ttaper: %s'%(expTap == cmds.am_ribbon(rNode, q=True, t=True)) print'\ttwBa: %s'%(expTwb == cmds.am_ribbon(rNode, q=True, tb=True)) print'\ttwLen: %s'%(expTwl == cmds.am_ribbon(rNode, q=True, tl=True)) print'\tupVec: %s'%(compareVectors(expUpv, cmds.am_ribbon(rNode, q=True, up=True))) print'\tuvSca: %s'%(expUvs == cmds.am_ribbon(rNode, q=True, uv=True)) print'\tuvPin: %s'%(expUvp == cmds.am_ribbon(rNode, q=True, uvp=True)) print '---TESTING EDIT AND QUERY---' wid = 0.5 taper = 0.5 twistBase = -45.0 twistLength = 135.0 upVec = [0,2,0] uvScale = 2.0 uvPin = 1 cmds.am_ribbon(ribbon, e=True, w=wid, t=taper, tb=twistBase, tl=twistLength, up=upVec, uv=uvScale, uvp=uvPin) verifyValues(0, ribbon, wid, taper, twistBase, twistLength, upVec, uvScale, uvPin) div = 15 cmds.am_ribbon(ribbon, e=True, d=div) print'\tdivs: %s'%(div == cmds.am_ribbon(ribbon, q=True, d=True)) dpu = 2.5 cmds.am_ribbon(ribbon, e=True, dp=dpu) print'\tdpu: %s'%(dpu - cmds.am_ribbon(ribbon, q=True, dp=True) < 0.01)
def verifyValues(outNum, rNode, expWid, expTap, expTwb, expTwl, expUpv, expUvs, expUvp): """Print test results""" print '%s (test %i):'%(rNode, outNum) print'\twidth: %s'%(expWid == cmds.am_ribbon(rNode, q=True, w=True)) print'\ttaper: %s'%(expTap == cmds.am_ribbon(rNode, q=True, t=True)) print'\ttwBa: %s'%(expTwb == cmds.am_ribbon(rNode, q=True, tb=True)) print'\ttwLen: %s'%(expTwl == cmds.am_ribbon(rNode, q=True, tl=True)) print'\tupVec: %s'%(compareVectors(expUpv, cmds.am_ribbon(rNode, q=True, up=True))) print'\tuvSca: %s'%(expUvs == cmds.am_ribbon(rNode, q=True, uv=True)) print'\tuvPin: %s'%(expUvp == cmds.am_ribbon(rNode, q=True, uvp=True))
def verifyValues(outNum, rNode, expWid, expTap, expTwb, expTwl, expUpv, expUvs, expUvp): """Print test results""" print '%s (test %i):' % (rNode, outNum) print '\twidth: %s' % (expWid == cmds.am_ribbon(rNode, q=True, w=True)) print '\ttaper: %s' % (expTap == cmds.am_ribbon(rNode, q=True, t=True)) print '\ttwBa: %s' % (expTwb == cmds.am_ribbon(rNode, q=True, tb=True)) print '\ttwLen: %s' % (expTwl == cmds.am_ribbon(rNode, q=True, tl=True)) print '\tupVec: %s' % (compareVectors( expUpv, cmds.am_ribbon(rNode, q=True, up=True))) print '\tuvSca: %s' % (expUvs == cmds.am_ribbon(rNode, q=True, uv=True)) print '\tuvPin: %s' % (expUvp == cmds.am_ribbon( rNode, q=True, uvp=True))
def unitTest(): """A simple unit test for the am_ribbon command""" curve = cmds.curve(d=3, p=[[-3, 0, -5], [-2.75, 0, -3.916667], [-2.25, 0, -1.75], [0, 0, 0], [2.25, 0, 1.75], [2.75, 0, 3.916667], [3, 0, 5]], k=[0, 0, 0, 1, 2, 3, 4, 4, 4]) # test create mode print '---TESTING CREATE---' ribbon = cmds.am_ribbon(curve) # test edit mode and query mode def compareVectors(listVec, tupleVec): """Return test result comparing vectors""" return listVec[0] == tupleVec[0] and listVec[1] == tupleVec[ 1] and listVec[2] == tupleVec[2] def verifyValues(outNum, rNode, expWid, expTap, expTwb, expTwl, expUpv, expUvs, expUvp): """Print test results""" print '%s (test %i):' % (rNode, outNum) print '\twidth: %s' % (expWid == cmds.am_ribbon(rNode, q=True, w=True)) print '\ttaper: %s' % (expTap == cmds.am_ribbon(rNode, q=True, t=True)) print '\ttwBa: %s' % (expTwb == cmds.am_ribbon(rNode, q=True, tb=True)) print '\ttwLen: %s' % (expTwl == cmds.am_ribbon(rNode, q=True, tl=True)) print '\tupVec: %s' % (compareVectors( expUpv, cmds.am_ribbon(rNode, q=True, up=True))) print '\tuvSca: %s' % (expUvs == cmds.am_ribbon(rNode, q=True, uv=True)) print '\tuvPin: %s' % (expUvp == cmds.am_ribbon( rNode, q=True, uvp=True)) print '---TESTING EDIT AND QUERY---' wid = 0.5 taper = 0.5 twistBase = -45.0 twistLength = 135.0 upVec = [0, 2, 0] uvScale = 2.0 uvPin = 1 cmds.am_ribbon(ribbon, e=True, w=wid, t=taper, tb=twistBase, tl=twistLength, up=upVec, uv=uvScale, uvp=uvPin) verifyValues(0, ribbon, wid, taper, twistBase, twistLength, upVec, uvScale, uvPin) div = 15 cmds.am_ribbon(ribbon, e=True, d=div) print '\tdivs: %s' % (div == cmds.am_ribbon(ribbon, q=True, d=True)) dpu = 2.5 cmds.am_ribbon(ribbon, e=True, dp=dpu) print '\tdpu: %s' % (dpu - cmds.am_ribbon(ribbon, q=True, dp=True) < 0.01)
def doOptions(input_width, input_divisionsType, input_divisions, input_divisionsPerUnit, input_taper, input_frontTwist, input_lengthTwist, input_upVector, input_uvScale, input_uvScaleType, input_uvPinLocation): """This is the function called when the apply or create button is clicked""" try: utils.dg.validateSelection(type='transform', min=1) curves = utils.dg.getFilteredRelatives(cmds.ls(sl=True), 'nurbsCurve', False) if len(curves) is 0: raise Exception( 'None of the objects you have selected are NURBS curves.') # call the command if cmds.radioButtonGrp(input_divisionsType, q=True, select=True) == 1: cmds.am_ribbon(width=cmds.floatSliderGrp(input_width, q=True, v=True), divisions=cmds.floatSliderGrp(input_divisions, q=True, v=True), taper=cmds.floatSliderGrp(input_taper, q=True, v=True), twistBase=cmds.floatSliderGrp(input_frontTwist, q=True, v=True), twistLength=cmds.floatSliderGrp(input_lengthTwist, q=True, v=True), upVector=cmds.floatFieldGrp(input_upVector, q=True, v=True), uvScale=cmds.floatSliderGrp(input_uvScale, q=True, v=True), uvGroupScale=cmds.radioButtonGrp( input_uvScaleType, q=True, select=True) - 1, uvPin=cmds.radioButtonGrp( input_uvPinLocation, q=True, select=True) - 1) else: cmds.am_ribbon(width=cmds.floatSliderGrp(input_width, q=True, v=True), divisionsPerUnit=cmds.floatSliderGrp( input_divisionsPerUnit, q=True, v=True), taper=cmds.floatSliderGrp(input_taper, q=True, v=True), twistBase=cmds.floatSliderGrp(input_frontTwist, q=True, v=True), twistLength=cmds.floatSliderGrp(input_lengthTwist, q=True, v=True), upVector=cmds.floatFieldGrp(input_upVector, q=True, v=True), uvScale=cmds.floatSliderGrp(input_uvScale, q=True, v=True), uvGroupScale=cmds.radioButtonGrp( input_uvScaleType, q=True, select=True) - 1, uvPin=cmds.radioButtonGrp( input_uvPinLocation, q=True, select=True) - 1) except: raise