def nwDeleteEmptyTransforms(): ''' This script deletes empty transforms including empty groups ''' transforms = cmds.ls(type='transform') deleteList = [] for tran in transforms: if cmds.nodeType(tran) == 'transform': children = cmds.listRelatives(tran, c=True) connections = cmds.listConnections(tran) if connections == None: if children == None: deleteList.append(tran) cmds.delete(tran) if deleteList: totalTrans = int(len(deleteList)) nmGUI_func.nmGUI_runCheck( 'complete', '{0} Empty transforms/groups deleted. See script editor for list.'. format(totalTrans)) print '\n'.join(deleteList) print totalTrans, 'Empty transforms/groups deleted' else: nmGUI_func.nmGUI_runCheck('complete', 'No empty transforms/groups detected.')
def captureManipPiv(): mmc = cmds.manipMoveContext() cmds.setToolTo(mmc) manipLoc = cmds.manipMoveContext(mmc, q=True, p=True) rotObj = cmds.xform(q=True, ws=True, ro=True) posCopy = cmds.xform(q=True, ws=True, t=True) scaleCopy = cmds.xform(q=True, ws=True, s=True) manipPos = [] transObj = [] scaleObj = [] if manipLoc: for num in manipLoc: numFloat = float(num) numRound = round(numFloat,5) manipPos.append(numRound) cmds.setToolTo('moveSuperContext') cmds.deleteUI(mmc) for trans in posCopy: posFloat = float(trans) posRound = round(posFloat,5) transObj.append(posRound) for scale in scaleCopy: scaleFloat = float(scale) scaleRound = round(scaleFloat,5) scaleObj.append(scaleRound) # insert field values cmds.floatFieldGrp('nwSAK_manipPivot',e=True,v1=manipPos[0],v2=manipPos[1],v3=manipPos[2]) cmds.floatFieldGrp('nwSAK_transPivots',e=True,v1=transObj[0],v2=transObj[1],v3=transObj[2]) cmds.floatFieldGrp('nwSAK_rotPivots',e=True,v1=rotObj[0],v2=rotObj[1],v3=rotObj[2]) cmds.floatFieldGrp('nwSAK_scalePivots',e=True,v1=scaleObj[0],v2=scaleObj[1],v3=scaleObj[2]) # line else: nmGUI_func.nmGUI_runCheck('error','No pivot object(s) selected')
def nmOuterSpace_setSel(): ''' this function will set the current selected objects under the given namespace. ''' # sel sel = cmds.ls(sl=True) # get curSel = cmds.optionMenuGrp('nmSAK_namespaceOMG', q=True, sl=True) if (curSel == 1): curName = ':' else: curName = cmds.optionMenuGrp('nmSAK_namespaceOMG', q=True, v=True) + ':' # check if (len(sel) > 0): # set for stuff in sel: split = stuff.split(':')[-1] cmds.rename(stuff, curName + split) # line nmGUI_func.nmGUI_runCheck( 'complete', 'Selected objects have been set to "' + curName + '".') else: # line nmGUI_func.nmGUI_runCheck('error', 'Please select one or more objects.')
def nmHistory_delete(): ''' this function deletes history on the selected objects. options are all history or non-deformer history. ''' # sel sel = cmds.ls(sl=True) # get deformer check box check = cmds.checkBox('nmSAK_hisCHBX', q=True, v=True) # check if (len(sel) > 0): for stuff in sel: # check for non def if (check == 1): try: mel.eval('doBakeNonDefHistory( 1,{"prePost"});') except: pass else: cmds.delete(stuff, ch=True) # line nmGUI_func.nmGUI_runCheck('complete', 'History has been deleted.') else: # line nmGUI_func.nmGUI_runCheck('error', 'Please select one or more objects.')
def nmManipulator_world(): ''' this function will set all the transform tools to world space. ''' cmds.manipMoveContext('Move', e=True, mode=2) cmds.manipRotateContext('Rotate', e=True, mode=1) try: cmds.manipScaleContext('Scale', e=True, mode=2) except: pass # line nmGUI_func.nmGUI_runCheck( 'complete', 'Manipulator tools have been set to world space.')
def nmMrFreeze_freeze(): ''' this function will freeze transforms on the selected objects given the checked options. ''' # get trans trans = cmds.checkBoxGrp('nmSAK_frzCBG', q=True, v1=True) # get rot rot = cmds.checkBoxGrp('nmSAK_frzCBG', q=True, v2=True) # get scl scl = cmds.checkBoxGrp('nmSAK_frzCBG', q=True, v3=True) # sel sel = cmds.ls(sl=True) ### check if (trans == 1): tr = True else: tr = False if (rot == 1): ro = True else: ro = False if (scl == 1): sc = True else: sc = False # check if (len(sel) > 0): for stuff in sel: if not ((cmds.getAttr(stuff + '.tx', l=True)) and (cmds.getAttr(stuff + '.ty', l=True)) and (cmds.getAttr(stuff + '.tz', l=True))): cmds.makeIdentity(stuff, a=True, t=tr, r=0, s=0, n=0) if not ((cmds.getAttr(stuff + '.rx', l=True)) and (cmds.getAttr(stuff + '.ry', l=True)) and (cmds.getAttr(stuff + '.rz', l=True))): cmds.makeIdentity(stuff, a=True, t=0, r=ro, s=0, n=0) if not ((cmds.getAttr(stuff + '.sx', l=True)) and (cmds.getAttr(stuff + '.sy', l=True)) and (cmds.getAttr(stuff + '.sz', l=True))): cmds.makeIdentity(stuff, a=True, t=0, r=0, s=sc, n=0) # line nmGUI_func.nmGUI_runCheck('complete', 'Transforms have been frozen.') else: # line nmGUI_func.nmGUI_runCheck('error', 'Please select one or more objects.')
def nmMrFreeze_zero(): ''' this function zeros out the transforms on the selected objects given the checked options. ''' # get trans trans = cmds.checkBoxGrp('nmSAK_frzCBG', q=True, v1=True) # get rot rot = cmds.checkBoxGrp('nmSAK_frzCBG', q=True, v2=True) # get scl scl = cmds.checkBoxGrp('nmSAK_frzCBG', q=True, v3=True) # sel sel = cmds.ls(sl=True) # check if (len(sel) > 0): # cycle for stuff in sel: ### check if (trans == 1): if (cmds.getAttr(stuff + '.tx', l=True) == 0): cmds.setAttr(stuff + '.tx', 0) if (cmds.getAttr(stuff + '.ty', l=True) == 0): cmds.setAttr(stuff + '.ty', 0) if (cmds.getAttr(stuff + '.tz', l=True) == 0): cmds.setAttr(stuff + '.tz', 0) if (rot == 1): if (cmds.getAttr(stuff + '.rx', l=True) == 0): cmds.setAttr(stuff + '.rx', 0) if (cmds.getAttr(stuff + '.ry', l=True) == 0): cmds.setAttr(stuff + '.ry', 0) if (cmds.getAttr(stuff + '.rz', l=True) == 0): cmds.setAttr(stuff + '.rz', 0) if (scl == 1): if (cmds.getAttr(stuff + '.sx', l=True) == 0): cmds.setAttr(stuff + '.sx', 1) if (cmds.getAttr(stuff + '.sy', l=True) == 0): cmds.setAttr(stuff + '.sy', 1) if (cmds.getAttr(stuff + '.sz', l=True) == 0): cmds.setAttr(stuff + '.sz', 1) # line nmGUI_func.nmGUI_runCheck('complete', 'Transforms have been zeroed out.') else: # line nmGUI_func.nmGUI_runCheck('error', 'Please select one or more objects.')
def nmCenter_center(): ''' this functions centers the rotation and scale pivots on the selected objects. ''' # sel sel = cmds.ls(sl=True) # check if (len(sel) > 0): for stuff in sel: cmds.xform(stuff, cp=True) # line nmGUI_func.nmGUI_runCheck('complete', 'Pivots have been centered.') else: # line nmGUI_func.nmGUI_runCheck('error', 'Please select one or more objects.')
def nwDeleteUnknown(): unknowns = cmds.ls(type='unknown') deleteUnknown = [] unknownRef = [] if unknowns: for unknown in unknowns: ref = cmds.referenceQuery(unknown, isNodeReferenced=True) if ref == False: cmds.lockNode(unknowns, lock=0) deleteUnknown.append(unknown) cmds.delete(unknown) else: unknownRef.append(unknown) if unknownRef: totalUnknownRef = int(len(unknownRef)) print '\n'.join(unknownRef) print totalUnknownRef, 'Unknown nodes are referenced and NOT removed' if deleteUnknown: totalUnknown = int(len(deleteUnknown)) nmGUI_func.nmGUI_runCheck( 'error', '{0} Unknown nodes deleted. Referenced file(s) contain unknown node(s)' .format(totalUnknown)) else: nmGUI_func.nmGUI_runCheck( 'error', 'Referenced file(s) contain {0} unknown node(s)'.format( totalUnknownRef)) elif deleteUnknown: totalUnknown = int(len(deleteUnknown)) print '\n'.join(deleteUnknown) print totalUnknown, 'Empty transforms/groups deleted' if unknownRef: nmGUI_func.nmGUI_runCheck( 'error', '{0} Unknown nodes deleted. Referenced file(s) contain unknown node(s)' .format(totalUnknown)) else: nmGUI_func.nmGUI_runCheck( 'complete', '{0} Unknown nodes deleted. See script editor for list.'. format(totalUnknown)) else: nmGUI_func.nmGUI_runCheck('complete', 'No unknown nodes detected.')
def nmOuterSpace_remove(): ''' this function will remove all namespaces from the selected objects. ''' # sel sel = cmds.ls(sl=True) # check if (len(sel) > 0): for stuff in sel: split = stuff.split(':')[-1] cmds.rename(stuff, ':' + split) # line nmGUI_func.nmGUI_runCheck( 'complete', 'Namespaces have been removed from the selected objects.') else: # line nmGUI_func.nmGUI_runCheck('error', 'Please select one or more objects.')
def nmRenamer_suffix(): ''' this function will add a prefix to the selected objects. ''' # sel sel = cmds.ls(sl=True) sel.sort() sel.reverse() # get suffix = cmds.textFieldGrp('nmSAK_renSuffixTFG', q=True, tx=True) # check if (len(sel) > 0): if not (suffix == ''): for stuff in sel: new = stuff.split('|')[-1] cmds.rename(stuff, new + suffix) # line nmGUI_func.nmGUI_runCheck( 'complete', 'Suffix "' + suffix + '" has been added.') else: # line nmGUI_func.nmGUI_runCheck( 'error', 'Please specify a string to be added as a suffix.') else: # line nmGUI_func.nmGUI_runCheck('error', 'Please select one or more objects.')
def nwDeleteUnusedIntermediates(): ''' This script deletes orphan intermediate nodes with no connections (unused) ''' # get orphan intermediate nodes: IOnodes = cmds.ls(type='mesh', io=True) unused = [] for nodes in IOnodes: if not cmds.listConnections(nodes): unused.append(nodes) cmds.delete(nodes) if (unused): totalOrphans = int(len(unused)) nmGUI_func.nmGUI_runCheck( 'complete', '{0} Unused intermediate nodes deleted. See script editor for list.' .format(totalOrphans)) print '\n'.join(unused) print totalOrphans, 'Orphan orig shapes deleted' else: nmGUI_func.nmGUI_runCheck('complete', 'No unused intermediate nodes detected.')
def nwKilltheTURTLE(): tShelf = cmds.shelfLayout('TURTLE', exists=True) turtle = cmds.pluginInfo('Turtle.mll', loaded=True, q=True) if turtle: types = cmds.pluginInfo('Turtle.mll', dependNode=True, q=True) nodes = cmds.ls(type=types, long=True) if nodes: cmds.lockNode(nodes, lock=False) cmds.delete(nodes) cmds.flushUndo() cmds.unloadPlugin('Turtle.mll') else: nmGUI_func.nmGUI_runCheck('error', 'TURTLE already unloaded') if tShelf: mel.eval('deleteShelfTab "TURTLE";') nmGUI_func.nmGUI_runCheck('complete', 'TURTLE unloaded and shelf deleted.') else: nmGUI_func.nmGUI_runCheck('error', 'TURTLE shelf already deleted')
def nmOuterSpace_create(): ''' this function will add the given string as a namespace to the scene. ''' # get namespace = cmds.textFieldGrp('nmSAK_genNameSpcTFG', q=True, tx=True) # create if not (namespace == ''): if not (cmds.namespace(ex=namespace)): cmds.namespace(add=namespace) nmGUI_func.nmGUI_runCheck( 'complete', 'Namespace "' + namespace + '" has been created.') nmOuterSpace_refresh() else: # line nmGUI_func.nmGUI_runCheck('error', 'Namespace already exists.') else: # line nmGUI_func.nmGUI_runCheck( 'error', 'Please specify a namespace string to be created.')
def nmGrouper_ungroup(): ''' This function will attempt to ungroup the selected items. ''' # sel sel = cmds.ls(sl=True) if (len(sel) > 0): # ungroup selected for stuff in sel: if (cmds.listRelatives(stuff, c=True)): cmds.ungroup(stuff) # line nmGUI_func.nmGUI_runCheck( 'complete', 'Selected objects have been ungrouped.') else: # line nmGUI_func.nmGUI_runCheck( 'error', 'Please select a parent node to ungroup.') else: # line nmGUI_func.nmGUI_runCheck('error', 'Please select one or more objects.')
def nmRenamer_searchReplace(): ''' this function will search through the selected objects and find the search string and replace it with the replace string. also works with having the replace blank so you can get rid of strings you dont want or need in the selected. ''' # sel sel = cmds.ls(sl=True) sel.sort() sel.reverse() # get search = cmds.textFieldGrp('nmSAK_renSearchTFG', q=True, tx=True) replace = cmds.textFieldGrp('nmSAK_renReplaceTFG', q=True, tx=True) searLen = len(search) # check if (len(sel) > 0): if not (search == ''): for stuff in sel: new = stuff.split('|')[-1] if search in new: start = new.find(search) after = start + searLen # rename cmds.rename(stuff, new[:start] + replace + new[after:]) # line nmGUI_func.nmGUI_runCheck( 'complete', '"' + search + '" has been replaced with "' + replace + '".') else: # line nmGUI_func.nmGUI_runCheck( 'error', 'Please specify a search string to be replaced.') else: # line nmGUI_func.nmGUI_runCheck('error', 'Please select one or more objects.')
def nmRenamer_rename(): ''' this function will rename the selected objects given the start counter and the padding. ''' # sel sel = cmds.ls(sl=True, l=True) numRange = [] # get name = cmds.textFieldGrp('nmSAK_renNameTFG', q=True, tx=True) start = cmds.intFieldGrp('nmSAK_renStartIFG', q=True, v1=True) pad = cmds.intFieldGrp('nmSAK_renPadIFG', q=True, v1=True) count = '%0' + str(pad) + 'd' # rename if (len(sel) > 0): if not (name == ''): for stuff in sel: numRange.append(start) start += 1 i = 0 while (i < len(numRange)): sel = cmds.ls(sl=True, l=True) cmds.rename(sel[i], name + count % numRange[i]) i += 1 # line nmGUI_func.nmGUI_runCheck( 'complete', 'Selected objects have been renamed "' + name + '*".') else: # line nmGUI_func.nmGUI_runCheck('error', 'Please specify a rename string.') else: # line nmGUI_func.nmGUI_runCheck('error', 'Please select one or more objects.')
def nwAEcameraSetup(): #get selected ghOstcam control camSel = cmds.listRelatives(ad=1, typ='camera') # get/select camera transforms if camSel: cmds.select(camSel) gCam = cmds.listRelatives(p=1) cmds.select(gCam) # duplicate for AE export cams newCam = cmds.duplicate(gCam, name="camera" + "0#") for nCam in newCam: cmds.setAttr(nCam + '.t', l=False) cmds.setAttr(nCam + '.r', l=False) cmds.setAttr(nCam + '.s', l=False) cmds.setAttr(nCam + '.tx', l=False) cmds.setAttr(nCam + '.rx', l=False) cmds.setAttr(nCam + '.sx', l=False) cmds.setAttr(nCam + '.ty', l=False) cmds.setAttr(nCam + '.ry', l=False) cmds.setAttr(nCam + '.sy', l=False) cmds.setAttr(nCam + '.tz', l=False) cmds.setAttr(nCam + '.rz', l=False) cmds.setAttr(nCam + '.sz', l=False) cmds.parent(newCam, world=True) # loop i = 0 # parent constrain new duplicate cams to respective ghOstCam for cam in newCam: cmds.parentConstraint(gCam[i], cam) gCamShape = cmds.listRelatives(gCam[i], shapes=True) camShape = cmds.listRelatives(cam, shapes=True) cmds.connectAttr(gCamShape[0] + '.focalLength', camShape[0] + '.focalLength') cmds.connectAttr(gCamShape[0] + '.centerOfInterest', camShape[0] + '.centerOfInterest') i += 1 # get time slider for bake minTime = cmds.playbackOptions(query=True, min=True) maxTime = cmds.playbackOptions(query=True, max=True) timeSlider = [int(minTime), int(maxTime)] # bake animation on cams cmds.bakeResults(newCam, simulation=True, time=(timeSlider[0], timeSlider[1]), disableImplicitControl=True, preserveOutsideKeys=True, sparseAnimCurveBake=False, removeBakedAttributeFromLayer=False, removeBakedAnimFromLayer=False, bakeOnOverrideLayer=False, minimizeRotation=True, controlPoints=False, shape=True) # delete constraints constraints = [ 'pointConstraint', 'aimConstraint', 'orientConstraint', 'scaleConstraint', 'parentConstraint', 'geometryConstraint', 'tangentConstraint', 'poleVectorConstraint', 'normalConstraint', 'pointOnPolyConstraint' ] # cycle for stuff in newCam: connections = cmds.listRelatives(stuff) if (connections): for item in connections: if (cmds.objExists(item)): objType = cmds.objectType(item) if objType in constraints: cmds.delete(item) nmGUI_func.nmGUI_runCheck( 'complete', 'Selected ghOstCam(s) duplicated and baked for AE export') else: nmGUI_func.nmGUI_runCheck('error', 'Select one or more ghOstCam controls')
def setPivotToManip_apply(): # get trans transX = cmds.checkBox('nwSAK_modWorldSpaceTransXCB',q=True,v=True) transY = cmds.checkBox('nwSAK_modWorldSpaceTransYCB',q=True,v=True) transZ = cmds.checkBox('nwSAK_modWorldSpaceTransZCB',q=True,v=True) # get rotate rotateX = cmds.checkBox('nwSAK_modWorldSpaceRotateXCB',q=True,v=True) rotateY = cmds.checkBox('nwSAK_modWorldSpaceRotateYCB',q=True,v=True) rotateZ = cmds.checkBox('nwSAK_modWorldSpaceRotateZCB',q=True,v=True) # get scale scaleX = cmds.checkBox('nwSAK_modWorldSpaceScaleXCB',q=True,v=True) scaleY = cmds.checkBox('nwSAK_modWorldSpaceScaleYCB',q=True,v=True) scaleZ = cmds.checkBox('nwSAK_modWorldSpaceScaleZCB',q=True,v=True) # get selected sel = cmds.ls(sl=True, type='transform') manipPos = cmds.floatFieldGrp('nwSAK_manipPivot',q=True,v=True) targetTrans = cmds.floatFieldGrp('nwSAK_transPivots',q=True,v=True) targetRot = cmds.floatFieldGrp('nwSAK_rotPivots',q=True,v=True) targetScale = cmds.floatFieldGrp('nwSAK_scalePivots',q=True,v=True) types = cmds.radioButtonGrp('nwSAK_modmovTypeSelect',q=True,sl=True) if sel: if manipPos: if (types==1): # cycle for stuff in sel: # get select trans selTrans = cmds.xform(stuff,q=True,ws=True,t=True) selRot = cmds.xform(stuff,q=True,ws=True,ro=True) relScale = cmds.xform(stuff,q=True,r=True,s=True) wsScale = cmds.xform(stuff,q=True,ws=True,s=True) selScale = [((relScale[0])/(wsScale[0])),((relScale[1])/(wsScale[1])),((relScale[2])/(wsScale[2]))] targetWScale = [((targetScale[0])*(selScale[0])),((targetScale[1])*(selScale[1])),((targetScale[2])*(selScale[2]))] # set/reset array trans = [] rotate = [] scale = [] ### check for trans if (transX == 1): trans.append(manipPos[0]) else: trans.append(selTrans[0]) if (transY == 1): trans.append(manipPos[1]) else: trans.append(selTrans[1]) if (transZ == 1): trans.append(manipPos[2]) else: trans.append(selTrans[2]) ### check for rot if (rotateX == 1): rotate.append(targetRot[0]) else: rotate.append(selRot[0]) if (rotateY == 1): rotate.append(targetRot[1]) else: rotate.append(selRot[1]) if (rotateZ == 1): rotate.append(targetRot[2]) else: rotate.append(selRot[2]) ### check for scl if (scaleX == 1): scale.append(targetWScale[0]) else: scale.append(relScale[0]) if (scaleY == 1): scale.append(targetWScale[1]) else: scale.append(relScale[1]) if (scaleZ == 1): scale.append(targetWScale[2]) else: scale.append(relScale[2]) cmds.xform(stuff,ws=True,t=trans,ro=rotate) cmds.scale(scale[0],scale[1],scale[2],stuff) nmGUI_func.nmGUI_runCheck('complete','Selected transforms set to captured') else: # do pivot for obj in sel: cmds.xform(worldSpace=True, pivots=manipPos) # line nmGUI_func.nmGUI_runCheck('complete','Pivot(s) set to captured pivot position') # line else: nmGUI_func.nmGUI_runCheck('error','No captured target transforms/pivot') # line else: nmGUI_func.nmGUI_runCheck('error','Select a target to set transforms/pivot')
def nmGrouper_group(): ''' this function will group the selected objects either at its position or at the origin. will also auto name the group depending if there is a group below that has the same naming convention. can do multiple objects with different numbered null groups. ''' # get place = cmds.radioButtonGrp('nmSAK_grpRBG', q=True, sl=True) # sel sel = cmds.ls(sl=True) if (len(sel) > 0): # group list groups = [] # group selected for stuff in sel: par = cmds.listRelatives(stuff, p=True) if '_null_' in stuff: # split obj split = stuff.split('_null_') objName = split[0] num = split[-1] new = int(num) + 1 if not (cmds.objExists(objName + '_null_' + str(new))): # create group cmds.group(n=objName + '_null_' + str(new), em=True) if (place == 1): cmds.parentConstraint(stuff, objName + '_null_' + str(new), mo=False, n='tEmPbLaHbLaH') cmds.delete('tEmPbLaHbLaH') cmds.parent(stuff, objName + '_null_' + str(new)) groups.append(objName + '_null_' + str(new)) if (par): cmds.parent(objName + '_null_' + str(new), par[0]) cmds.select(cl=True) else: if (cmds.objExists(stuff + '_null_0') == 0): cmds.group(n=stuff + '_null_0', em=True) if (place == 1): cmds.parentConstraint(stuff, stuff + '_null_0', mo=False, n='tEmPbLaHbLaH') cmds.delete('tEmPbLaHbLaH') cmds.parent(stuff, stuff + '_null_0') groups.append(stuff + '_null_0') if (par): cmds.parent(stuff + '_null_0', par[0]) cmds.select(cl=True) # sel groups if (groups): cmds.select(groups, r=True) # line nmGUI_func.nmGUI_runCheck('complete', 'Selected objects have been grouped.') else: # create empty group cmds.group(em=True) # line nmGUI_func.nmGUI_runCheck('complete', 'Null group has been created.')
def nmMatchMaker_ba(): ''' this function will move the selected item "b's" tranforms or pivot to other selected items "b". this move can be done with several options. nothing checked will do the move normally. with average checked, "b" will be averaged with selection "a". checking order will allow you to selected multiple b-a and do the moves all at once. ''' # sel sel = cmds.ls(sl=True) # get checkbox avg = cmds.checkBox('nmSAK_movAvgCHBX', q=True, v=True) ordr = cmds.checkBox('nmSAK_movOrdCHBX', q=True, v=True) types = cmds.radioButtonGrp('nmSAK_movTypeRBG', q=True, sl=True) # check if (len(sel) > 1): if (types == 1): if (avg == 1): if (len(sel) > 1): sels = cmds.ls(sl=True) sels.remove(sels[-1]) cmds.parentConstraint(sels, sel[-1], mo=False, n='tEmPbLaHbLaH') cmds.delete('tEmPbLaHbLaH') elif (ordr == 1): if ((len(sel)) % 2): nmGUI_func.nmGUI_runCheck( 'error', 'An odd number of objects are selected.') else: i = 0 # move selected while (i < len(sel) - 1): cmds.parentConstraint(sel[i], sel[i + 1], mo=False, n='tEmPbLaHbLaH') cmds.delete('tEmPbLaHbLaH') # counter i += 2 else: i = 1 # move selected while (i < len(sel)): cmds.parentConstraint(sel[0], sel[i], mo=False, n='tEmPbLaHbLaH') cmds.delete('tEmPbLaHbLaH') # counter i += 1 else: if (avg == 1): if (len(sel) > 1): sels = cmds.ls(sl=True) sels.remove(sels[-1]) cmds.spaceLocator(n='ImJuStTeMpOrArYmK') cmds.parentConstraint(sels, 'ImJuStTeMpOrArYmK', mo=False, n='tEmPbLaHbLaH') cmds.delete('tEmPbLaHbLaH') get = cmds.xform('ImJuStTeMpOrArYmK', q=True, rp=True, ws=True) cmds.xform(sel[-1], p=True, ws=True, rp=(get[0], get[1], get[2])) cmds.xform(sel[-1], p=True, ws=True, sp=(get[0], get[1], get[2])) cmds.delete('ImJuStTeMpOrArYmK') cmds.select(sel) elif (ordr == 1): if ((len(sel)) % 2): nmGUI_func.nmGUI_runCheck( 'error', 'An odd number of objects were selected.') else: i = 0 # move selected while (i < len(sel) - 1): get = cmds.xform(sel[i], q=True, rp=True, ws=True) cmds.xform(sel[i + 1], p=True, ws=True, rp=(get[0], get[1], get[2])) cmds.xform(sel[i + 1], p=True, ws=True, sp=(get[0], get[1], get[2])) # counter i += 2 else: get = cmds.xform(sel[0], q=True, rp=True, ws=True) # set i = 1 # move selected while (i < len(sel)): cmds.xform(sel[i], p=True, ws=True, rp=(get[0], get[1], get[2])) cmds.xform(sel[i], p=True, ws=True, sp=(get[0], get[1], get[2])) # counter i += 1 # line nmGUI_func.nmGUI_runCheck('complete', 'Match has been made from b to a.') else: # line nmGUI_func.nmGUI_runCheck('error', 'Please select two or more objects.')
def nwDeleteDuplicatePanels(): ''' This script deletes duplicate panels from the "panels" menu in the modelPanel window menu AND also deletes the the panel's children. ''' # list all panels panelList = cmds.lsUI(panels=1) # get all modelPanels selMPanels = cmds.getPanel(type='modelPanel') # get all blendShapePanels selBSPanels = cmds.getPanel(type='blendShapePanel') # get all info Nodes: extras = cmds.ls(type="hyperView") # shotListManager? shotlistManager = cmds.ls('shotlistScriptNode') # deleted duplicate panels list duplicatePanels = [] # lock shotlistScriptNode if shotlistManager: cmds.lockNode('shotlistScriptNode', lock=1) # kill hyperView extras for extra in extras: duplicatePanels.append(extra) cmds.delete(extra) # delete duplicate modelPanels for panels in selMPanels: split = panels.split('modelPanel') num = split[-1] numList = int(num) if ((numList) > 4): duplicatePanels.append(panels) cmds.deleteUI(panels, panel=1) # delete duplicate blendShapePanels for panels in selBSPanels: split = panels.split('blendShapePanel') num = split[-1] numList = int(num) if ((numList) > 1): duplicatePanels.append(panels) cmds.deleteUI(panels, panel=1) # delete duplicate hyperGraphPanels and nodeEditorPanels for panels in panelList: if "hyperGraphPanel" in panels: split = panels.split('hyperGraphPanel') num = split[-1] numList = int(num) if ((numList) > 1): duplicatePanels.append(panels) cmds.deleteUI(panels, panel=1) elif "nodeEditorPanel" in panels: split = panels.split('nodeEditorPanel') num = split[-1] numList = int(num) if ((numList) > 1): duplicatePanels.append(panels) cmds.deleteUI(panels, panel=1) # line if (duplicatePanels): dupPanelCount = int(len(duplicatePanels)) nmGUI_func.nmGUI_runCheck( 'complete', '{0} Duplicate panels deleted. See script editor for deleted panels list.' .format(dupPanelCount)) print '\n'.join(duplicatePanels) print dupPanelCount, 'Duplicate Panels Deleted' else: nmGUI_func.nmGUI_runCheck('complete', 'No duplicate panels detected.')