コード例 #1
0
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.')
コード例 #2
0
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')
コード例 #3
0
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.')
コード例 #4
0
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.')
コード例 #5
0
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.')
コード例 #6
0
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.')
コード例 #7
0
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.')
コード例 #8
0
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.')
コード例 #9
0
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.')
コード例 #10
0
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.')
コード例 #11
0
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.')
コード例 #12
0
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.')
コード例 #13
0
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')
コード例 #14
0
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.')
コード例 #15
0
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.')
コード例 #16
0
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.')
コード例 #17
0
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.')
コード例 #18
0
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')
コード例 #19
0
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')
コード例 #20
0
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.')
コード例 #21
0
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.')
コード例 #22
0
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.')