def cmdLoadChild(): sels = cmds.ls( sl=1 ) if not sels: return None children = cmds.listRelatives( sels[-1], c=1, f=1, ad=1 ) if not children: return None child = cmds.ls( children[0], sn=1 )[0] cmds.textField( self._uiInstEndObject._field, e=1, tx=child )
def buildTimeMenu( self, parent, uiItem ): cmd.menu( parent, e=True, dai=True ) cmd.setParent( parent, m=True ) cmd.menuItem( l="! - use current range", c=lambda a: cmd.textField( uiItem, e=True, tx='!' ) ) cmd.menuItem( l=". - use current frame", c=lambda a: cmd.textField( uiItem, e=True, tx='.' ) ) cmd.menuItem( l="$ - use scene range", c=lambda a: cmd.textField( uiItem, e=True, tx='$' ) )
def create_base_rig(cog, rig_region_name): # create curve and scale it to the correct size base_curve, base_curve_group = jt_ctl_curve.create(None, 'star_30') cmds.select(base_curve) cmds.setAttr(base_curve + '.scale', 5,5,5) cmds.makeIdentity(apply=True, t=0, r=1, s=1, n=0) # unparent the curve from the default group it is given so its a child of the world base_curve = cmds.rename('base') cmds.parent(w=True) cmds.select(base_curve_group, r=True) cmds.delete() # add a string attribute to keep track of all the nodes that are used for easy de-rigging # NOTE: text is stored in the attr as a string formatted like a python dict with the key being # the name of the body region and the value being a list of the nodes involved this makes # de-rigging nice and easy as you just need to find the entry in the dict and delete all the nodes cmds.select(base_curve) cmds.addAttr(ln='rig_nodes', dt='string') cmds.setAttr(base_curve + '.rig_nodes', '{}', type='string') # add base_curve to base curve attr list add_node_to_rig_nodes(base_curve, 'base', base_curve) # update ui base_curve_field cmds.textField('jt_autorig_base_name_select_text', e=True, tx=base_curve)
def doRefreshAssetDisplay(arg=None): '''Display assets for selected category. ''' currentImageLibrary = getImageLibrary() # Get selected category folder. directory = getCategoryFolder() if not directory: return # Get the list of files on disk. assetFiles = [x for x in os.listdir(directory) if x.endswith(".jpg")] clearAssetsDisplay() for assetFile in assetFiles: # Build the buttons. assetLabel = assetFile.rpartition(os.sep)[2].replace(".jpg", "") imageFilePath = os.path.join(directory, assetFile) button = cmds.iconTextCheckBox( "%sBTN" % assetLabel, parent="displayAssetsGL", style="iconAndTextVertical", width=144, height=144, image=imageFilePath, label=assetLabel, annotation=assetLabel, onCommand=partial(addAssetToSelection, assetLabel), offCommand=partial(removeAssetFromSelection, assetLabel) ) # Clear hidden textField. cmds.textField("currentAssetTFD", edit=True, text="")
def createAttribute(): if(not cmds.textField(tf01, text = True, query = True) == ''): niceName, longName = attrNameDefC() sel = selectListC() if(dataTypeC == 'float3'): for obj in sel: if(not cmds.attributeQuery(longName, node = obj, exists = True)): cmds.addAttr(obj, niceName = niceName, longName = longName, usedAsColor = True, attributeType = dataTypeC) cmds.addAttr(obj, longName = '%sR' % longName, attributeType = 'float', parent = longName) cmds.addAttr(obj, longName = '%sG' % longName, attributeType = 'float', parent = longName) cmds.addAttr(obj, longName = '%sB' % longName, attributeType = 'float', parent = longName) elif(dataTypeC == 'double3'): for obj in sel: if(not cmds.attributeQuery(longName, node = obj, exists = True)): cmds.addAttr(obj, niceName = niceName, longName = longName, attributeType = dataTypeC) cmds.addAttr(obj, longName = '%sX' % longName, attributeType = 'double', parent = longName) cmds.addAttr(obj, longName = '%sY' % longName, attributeType = 'double', parent = longName) cmds.addAttr(obj, longName = '%sZ' % longName, attributeType = 'double', parent = longName) elif(dataTypeC == 'string'): for obj in sel: if(not cmds.attributeQuery(longName, node = obj, exists = True)): cmds.addAttr(obj, niceName = niceName, longName = longName, dataType = dataTypeC) else: for obj in sel: if(not cmds.attributeQuery(longName, node = obj, exists = True)): cmds.addAttr(obj, niceName = niceName, longName = longName, attributeType = dataTypeC) cmds.textField(tf01, text = '', edit = True)
def UI(): if cmds.window("TressFXExporterUI", exists = True): cmds.deleteUI("TressFXExporterUI") windowTitle = 'TressFX Exporter' + ' ' + 'v' + tressfx_exporter_version window = cmds.window("TressFXExporterUI", title = windowTitle, w=280, h = 260, mnb=False, sizeable=False) mainLayout = cmds.columnLayout(w=280, h=260) cmds.separator(h=8, style='in') cmds.text(label='Number of vertices per strand (4, 8, 16, 32 or 64):', align='left') cmds.intField("numVerticesPerStrand", w=30, minValue=4, maxValue=64, value=16 ) cmds.separator(h=8, style='in') cmds.checkBox("bothEndsImmovable", label='Both ends immovable') cmds.checkBox("InvertZ", label='Invert Z', value = True) cmds.checkBox("exportSkinCheckBox", label='Export skin data', value = False) cmds.checkBox("randomStrandCheckBox", label='Randomize strands for LOD', value = True) cmds.separator(h=15) cmds.button(label="Set the base mesh", w=170, h=30, command=SetBaseMesh) cmds.textField("MeshNameLabel", w=170, editable=False) cmds.separator(height=10, style='none') cmds.button(label="Export as binary (*.tfx)", w=170, h=30, command=ExportBinary) cmds.separator(h=15) version_text = 'v' + tressfx_exporter_version cmds.text(label=version_text, align='left') global selected_mesh_shape_name selected_mesh_shape_name = '' cmds.showWindow(window)
def browseDirectoryPath(self, *args): basicFilter = "*All(*.*);;tif(*.tif);;jpg(*.jpg);;exr(*.exr);;tx(*.tx)" self.returnPath = cmds.fileDialog2( fileFilter=basicFilter, ds=2, startingDirectory=self.homeDir)[0] cmds.textField(self.uvImagePath, e=True, text=self.returnPath)
def loadBaseMesh(self, *args ): sels = cmds.ls( sl=1 ) if not sels: cmds.error( "Select mesh" ) selShapes = cmds.listRelatives( sels[-1], s=1 ) if not selShapes: cmds.error( "Select mesh" ) meshShape = '' for shape in selShapes: if not cmds.getAttr( shape+'.io' ): if cmds.nodeType( shape ) == 'mesh': meshShape = shape break if not meshShape: cmds.error( "Selected Object has no mesh") cmds.textField( self._baseMesh, e=1, tx=meshShape ) self.saveData()
def loadSurfaceGroup(self, *args ): sels = cmds.ls( sl=1 ) if not sels: cmds.error( "Select Surface Group" ) children = cmds.listRelatives( sels[-1], c=1, ad=1 ) if not children: cmds.error( "Select Surface Group" ) surfaceGrp = '' for child in children: shapes = cmds.listRelatives( child, s=1 ) if not shapes: continue for shape in shapes: if cmds.nodeType( shape ) == 'nurbsSurface': surfaceGrp = sels[-1] break if surfaceGrp: break if not surfaceGrp: cmds.error( "Select Surface Group" ) cmds.textField( self._surfaceGroup, e=1, tx=surfaceGrp ) if not cmds.attributeQuery( 'sets', node=surfaceGrp, ex=1 ): fnc.addArrayMessageAttribute( surfaceGrp, 'sets' ) self.saveData()
def openFile(self, *args): """ This opens the file browser and takes the path and puts it in the text field. This is run when the Browse button is pressed. """ self.fileName = cmds.fileDialog2( fileMode=2, caption="Import Image" ) # Open the file browser cmds.textField( self.loadDirPath, edit=True, text=str(self.fileName[0]) ) # Put path in text field
def create( self, *args ): if cmds.window( self.winName, ex=1 ): cmds.deleteUI( self.winName, wnd=1 ) cmds.window( self.winName, title= self.title, titleBarMenu=0 ) cmds.columnLayout() cmds.rowColumnLayout( nc=1, cw=[( 1,self.width-2)] ) cmds.text( l='Register ID', h=30 ) idField = cmds.textField( h=25 ) helpField = cmds.textField( en=0 ) cmds.setParent( '..' ) firstWidth = (self.width-2)*0.5 secondWidth = (self.width-2)-firstWidth cmds.rowColumnLayout( nc=2, cw=[(1,firstWidth),(2,secondWidth)]) cmds.button( l='Create', h=25, c=self.cmdCreate ) cmds.button( l='Cancel', h=25, c=self.cmdCancel ) cmds.setParent( '..' ) cmds.window( self.winName, e=1, width = self.width, height = self.height ) cmds.showWindow( self.winName ) self.idField = idField self.helpField = helpField
def uiNameLoadedAutoNameObject(self): autoNameObject = mc.textField(self.AutoNameObjectField,q=True,text = True) if autoNameObject: newName = NameFactoryOld.doNameObject(autoNameObject,True) mc.textField(self.AutoNameObjectField,e = True,text = newName) else: guiFactory.warning('No current autoname object loaded!')
def seqGUI(parent): frm = cmds.frameLayout( label="Sequence", cll=True, w=winWidth-5, collapseCommand=Callback(winExpand, -70), expandCommand=Callback(winExpand, 70)) frmCol = cmds.columnLayout(rs=3) cmds.checkBox( "mecRenSeqCB", label="On\Off", v=1) rowCol = cmds.rowColumnLayout("mecRenSeqRC", nc=2, cw=[[1,winWidth/2],[2,winWidth/2]], co=[[1,"right",5]]) ''' Older version. Used Callback instead with a function that will enable or disable any gui component. cmds.checkBox( "mecRenSeqCB", e=True, onc='%s.cmds.rowColumnLayout("mecRenSeqRC", e=True, en=True)' %scriptName) cmds.checkBox( "mecRenSeqCB", e=True, ofc='%s.cmds.rowColumnLayout("mecRenSeqRC", e=True, en=False)' %scriptName) ''' cmds.checkBox( "mecRenSeqCB", e=True, onc=Callback(enGUI,"rowColumnLayout", "mecRenSeqRC", 1 ) ) cmds.checkBox( "mecRenSeqCB", e=True, ofc=Callback(enGUI,"rowColumnLayout", "mecRenSeqRC", 0 )) cmds.textScrollList( "mecRenSeqTSL", h=40, ams=True ) cmds.setParent(rowCol) subCol = cmds.columnLayout() rowWidth = winWidth/2 cmds.rowColumnLayout(nc=2, w=rowWidth, cw=[[1,(rowWidth-70)], [2,60]]) cmds.textField("mecRenSeqName", w=rowWidth-70 ) cmds.button(label="Add", c=Callback(addTSL, "mecRenSeqTSL")) cmds.setParent(subCol) cmds.rowColumnLayout(nc=2, w=rowWidth, cw=[[1,rowWidth/2],[2,rowWidth/2-10]]) cmds.button(label="Rem All", c=Callback(remAllTSL, "mecRenSeqTSL")) cmds.button(label="Rem Sel", c=Callback(remSelTSL, "mecRenSeqTSL")) cmds.setParent(parent)
def populatescrollList(self,newLocation=None): """Edit textScrollList and update with selected location""" hideTheseFolders=["thumb", ".thumb",".mayaSwatches","RECYCLER","$AVG", "$Recycle.Bin","$RECYCLE.BIN","INCINERATE","Config.Msi",".dropbox.cache" "System Volume Information","Recovery","ProgramData","PROGRAMDATA", "PerfLogs"] if newLocation==None: locationTxt=cmds.textField('location',q=True,tx=True) else: locationTxt=newLocation cmds.textScrollList('fileLister', edit=True,removeAll=True) try: [cmds.textScrollList('fileLister', edit=True,append=each) for each in os.listdir(locationTxt) if os.path.isdir(os.path.join(locationTxt,each)) and each not in hideTheseFolders] [cmds.textScrollList('fileLister', edit=True,ams=False, append=self.sizeof(os.path.join(locationTxt,each))) for nfile in self.fileFilters for each in os.listdir(locationTxt) if each.endswith(nfile)] except: insel= cmds.textField('location',q=True,tx=True) if not os.path.exists(insel): msg="You either moved or renamed %s project folder\n Or the Drive that contained this folder is not connected."%os.path.basename(insel) api.MGlobal.displayWarning(msg) reply=cmds.confirmDialog(t='Warning',msg="Selected favrite item not found on disk.\nDo you want to delete it?",button=['Yes','No'], defaultButton='Yes', cancelButton='No', dismissString='No' ) if reply =="Yes": accAction=Actions() accAction.removeSel() else: pass
def loadDirectoryPath(textField,caption='Load Directory',startDir=None): ''' Select a file path to load into a specified textField. @param textField: TextField UI object to load file path to @type textField: str @param caption: File selection UI caption string @type caption: str @param startDir: Directory to start browsing from. In None, use the default or last selected directory. @type startDir: str ''' # Get File Path dirPath = mc.fileDialog2( dialogStyle=2, fileMode=3, caption=caption, okCaption='Load', startingDirectory=startDir ) # Check File Path if not dirPath: print('Invalid directory path!') return # Load File Path to TextField if mc.textField(textField,q=True,ex=True): mc.textField(textField,e=True,text=dirPath[0]) elif mc.textFieldGrp(textField,q=True,ex=True): mc.textFieldGrp(textField,e=True,text=dirPath[0]) elif mc.textFieldButtonGrp(textField,q=True,ex=True): mc.textFieldButtonGrp(textField,e=True,text=dirPath[0]) else: print('UI element "'+textField+'" is of type "'+mc.objectTypeUI(textField)+'"! Expected textField, textFieldGrp or textFieldButtonGrp.') return # Return Result return dirPath[0]
def browse(folder,*args): if folder=='renderFolder': mc.textField(str(folder),edit=1,text=mc.fileDialog2(ds=2,dir=os.path.join(mc.workspace(q=1,rd=1),'scenes'),fm=3,okc="Set",cc="Cancel")[0].split('/')[-1]) else: mc.textField(str(folder),edit=1,text=mc.fileDialog2(ds=2,dir=os.path.join(mc.workspace(q=1,rd=1),'scenes'),fm=3,okc="Set",cc="Cancel")[0]) commitUI() UI()
def openSelectedCallback(self,*args): """ This method is called on double click selected item in textscrollList """ #try block also saves from error caused by directories that we do not have rights to access. cMsg="Selected scene file is already open. Do you want to reload it?\n If you reload all changes you made since last save will be lost." try: cmds.button('upBtn',edit=True,enable=True) self.selectedItem=str(os.path.join(cmds.textField('location',q=True,tx=True),str(cmds.textScrollList('fileLister',q=True,si=True)[0]).split(" > ")[0])).replace("/","\\") if (self.selectedItem.endswith("ma")) or (self.selectedItem.endswith("mb")): print "selected Item: %s\n scene Open: %s"%(self.selectedItem , cmds.file(q=True,sn=True)) if self.selectedItem==cmds.file(q=True,sn=True).replace("/","\\"): print "Same Scene" result=cmds.confirmDialog(t='Warning',m=cMsg,button=['Yes','No'], defaultButton='Yes', cancelButton='No', dismissString='No' ) if result== "Yes": state= cmds.file(self.selectedItem,open=True, f=True) else: print"Saved scene file %s"%os.path.basename(cmds.file(q=True,sn=True)) ## if not cmds.file(q=True,save=True): ## cmds.file(save=True) state= cmds.file(self.selectedItem,open=True, f=True) else: if os.path.isdir(self.selectedItem): cmds.textField('location',edit=True,tx=self.selectedItem) self.populatescrollList(self.selectedItem.replace("/","\\")) except Exception as e: print e
def useSelection(_field, *args): ''' Puts name of the currently selected object into a text field on the GUI _field: Text field ''' txt = cmds.ls(sl=True) cmds.textField( _field, edit=True, text=txt[0])
def splitStringEnable( *args ): check = cmds.checkBox( WinA_Global.searchForType_check, q=1, v=1 ) if check: cmds.textField( WinA_Global.searchForType_txf, e=1, en=1 ) else: cmds.textField( WinA_Global.searchForType_txf, e=1, en=0 )
def createGeometryButtonAction(*pArgs): """ Queries all the fields related to the geometry interpretation and calls the procedure. """ pAngle = cmds.floatSliderGrp( "angle", q=True, v=True ) pStep = cmds.floatSliderGrp( "length", q=True, v=True ) pRad = cmds.floatSliderGrp( "radius", q=True, v=True ) subDivs = cmds.intSliderGrp( "cylSubdivs", q=True, v=True ) length_atenuation = cmds.intSliderGrp( "length_atenuation", q=True, v=True ) radius_atenuation = cmds.intSliderGrp( "radius_atenuation", q=True, v=True ) turtleSpeed = cmds.floatSliderGrp( "turtleSpeed", q=True, v=True) rgb_blossom = cmds.colorSliderGrp( "rgb_blossomField", q=True, rgb=True ) rgb_leaf = cmds.colorSliderGrp( "rgb_leafField", q=True, rgb=True ) rgb_branch = cmds.colorSliderGrp( "rgb_branchField", q=True, rgb=True ) if pAngle == 0 or pStep == 0 or pRad == 0 or subDivs == 0 or LStringVar == '': cmds.textField('warningsTextField', edit=True, tx='Please, revise all the fields again') else: import globalVar reload(globalVar) globalVar.plantNumber += 1 cmds.textField('warningsTextField', edit=True, tx='None.') createBranchShader(rgb_branch) createLeafShader(rgb_leaf) createBlossomShader(rgb_blossom) createGeometry(LStringVar, pRad, pStep, pAngle, subDivs, length_atenuation/100.0, radius_atenuation/100.0, turtleSpeed, rgb_branch, rgb_leaf, rgb_blossom)
def copyCrvShape(): sel = mc.ls(sl = True) if len(sel)>1: crvShape = mc.listRelatives(sel[0] , s = True) crvDegree = mc.getAttr(crvShape[0]+'.degree') crvSpans = mc.getAttr(crvShape[0]+'.spans') crvCvs = crvDegree + crvSpans for j in range(0,crvCvs+1): pos = mc.xform(sel[0] + '.cv[ '+str(j)+ ']' , q = True , os = True , t = True ) for i in range(0,len(sel)): if i == 0: continue else : mc.xform(sel[i] + '.cv[ '+str(j)+ ']' , os = True , t = pos ) else : searchQuery = mc.textField('searchUI' ,q = True ,tx = True) raplaceQuery = mc.textField('replaceUI' ,q = True ,tx = True) newCrv = sel[0].replace(searchQuery,raplaceQuery) crvShape = mc.listRelatives(sel[0] , s = True) crvDegree = mc.getAttr(crvShape[0]+'.degree') crvSpans = mc.getAttr(crvShape[0]+'.spans') crvCvs = crvDegree + crvSpans for j in range(0,crvCvs+1): pos = mc.xform(sel[0] + '.cv[ '+str(j)+ ']' , q = True , ws = True , t = True ) mc.xform(newCrv + '.cv[ '+str(j)+ ']' , ws = True , t = (-pos[0],pos[1],pos[2]) )
def searchReplaceSelectedChains(self,*args): ui.saveSearchReplaceText() self.search = cmds.textField( 'searchTextField', query=True, tx=True ) self.replace = cmds.textField( 'replaceTextField', query=True, tx=True ) for index,parentJoint in enumerate( cmds.ls( sl=True ) ): self.searchReplaceChain( parentJoint )
def saveRenameText(self): prefix = cmds.textField( 'prefixTextField', query=True, tx=True ) groupIndex = cmds.textField( 'groupIndexTextField', query=True, tx=True ) body = cmds.textField( 'bodyTextField', query=True, tx=True ) itemIndex = cmds.textField( 'itemIndexTextField', query=True, tx=True ) suffix = cmds.textField( 'suffixTextField', query=True, tx=True ) if prefix in __main__.rroPrefix: __main__.rroPrefix.remove(prefix) if groupIndex in __main__.rroGroupIndex: __main__.rroGroupIndex.remove(groupIndex) if body in __main__.rroBody: __main__.rroBody.remove(body) if itemIndex in __main__.rroItemIndex: __main__.rroItemIndex.remove(itemIndex) if suffix in __main__.rroSuffix: __main__.rroSuffix.remove(suffix) __main__.rroPrefix.append(prefix) __main__.rroGroupIndex.append(groupIndex) __main__.rroBody.append(body) __main__.rroItemIndex.append(itemIndex) __main__.rroSuffix.append(suffix) self.setupPopupMenus()
def create(self): if cmds.window(self.window, exists=True): cmds.deleteUI(self.window); self.window = cmds.loadUI(uiFile=self.uiFile, verbose=False) cmds.showWindow(self.window); try: initPos = cmds.windowPref( self.window, query=True, topLeftCorner=True ) if initPos[0] < 0: initPos[0] = 0 if initPos[1] < 0: initPos[1] = 0 cmds.windowPref( self.window, edit=True, topLeftCorner=initPos ) except : pass ctrlPath = '|'.join([self.window, 'radioButton']); cmds.radioButton(ctrlPath, edit=True, select=True); ctrlPath = '|'.join([self.window, 'groupBox_4']); cmds.control(ctrlPath, edit=True, enable=False); ctrlPath = '|'.join([self.window, 'groupBox_2', 'pushButton_7']); cmds.button(ctrlPath, edit=True, enable=False); ctrlPath = '|'.join([self.window, 'groupBox_2', 'lineEdit']); cmds.textField(ctrlPath, edit=True, text="-u --oiio");
def __init__(self): self.name = "rsSubstituteAttribute" self.title = "rs Substitute Attribute" i_windowSize = (300, 110) if (cmds.window(self.name, q=1, exists=1)): cmds.deleteUI(self.name) self.window = cmds.window(self.name, title=self.title) s_winColPro2 = cmds.columnLayout(adjustableColumn=True, parent=self.window) i_colum3 = (i_windowSize[0] / 6, i_windowSize[0] * 4 / 6, i_windowSize[0] / 6) s_winRowField1 = cmds.rowLayout(numberOfColumns=3, adjustableColumn3=2, columnWidth3=(i_colum3), columnAlign=(1, 'center'), columnAttach=[(1, 'both', 0), (2, 'both', 0), (3, 'both', 0)], parent=s_winColPro2) cmds.text(label='Source', align='center', parent=s_winRowField1) self.sourceText = cmds.textField(cmds.textField(), edit=True, parent=s_winRowField1) cmds.button(label='Pick up', c=self.rsPickUpSource, parent=s_winRowField1) s_winRowField2 = cmds.rowLayout(numberOfColumns=3, adjustableColumn3=2, columnWidth3=(i_colum3), columnAlign=(1, 'center'), columnAttach=[(1, 'both', 0), (2, 'both', 0), (3, 'both', 0)], parent=s_winColPro2) cmds.text(label='Target', align='center', parent=s_winRowField2) self.targetText = cmds.textField(cmds.textField(), edit=True, parent=s_winRowField2) cmds.button(label='Pick up', c=self.rsPickUpTarget, parent=s_winRowField2) cmds.separator(height=5, style="none", hr=True, parent=s_winColPro2) i_colum = i_windowSize[0] / 3 s_winRow1 = cmds.rowLayout(numberOfColumns=3, adjustableColumn3=2, columnWidth3=(5, i_colum, i_colum), columnAlign=(1, 'center'), columnAttach=[(1, 'both', 0), (2, 'both', 0), (3, 'both', 0)], parent=s_winColPro2) cmds.separator(height=5, style="none", hr=True, parent=s_winRow1) self.delAttr = cmds.checkBox("rsDelSourceAttr", label='Delete Source Attribute', align='right', v=True, parent=s_winRow1) cmds.separator(height=5, style="none", hr=True, parent=s_winColPro2) self.rsSubs = cmds.button(label='Substitute or Clone', w=100, c=self.rsSubs, parent=s_winColPro2) cmds.window(self.window, e=1, w=430, h=103) cmds.showWindow(self.window) cmds.window(self.window, edit=True, widthHeight=(i_windowSize))
def loadInfo( *args ): import sgBFunction_fileAndPath sceneBakeInfoPath = sgBFunction_fileAndPath.getSceneBakeInfoPath() sgBFunction_fileAndPath.makeFile( WinA_Global.filePathInfo, False ) cmds.textField( WinA_Global.exportPath_txf, e=1, tx= sceneBakeInfoPath )
def positionReorderDoIt(*args): meshes = [] sourceMeshText = cmds.textField( 'sourceMeshTextField', query=True, text=True ) if sourceMeshText == '': cmds.error('source mesh textfield is empty') if cmds.objExists(sourceMeshText) == False: cmds.error('the source mesh ( '+sourceMeshText+' ) does not exist') if cmds.nodeType(sourceMeshText) != 'mesh': shapes = cmds.listRelatives( sourceMeshText, shapes=True ) if shapes is None or len(shapes) < 1 or cmds.nodeType(shapes[0]) != 'mesh': cmds.error('source ( '+sourceMeshText+' ) is not a mesh') meshes.append( sourceMeshText ) destinationMeshText = cmds.textField( 'destinationMeshTextField', query=True, text=True ) if destinationMeshText == '': cmds.error('destination mesh textfield is empty') if cmds.objExists(destinationMeshText) == False: cmds.error('the destination mesh ( '+destinationMeshText+' ) does not exist') if cmds.nodeType(destinationMeshText) != 'mesh': shapes = cmds.listRelatives( destinationMeshText, shapes=True ) if shapes is None or len(shapes) < 1 or cmds.nodeType(shapes[0]) != 'mesh': cmds.error('destination ( '+destinationMeshText+' ) is not a mesh') meshes.append( destinationMeshText ) positionReorder( meshes=meshes )
def renameSelected(self,*args): ui.saveRenameText() self.setInitialGroupIndex() self.setInitialItemIndex() itemIndex = self.initialItemIndex groupIndex = self.initialGroupIndex switchIndex = cmds.checkBox( 'switchIndexesCheckBox', query=True, v=True ) prefix = cmds.textField( 'prefixTextField', query=True, tx=True ) body = cmds.textField( 'bodyTextField', query=True, tx=True ) suffix = cmds.textField( 'suffixTextField', query=True, tx=True ) groupIndexString = self.getGroupIndex(groupIndex) #give items a temp name, to help lessen chance of new name already existing #won't prevent it with items that exist outside of the selection for index,item in enumerate(cmds.ls( sl=True )): splitName = item.split('|')[-1] cmds.rename( item, splitName+'XXX'+str(index) ) for item in cmds.ls( sl=True ): itemIndexString = self.getItemIndex(itemIndex) newName = prefix+groupIndexString+body+itemIndexString+suffix if switchIndex is True: newName = prefix+itemIndexString+body+groupIndexString+suffix cmds.rename( item, newName ) itemIndex = itemIndex+1
def createUI( pWindowTitle): windowID = 'myWindowID' if cmds.window(windowID , exists = True): cmds.deleteUI(windowID) cmds.window(windowID , title = pWindowTitle , sizeable = False , resizeToFitChildren = True) cmds.rowColumnLayout( numberOfColumns = 3 , columnWidth =[(1,200) , (2,200) , (3,200)]) cmds.separator ( h = 30 , style = 'none') cmds.separator ( h = 30 , style = 'none') cmds.separator ( h = 30 , style = 'none') cmds.text(label = 'Enter the path of the code') cmds.textField('path') cmds.separator ( h = 30 , style = 'none') cmds.separator ( h = 30 , style = 'none') cmds.separator ( h = 30 , style = 'none') cmds.separator ( h = 30 , style = 'none') cmds.button(label = 'Generate' , command = generate) cmds.separator ( h = 30 , style = 'none') cmds.button(label = 'Build' , command = build) cmds.separator ( h = 30 , style = 'none') cmds.separator ( h = 30 , style = 'none') cmds.separator ( h = 30 , style = 'none') cmds.showWindow()
def cmdLoadSelected(self): if self._olnyAddCommand: if type( self._addCommand ) in [ type(()), type([]) ]: for command in self._addCommand: command() else: self._addCommand() return None sels = cmds.ls( sl=1, sn=1 ) if not sels: return None if self._type == 'single': cmds.textField( self._field, e=1, tx=sels[-1] ) else: popupTxt = '' for sel in sels: popupTxt += sel + ' ' cmds.textField( self._field, e=1, tx=popupTxt[:-1] ) if self._addCommand: if type( self._addCommand ) in [ type(()), type([]) ]: for command in self._addCommand: command() else: self._addCommand()
def tkSetVisibility(object, *args): animGrp = 'ANIM_GRP' animGrpHi = 'ANIM_hi_GRP' wrapGrp = 'wrap_GRP' collGrp = 'passive_GRP' exClothGrp = 'export_cloth_GRP' xGenBaseGrp = 'xGenBase_GRP' nmSpc = cmds.textField('tfNmSpcAnim', tx=1, q=1) nmSpcFX = cmds.textField('tfNmSpcFX', tx=1, q=1) if nmSpc: nmSpc = nmSpc + ':' if nmSpcFX: nmSpcFX = nmSpcFX + ':' if object is 'Anim': low = cmds.checkBox('cbLow', v=1, q=1) mid = cmds.checkBox('cbMid', v=1, q=1) hgh = cmds.checkBox('cbHgh', v=1, q=1) but = cmds.checkBox('cbButtons', v=1, q=1) if cmds.objExists(nmSpc + 'furVolume_cn_mid_anim_geo') is False: cClear('tfFeedback', 'Objects not found! Check the namespace!', [.3, 0, 0]) else: dagList = cmds.ls(nmSpc + '*_lo_*', type='transform') for i in dagList: print i cmds.setAttr(i + '.v', low) dagList = cmds.ls(nmSpc + '*_mid_*', type='transform') for i in dagList: print i cmds.setAttr(i + '.v', mid) dagList = cmds.ls(nmSpc + '*_hi_*', type='transform') for i in dagList: print i cmds.setAttr(i + '.v', hgh) dagList = cmds.ls(nmSpc + '*button_*', type='transform') for i in dagList: print i cmds.setAttr(i + '.v', but) if object is 'FX': anim = cmds.checkBox('cbAnimGRP', v=1, q=1) animHi = cmds.checkBox('cbAnimHiGRP', v=1, q=1) coll = cmds.checkBox('cbColliderGRP', v=1, q=1) wrap = cmds.checkBox('cbWrapGRP', v=1, q=1) cape = cmds.checkBox('cbCape', v=1, q=1) shirt = cmds.checkBox('cbShirt', v=1, q=1) exCloth = cmds.checkBox('cbExportClothGRP', v=1, q=1) xGenBase = cmds.checkBox('cbxGenBase', v=1, q=1) if cmds.objExists(nmSpcFX + collGrp) is False: cClear('tfFeedback', 'Objects not found! Check the namespace!', [.3, 0, 0]) else: cmds.setAttr(nmSpcFX + collGrp + '.v', coll) children = cmds.listRelatives(nmSpcFX + collGrp, c=1, type = 'transform') for child in children: cmds.setAttr(child + '.v', coll) cmds.setAttr(nmSpcFX + animGrp + '.v', anim) children = cmds.listRelatives(nmSpcFX + animGrp, c=1, type = 'transform') for child in children: cmds.setAttr(child + '.v', anim) cmds.setAttr(nmSpcFX + animGrpHi + '.v', animHi) children = cmds.listRelatives(nmSpcFX + animGrpHi, c=1, type = 'transform') for child in children: cmds.setAttr(child + '.v', animHi) cmds.setAttr(nmSpcFX + wrapGrp + '.v', wrap) children = cmds.listRelatives(nmSpcFX + wrapGrp, c=1, type = 'transform') for child in children: cmds.setAttr(child + '.v', wrap) cmds.setAttr(nmSpcFX + exClothGrp + '.v', exCloth) children = cmds.listRelatives(nmSpcFX + exClothGrp, c=1, type = 'transform') for child in children: cmds.setAttr(child + '.v', exCloth) cmds.setAttr(nmSpcFX + xGenBaseGrp + '.v', xGenBase) children = cmds.listRelatives(nmSpcFX + xGenBaseGrp, c=1, type = 'transform') for child in children: cmds.setAttr(child + '.v', xGenBase) cmds.setAttr(nmSpcFX + dynControl + '.cape', cape) cmds.setAttr(nmSpcFX + dynControl + '.shirt', shirt)
def give_weighted(*args): a = mc.textField(stt, q=True, text=True) b = mc.textField(end, q=True, text=True) c = mc.textField(drv, q=True, text=True) d = mc.intField(num, q=True, v=True) CreateWeighted.preparation(give_sst=a, give_tar=b, give_sdv=c, give_many=d)
def tk_linkAnimToCloth(action, *args): bs = [] CLT = ['cape_cn_cfx_mid_geo_oneSided', 'shirt_cn_cfx_mid_geo_oneSided', 'cape_cn_cfx_hi_geo_oneSided', 'shirt_cn_cfx_hi_geo_oneSided', 'leatherSheath_cn_lo_geo', 'metalSheath_cn_lo_geo', 'beltBuckle_cn_lo_geo', 'belt_cn_lo_geo', 'beltSheathLong_cn_lo_geo', 'beltSheathWide_cn_lo_geo', 'furVolume_cn_mid_anim_geo', 'hat_cn_lo_geo', 'visor_cn_lo_geo', 'knotTwo_cn_lo_geo', 'knotOne_cn_lo_geo', 'body_cn_hi_cfx'] failList = [] fails = '' nmSpcAnim = cmds.textField('tfNmSpcAnim', tx=1, q=1) nmSpcFX = cmds.textField('tfNmSpcFX', tx=1, q=1) if nmSpcAnim: nmSpcAnim = nmSpcAnim + ':' nmSpcFX = nmSpcFX + ':' for i in CLT: if cmds.objExists(nmSpcFX + i) is False: failList.append(i) if cmds.objExists(nmSpcAnim + i) is False: failList.append(i) else: print '-------------------------' for clt in CLT: # print clt shapes = cmds.listRelatives(nmSpcFX + clt, s=1, ni=1) print 'shapes:' print shapes # disconnect if action == 0: if cmds.objExists('BS_' + clt): print 'disconnecting ' + clt bs = cmds.listConnections(shapes[0], s=1, d=0, type='blendShape') cmds.setAttr(bs[0] + '.' + clt, 0) cmds.delete(bs) # connect if action == 1: if not cmds.objExists('BS_' + clt): if cmds.objExists(nmSpcAnim + clt): print 'connecting ' + clt cmds.select(nmSpcAnim + clt, nmSpcFX + clt) mel.eval('performBlendShape 0 1') shapes = cmds.listRelatives(nmSpcFX + clt, s=1, ni=1) bs = cmds.listConnections(shapes[0], s=1, d=0, type='blendShape') print '--> blendShape before:' print bs bs = cmds.rename(bs[0], 'BS_' + clt) print '--> blendShape after:' print bs print '\n' cmds.setAttr(bs + '.' + clt, 1) else: print (clt + ' is already connected - disconnect first!') print '-------------------------' if action == 1 and len(failList) == 0: cClear('tfFeedback', 'Successfully linked anim to FX!', [0, 0.3, 0]) if action == 1 and len(failList) > 0: print '-------------------------' print 'Missing objects:' for fail in failList: fails += fail + ' ' print fail cClear('tfFeedback', ('Missing objects! Check ScriptEditor for details'), [.3, 0, 0]) print '-------------------------' if action == 0: cClear('tfFeedback', 'Successfully disconnected anim from FX!', [0, 0.3, 0])
def zorroHelpBoxUI(*args): if (cmds.window('win_zorroHelpBox', exists=1)): cmds.deleteUI('win_zorroHelpBox') myWindow = cmds.window('win_zorroHelpBox', t=('Zorro FX Helper' + ver), s=1) cmds.columnLayout(adj=1, bgc=(colDarkGreen[0], colDarkGreen[1], colDarkGreen[2])) # name space cmds.rowColumnLayout(nc=4, cw = [(1, 120), (2, 90), (3, 120), (4, 90)]) cmds.button(l='nmSpc FX Rig >>', h=bh1, c=partial(cGetNmSpc, 'tfNmSpcFX'), bgc=(colBrown[0], colBrown[1], colBrown[2])) cmds.textField('tfNmSpcFX', tx='zor_01', bgc=(0,0,0), ed=0) cmds.button(l='nmSpc Anim >>', h=bh1, c=partial(cGetNmSpc, 'tfNmSpcAnim'), bgc=(colRed[0], colRed[1], colRed[2])) cmds.textField('tfNmSpcAnim', tx='anim', bgc=(0,0,0), ed=0) cmds.setParent(top=1) # load cloth rig cmds.frameLayout('flLoadRef', l='Load FX Cloth Rig', bgc=(colFrameGreen[0], colFrameGreen[1], colFrameGreen[2]), cll=1, cl=0, cc=partial(cShrinkWin, "win_zorroHelpBox")) cmds.rowColumnLayout(nc=3, cw = [(1, 120), (2, 90), (3, 210)]) cmds.text('FX Cloth Rig Version', bgc = (colBrown[0], colBrown[1], colBrown[2])) cmds.intField('iFXVersion', v=25) cmds.button(l='Load', h=bh1, c=partial(cLoadRef, 'zor_01'), bgc=(colLightGreen[0], colLightGreen[1], colLightGreen[2])) cmds.setParent(top=1) # visibility cmds.frameLayout('flVisibility', l='Visbility', bgc=(colFrameGreen[0], colFrameGreen[1], colFrameGreen[2]), cll=1, cl=1, cc=partial(cShrinkWin, "win_zorroHelpBox")) cmds.rowColumnLayout(nc=6, cw = [(1, 10), (2, 100), (3, 100), (4, 10), (5, 100), (6, 100)]) cmds.text(' ', bgc = (colBrown[0], colBrown[1], colBrown[2])) cmds.checkBox('cbAnimGRP', l='Anim_GRP', v=0, bgc=(colBrown[0], colBrown[1], colBrown[2])) cmds.checkBox('cbAnimHiGRP', l='Anim Hi GRP', v=0, bgc=(colBrown[0], colBrown[1], colBrown[2])) cmds.text(' ', bgc = (colRed[0], colRed[1], colRed[2])) cmds.checkBox('cbLow', l='Low', v=0, bgc=(colRed[0], colRed[1], colRed[2])) cmds.checkBox('cbMid', l='Mid', v=1, bgc=(colRed[0], colRed[1], colRed[2])) cmds.text(' ', bgc = (colBrown[0], colBrown[1], colBrown[2])) cmds.checkBox('cbCape', l='Cape', v=0, bgc=(colBrown[0], colBrown[1], colBrown[2])) cmds.checkBox('cbShirt', l='Shirt', v=0, bgc=(colBrown[0], colBrown[1], colBrown[2])) cmds.text(' ', bgc = (colRed[0], colRed[1], colRed[2])) cmds.checkBox('cbHgh', l='High', v=0, bgc=(colRed[0], colRed[1], colRed[2])) cmds.checkBox('cbButtons', l='Buttons', v=0, bgc=(colRed[0], colRed[1], colRed[2])) cmds.text(' ', bgc = (colBrown[0], colBrown[1], colBrown[2])) cmds.checkBox('cbWrapGRP', l='Wrap_GRP', v=0, bgc=(colBrown[0], colBrown[1], colBrown[2])) cmds.checkBox('cbExportClothGRP', l='Export Cloth', v=0, bgc=(colBrown[0], colBrown[1], colBrown[2])) cmds.text(' ', bgc = (colRed[0], colRed[1], colRed[2])) cmds.text(' ', bgc=(colRed[0], colRed[1], colRed[2])) cmds.text(' ', bgc=(colRed[0], colRed[1], colRed[2])) cmds.text(' ', bgc = (colBrown[0], colBrown[1], colBrown[2])) cmds.checkBox('cbxGenBase', l='xGenBase', v=0, bgc=(colBrown[0], colBrown[1], colBrown[2])) cmds.checkBox('cbColliderGRP', l='Collider', v=0, bgc=(colBrown[0], colBrown[1], colBrown[2])) cmds.text(' ', bgc=(colRed[0], colRed[1], colRed[2])) cmds.text(' ', bgc=(colRed[0], colRed[1], colRed[2])) cmds.text(' ', bgc=(colRed[0], colRed[1], colRed[2])) cmds.setParent('..') cmds.rowColumnLayout(nc=4, cw = [(1, 105), (2, 105), (3, 105), (4, 105)]) cmds.button(l='Tgl All', h=bh1, bgc=(colBrown[0], colBrown[1], colBrown[2]), c=partial(tkTglAll, 'FX')) cmds.button(l='Set FX Visibility', h=bh1, bgc=(colBrown[0], colBrown[1], colBrown[2]), c=partial(tkSetVisibility, 'FX')) cmds.button(l='Tgl All', h=bh1, bgc=(colRed[0], colRed[1], colRed[2]), c=partial(tkTglAll, 'Anim')) cmds.button(l='Set Anim Visibility', h=bh1, bgc=(colRed[0], colRed[1], colRed[2]), c=partial(tkSetVisibility, 'Anim')) cmds.setParent(top=1) # link anim elements cmds.frameLayout('flLinkAnim', l='Link Anim', bgc=(colFrameGreen[0], colFrameGreen[1], colFrameGreen[2]), cll=1, cl=1, cc=partial(cShrinkWin, "win_zorroHelpBox")) cmds.rowColumnLayout(nc=2, cw = [(1, 210), (2, 210)]) cmds.button(l='Connect Anim to Cloth Setup', h=bh1, bgc=(colLightGreen[0], colLightGreen[1], colLightGreen[2]), c=partial(tk_linkAnimToCloth, 1)) cmds.button(l='Disconnect Anim', h=bh1, bgc=(colDarkRed[0], colDarkRed[1], colDarkRed[2]), c=partial(tk_linkAnimToCloth, 0)) cmds.setParent(top=1) # Make it faster cmds.frameLayout('flFaster', l='Make It Faster', bgc=(colFrameGreen[0], colFrameGreen[1], colFrameGreen[2]), cll=1, cl=1, cc=partial(cShrinkWin, "win_zorroHelpBox")) cmds.rowColumnLayout(nc=3, cw = [(1, 210), (2, 105), (3, 105)]) cmds.button(l='Select FX Anim Geos', h=bh1, bgc=(colLightGreen[0], colLightGreen[1], colLightGreen[2]), c=partial(cSelectFXAnimELements)) cmds.button(l='Export As Abc', h=bh1, bgc=(colDarkGreen[0], colDarkGreen[1], colDarkGreen[2]), c=partial(cExportAsABC)) cmds.button(l='Reference FX Abc', h=bh1, bgc=(colDarkRed[0], colDarkRed[1], colDarkRed[2]), c=partial(cReferenceAnimABC)) cmds.setParent(top=1) # Caching cmds.frameLayout('flCaching', l='Caching', bgc=(colFrameGreen[0], colFrameGreen[1], colFrameGreen[2]), cll=1, cl=1, cc=partial(cShrinkWin, "win_zorroHelpBox")) cmds.columnLayout(adj=1, bgc=([0,0,0])) # cmds.rowColumnLayout(nc=4, cw = [(1, 120), (2, 90), (3, 120), (4, 90)]) cmds.button(l='Select Nucleus', c=partial(cSelect, 'nucleus1'), bgc=(colDarkGreen[0], colDarkGreen[1], colDarkGreen[2])) # cmds.setParent('..') cmds.rowColumnLayout(nc=7, cw = [(1, 45), (2, 45), (3, 45), (4, 45), (5, 45), (6, 100), (7, 95)]) cmds.text(' ', h=30, bgc=[0,0,0]) cmds.text('None', bgc=[0,0,0]) cmds.text('Shirt', bgc=[0,0,0]) cmds.text('Cape', bgc=[0,0,0]) cmds.text('Both', bgc=[0,0,0]) cmds.text('Cache', bgc=[0,0,0]) cmds.text('Cache ', bgc=[0,0,0]) # caching Mid cmds.text('MID', bgc=[0,0,0]) cmds.button(l='None', h=bh1, bgc=(colDarkRed[0], colDarkRed[1], colDarkRed[2]), c=partial(cSelectSimELements, 'none')) cmds.button(l='Mid', h=bh1, bgc=(colDarkGreen[0], colDarkGreen[1], colDarkGreen[2]), c=partial(cSelectSimELements, 'shirtMid')) cmds.button(l='Mid', h=bh1, bgc=(colDarkGreen[0], colDarkGreen[1], colDarkGreen[2]), c=partial(cSelectSimELements, 'capeMid')) cmds.button(l='Mid', h=bh1, bgc=(colDarkGreen[0], colDarkGreen[1], colDarkGreen[2]), c=partial(cSelectSimELements, 'bothMid')) cmds.button(l='Create', h=bh1, bgc=(colLightGreen[0], colLightGreen[1], colLightGreen[2]), c=partial(cClothCache)) cmds.button(l='Delete', h=bh1, bgc=(colDarkRed[0], colDarkRed[1], colDarkRed[2]), c=partial(cDeleteCache)) # caching Highres cmds.text('HIGH', bgc=[0,0,0]) cmds.button(l='None', h=bh1, bgc=(colDarkRed[0], colDarkRed[1], colDarkRed[2]), c=partial(cSelectSimELements, 'none')) cmds.button(l='High', h=bh1, bgc=(colDarkGreen[0], colDarkGreen[1], colDarkGreen[2]), c=partial(cSelectSimELements, 'shirtHi')) cmds.button(l='High', h=bh1, bgc=(colDarkGreen[0], colDarkGreen[1], colDarkGreen[2]), c=partial(cSelectSimELements, 'capeHi')) cmds.button(l='High', h=bh1, bgc=(colDarkGreen[0], colDarkGreen[1], colDarkGreen[2]), c=partial(cSelectSimELements, 'bothHi')) cmds.button(l='Create', h=bh1, bgc=(colLightGreen[0], colLightGreen[1], colLightGreen[2]), c=partial(cClothCache)) cmds.button(l='Delete', h=bh1, bgc=(colDarkRed[0], colDarkRed[1], colDarkRed[2]), c=partial(cDeleteCache)) cmds.setParent(top=1) # Bring To Highres cmds.frameLayout('flBring To Highres', l='Bring To Highres', bgc=(colFrameGreen[0], colFrameGreen[1], colFrameGreen[2]), cll=1, cl=1, cc=partial(cShrinkWin, "win_zorroHelpBox")) # cmds.rowColumnLayout(nc=3, cw = [(1, 120), (2, 210), (3, 90)]) cmds.rowColumnLayout(nc=3, cw = [(1, 90), (2, 240), (3, 90)]) cmds.button(l='Read Wraps', h=bh1, bgc=(colLightGreen[0], colLightGreen[1], colLightGreen[2]), c=partial(cWrapStatus, 'read', 'rbCapeWraps', 'capeWrap')) # cmds.radioButtonGrp('rbCapeWraps', label=' ', labelArray3=['Off', 'Mid', 'High'], numberOfRadioButtons=3, cal=[9, 'left'],cw4=[10, 67, 67, 67], sl=1) cmds.radioButtonGrp('rbCapeWraps', label='Cape', labelArray3=['Off', 'Mid', 'High'], numberOfRadioButtons=3, cal=[1, 'center'] ,cw4=[55, 55, 55, 55], sl=1) cmds.button(l='Set', h=bh1, bgc=(colDarkRed[0], colDarkRed[1], colDarkRed[2]), c=partial(cWrapStatus, 'set', 'rbCapeWraps', 'capeWrap')) cmds.button(l='Read Wraps', h=bh1, bgc=(colLightGreen[0], colLightGreen[1], colLightGreen[2]), c=partial(cWrapStatus, 'read', 'rbShirtWraps', 'shirtWrap')) # cmds.radioButtonGrp('rbShirtWraps', label=' ', labelArray3=['Off', 'Mid', 'High'], numberOfRadioButtons=3, cal=[9, 'left'],cw4=[10, 67, 67, 67], sl=1) cmds.radioButtonGrp('rbShirtWraps', label='Shirt', labelArray3=['Off', 'Mid', 'High'], numberOfRadioButtons=3, cal=[1, 'center'] ,cw4=[55, 55, 55, 55], sl=1) cmds.button(l='Set', h=bh1, bgc=(colDarkRed[0], colDarkRed[1], colDarkRed[2]), c=partial(cWrapStatus, 'set', 'rbShirtWraps', 'shirtWrap')) cmds.setParent(top=1) # Attach xGen cmds.frameLayout('flImportxGen', l='Import xGen Description', bgc=(colFrameGreen[0], colFrameGreen[1], colFrameGreen[2]), cll=1, cl=1, cc=partial(cShrinkWin, "win_zorroHelpBox")) # cmds.button(l='Select xGenBase Geo', h=bh1, en=1, bgc=(colLightGreen[0], colLightGreen[1], colLightGreen[2]), c=partial(cSelect, 'body_cn_hi_cfx')) cmds.rowColumnLayout(nc=3, cw = [(1, 100), (2, 260), (3, 60)]) cmds.button(l='xGen Path >>', bgc=(colDarkGreen[0], colDarkGreen[1], colDarkGreen[2]), h=bh1, c=partial(cGetPath, 'choose')) cmds.textField('tfPathxGen', tx=defaultPath, bgc=(0,0,0), ed=1) cmds.button(l='Default', bgc=(colDarkGreen[0], colDarkGreen[1], colDarkGreen[2]), h=bh1, c=partial(cGetPath, 'default')) cmds.button(l='Select Version', h=bh1, bgc=(colDarkGreen[0], colDarkGreen[1], colDarkGreen[2]), c=partial(cSelectxGenVersion)) cmds.textField('xGenVersion', tx=approvedxGen, bgc=(0,0,0), ed=0) cmds.button(l='Import', h=bh1, en=0, bgc=(colLightGreen[0], colLightGreen[1], colLightGreen[2]), c=partial(cImportxGen, 'remove')) # cmds.setParent('..') # cmds.button(l='Fix Naming', h=bh1, en=1, bgc=(colRed[0], colRed[1], colRed[2]), c=partial(cFixNaming, 'body_cn_hi_cfx')) cmds.setParent(top=1) # Select Geos For Playblast cmds.frameLayout('flPlayblast', l='Select Geos For Playblast', bgc=(colFrameGreen[0], colFrameGreen[1], colFrameGreen[2]), cll=1, cl=1, cc=partial(cShrinkWin, "win_zorroHelpBox")) cmds.rowColumnLayout(nc=4, cw = [(1, 105), (2, 105), (3, 105), (4, 105)]) cmds.button(l='Cloth Mid', h=bh1, bgc=(colLightGreen[0], colLightGreen[1], colLightGreen[2]), c=partial(cSelectForPlayblast, 'clothSetMid')) cmds.button(l='Cloth Mid xGen', h=bh1, bgc=(colLightGreen[0], colLightGreen[1], colLightGreen[2]), c=partial(cSelectForPlayblast, 'clothxGenSetMid')) cmds.button(l='Add Mask', h=bh1, bgc=(colLightGreen[0], colLightGreen[1], colLightGreen[2]), c=partial(cSelectForPlayblast, 'zorroMask')) cmds.setParent(top=1) # flFeedback cmds.frameLayout('flFeedback', l=' FEEDBACK', fn='obliqueLabelFont', bgc=(colDarkGreen[0], colDarkGreen[1], colDarkGreen[2]), cll=0, cl=0) cmds.rowColumnLayout(nc=2, cw = [(1, 360), (2, 60)]) cmds.textField('tfFeedback', ed=0, bgc=[0,0,0]) cmds.button(l='Clear', bgc=(colDarkGreen[0], colDarkGreen[1], colDarkGreen[2]), c=partial(cClear, 'tfFeedback', '', [0, 0, 0])) cmds.showWindow(myWindow) cmds.window('win_zorroHelpBox', e=1, w=300)
def cClear(field, text, color, *args): cmds.textField(field, tx=text, bgc=color, e=1)
def tfSelectxGenVersion(*args): chosenVersion = cmds.textScrollList('txGenVersion', si=1, q=1) cmds.deleteUI('win_xGenList') cmds.textField('xGenVersion', tx=chosenVersion[0], e=1)
def cSelectSimELements(object, *args): CLT = [] nmSpcFX = cmds.textField('tfNmSpcFX', tx=1, q=1) if nmSpcFX: nmSpcFX = nmSpcFX + ':' if cmds.objExists(nmSpcFX + 'shirt_cn_cfx_mid_geo_SIM') is False: cClear('tfFeedback', 'Objects not found! Check the namespace!', [.3, 0, 0]) else: if (object == 'shirtMid'): CLT = ['shirt_cn_cfx_mid_geo_SIM'] cmds.setAttr(nmSpcFX + dynControl + '.shirt', 1) if (object == 'capeMid'): CLT = ['cape_cn_cfx_mid_geo_SIM'] cmds.setAttr(nmSpcFX + dynControl + '.cape', 1) cmds.checkBox('cbCape', v=1, e=1) if (object == 'bothMid'): CLT = ['cape_cn_cfx_mid_geo_SIM', 'shirt_cn_cfx_mid_geo_SIM'] cmds.setAttr(nmSpcFX + dynControl + '.shirt', 1) cmds.setAttr(nmSpcFX + dynControl + '.cape', 1) cmds.checkBox('cbCape', v=1, e=1) cmds.checkBox('cbShirt', v=1, e=1) if (object == 'shirtHi'): CLT = ['shirt_cn_cfx_hi_geo_SIM'] cmds.setAttr(nmSpcFX + dynControl + '.shirt', 2) cmds.checkBox('cbShirt', v=1, e=1) if (object == 'capeHi'): CLT = ['cape_cn_cfx_hi_geo_SIM'] cmds.setAttr(nmSpcFX + dynControl + '.cape', 2) cmds.checkBox('cbCape', v=1, e=1) if (object == 'bothHi'): CLT = ['cape_cn_cfx_hi_geo_SIM', 'shirt_cn_cfx_hi_geo_SIM'] cmds.setAttr(nmSpcFX + dynControl + '.shirt', 2) cmds.setAttr(nmSpcFX + dynControl + '.cape', 2) cmds.checkBox('cbCape', v=1, e=1) cmds.checkBox('cbShirt', v=1, e=1) if (object == 'none'): CLT = [] cmds.setAttr(nmSpcFX + dynControl + '.shirt', 0) cmds.setAttr(nmSpcFX + dynControl + '.cape', 0) cmds.checkBox('cbCape', v=0, e=1) cmds.checkBox('cbShirt', v=0, e=1) cmds.select(clear=1) if nmSpcFX: nmSpcFX = nmSpcFX + ':' for clt in CLT: cmds.select(nmSpcFX + clt, add=1) else: cmds.select(CLT, r=1)
if nodesCreated != totalNodes: cmds.error("Made " + nodesCreated + " file nodes, expected " + totalNodes + ". Check file names?") return ##UI #Create fresh window winID = "load_substance_maps" if cmds.window(winID, exists=True): cmds.deleteUI(winID) win = cmds.window(winID, title="Load Substance Maps", sizeable=False) cmds.window( win, edit=True, widthHeight=(500, 140) ) #Layout cmds.rowColumnLayout(numberOfColumns=2, columnWidth=[(1, 440), (2, 60)]) cmds.text( label='Select folder containing Substance Painter maps.', height=30 ) cmds.separator(style='none') srcDir = cmds.textField() cmds.button(label="Browse", command='browse(srcDir)') cmds.separator(style='none', height=30) cmds.separator(style='none') cmds.button(label="Import as aiStandardSurface", command='import_maps(srcDir)', height=40) cmds.showWindow()
def build_gui_fspy_importer(): ''' Builds Main UI ''' window_name = "build_gui_fspy_importer" if cmds.window(window_name, exists =True): cmds.deleteUI(window_name) # Main GUI Start Here ================================================================================= # Build UI build_gui_fspy_importer = cmds.window(window_name, title=script_name + ' (v' + script_version + ')',\ titleBar=True, mnb=False, mxb=False, sizeable =True) cmds.window(window_name, e=True, s=True, wh=[1,1]) content_main = cmds.columnLayout(adj = True) # Title Text title_bgc_color = (.4, .4, .4) cmds.separator(h=10, style='none') # Empty Space cmds.rowColumnLayout(nc=1, cw=[(1, 340)], cs=[(1, 10)], p=content_main) # Window Size Adjustment cmds.rowColumnLayout(nc=3, cw=[(1, 10), (2, 270), (3, 50)], cs=[(1, 10), (2, 0), (3, 0)], p=content_main) # Title Column cmds.text(" ", bgc=title_bgc_color) # Tiny Empty Green Space cmds.text(script_name, bgc=title_bgc_color, fn="boldLabelFont", align="left") cmds.button( l ="Help", bgc=title_bgc_color, c=lambda x:build_gui_help_fspy_importer()) cmds.separator(h=3, style='none', p=content_main) # Empty Space # Body ==================== body_column = cmds.rowColumnLayout(nc=1, cw=[(1, 340)], cs=[(1,10)], p=content_main) # Generate Images # Icon icons_folder_dir = cmds.internalVar(userBitmapsDir=True) icon_image = icons_folder_dir + 'gt_fspy_importer.png' if os.path.isdir(icons_folder_dir) == False: icon_image = ':/camera.open.svg' if os.path.isdir(icons_folder_dir) and os.path.exists(icon_image) == False: image_enconded = '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' #image_64_decode = base64.decodestring(image_enconded) image_64_decode = base64.b64decode(image_enconded) image_result = open(icon_image, 'wb') image_result.write(image_64_decode) image_result.close() cmds.separator(h=7, style='none', p=body_column) # Empty Space cmds.rowColumnLayout(nc=1, cw=[(1, 300)], cs=[(1,2)]) cmds.text('JSON File Path:', font='tinyBoldLabelFont', align='left') cmds.rowColumnLayout(nc=2, cw=[(1, 290),(2, 30)], cs=[(1,0),(2,5)], p=body_column) json_file_path_txtfld = cmds.textField(pht='Path Pointing to JSON File') open_json_btn = cmds.iconTextButton( style='iconAndTextVertical', image1=':/folder-open.png', label='',\ statusBarMessage='Open fSpy JSON File',\ olc=[1,0,0] , enableBackground=True, h=30,\ command=lambda: load_json_path()) cmds.separator(h=5, style='none', p=body_column) # Empty Space cmds.rowColumnLayout(nc=1, cw=[(1, 300)], cs=[(1,2)], p=body_column) cmds.text('Image File Path:', font='tinyBoldLabelFont', align='left') cmds.rowColumnLayout(nc=2, cw=[(1, 290),(2, 30)], cs=[(1,0),(2,5)], p=body_column) image_file_path_txtfld = cmds.textField(pht='Path Pointing to Image File') open_image_btn = cmds.iconTextButton( style='iconAndTextVertical', image1=':/folder-open.png', label='',\ statusBarMessage='Open fSpy Image File',\ olc=[1,0,0] , enableBackground=True, h=30,\ command=lambda: load_image_path()) cmds.separator(h=10, style='none', p=body_column) # Empty Space cmds.rowColumnLayout(nc=3, cw=[(1, 140),(2, 100),(3, 100)], cs=[(1,2)], p=body_column) set_resolution_chk = cmds.checkBox('Set Scene Resolution', value=True) convert_axis_z_to_y = cmds.checkBox('+Z Axis is +Y', value=True) lock_camera_chk = cmds.checkBox('Lock Camera', value=True) cmds.separator(h=10, style='none', p=body_column) # Empty Space cmds.rowColumnLayout(nc=1, cw=[(1, 330)], cs=[(1,0)], p=body_column) cmds.button(l ="Import (Generate Camera)", bgc=(.6, .6, .6), c=lambda x:check_before_run()) cmds.separator(h=10, style='none', p=body_column) # Empty Space def check_before_run(): ''' Performs a few sanity checks before running the script ''' set_resolution = cmds.checkBox(set_resolution_chk, q=True, value=True) convert_z_to_y = cmds.checkBox(convert_axis_z_to_y, q=True, value=True) lock_camera = cmds.checkBox(lock_camera_chk, q=True, value=True) is_valid = True json_path = cmds.textField(json_file_path_txtfld, q=True, text=True) image_path = cmds.textField(image_file_path_txtfld, q=True, text=True) if json_path == '': cmds.warning('The JSON file path is empty.') is_valid = False if image_path == '': cmds.warning('The image file path is empty.') is_valid = False if json_path != '' and os.path.exists(json_path) == False: cmds.warning('The provided JSON path doesn\'t seem to point to an existing file.') is_valid = False if image_path != '' and os.path.exists(image_path) == False: cmds.warning('The provided image path doesn\'t seem to point to an existing file.') is_valid = False try: if is_valid: with open(json_path) as json_file: json_data = json.load(json_file) image_width = json_data['imageWidth'] except: is_valid = False cmds.warning('The provided JSON file seems to be missing some data.') if is_valid: gt_import_fspy_json(json_path,image_path, convert_up_axis_z_to_y=convert_z_to_y, lock_camera=lock_camera, set_scene_resolution=set_resolution) def load_json_path(): ''' Invoke open file dialog so the user can select a JSON file (Populates the "json_file_path_txtfld" with user input) ''' multiple_filters = "JSON fSpy Files (*.json);;All Files (*.*)" file_path = cmds.fileDialog2(fileFilter=multiple_filters, dialogStyle=2, fm=1, caption='Select fSpy JSON File', okc='Select JSON') if file_path: cmds.textField(json_file_path_txtfld, e=True, text=file_path[0]) try: extension = os.path.splitext(file_path[0])[1] if extension == '.fspy': cmds.warning('You selected an "fSpy" file. This script only supports "json" files. Please select another file.') except: pass def load_image_path(): ''' Invoke open file dialog so the user can select an image file (Populates the "image_file_path_txtfld" with user input) ''' multiple_filters = "Image Files (*.*)" file_path = cmds.fileDialog2(fileFilter=multiple_filters, dialogStyle=2, fm=1, caption='Select fSpy JSON File', okc='Select JSON') if file_path: cmds.textField(image_file_path_txtfld, e=True, text=file_path[0]) try: extension = os.path.splitext(file_path[0])[1] if extension == '.fspy': cmds.warning('You selected an "fSpy" file. Please update this path to an image.') elif extension == '.json': cmds.warning('You selected a "json" file. Please update this path to an image.') except: pass # Show and Lock Window cmds.showWindow(build_gui_fspy_importer) cmds.window(window_name, e=True, s=False) # Remove the focus from the textfield and give it to the window cmds.setFocus(window_name) # Set Window Icon qw = omui.MQtUtil.findWindow(window_name) if python_version == 3: widget = wrapInstance(int(qw), QWidget) else: widget = wrapInstance(long(qw), QWidget) icon = QIcon(icon_image) widget.setWindowIcon(icon)
def browse(srcTextField): dir = cmds.fileDialog2(fm=3, dialogStyle=1)[0] cmds.textField(srcTextField, edit=True, tx=dir) return dir
def getFilePath(self): return cmds.textField("filePathField", query=True, text=True)
def rename_command(part): rename_tex = cmds.textField(rename_texfld, q=1, text=1) #rename.UI_textField에 적는 값을 추출 if part == "rename": Rig_command.rename(rename_tex) #Rig_command에 있는 rename함수 연결
def browse(self): newfilepath = cmds.fileDialog2(fm=0, okc='Save file as') cmds.textField("filePathField", e=1, text=str(newfilepath[0]))
def modifySelected(self, *args): if cmds.checkBox(self.UIElements["symmetryMoveCheckBox"], q=True, value=True): self.deleteSymmetryMoveExpressions() self.setupSymmetryMoveExpressions() selectedNodes = cmds.ls(selection=True) if len(selectedNodes) <= 1: self.moduleInstance = None selectedModuleNamespace = None currentModuleFile = None cmds.button(self.UIElements["ungroupBtn"], edit=True, enable=False) cmds.button(self.UIElements["mirrorModuleBtn"], edit=True, enable=False) if len(selectedNodes) == 1: lastSelected = selectedNodes[0] if lastSelected.find("Group__") == 0: cmds.button(self.UIElements["ungroupBtn"], edit=True, enable=True) cmds.button(self.UIElements["mirrorModuleBtn"], edit=True, enable=True, label="Mirror Group") namespaceAndNode = utils.stripLeadingNamespace(lastSelected) if namespaceAndNode != None: namespace = namespaceAndNode[0] moduleNameInfo = utils.findAllModuleNames("/Modules/Blueprint") validModules = moduleNameInfo[0] validModuleNames = moduleNameInfo[1] index = 0 for moduleName in validModuleNames: moduleNameIncSuffix = moduleName + "__" if namespace.find(moduleNameIncSuffix) == 0: currentModuleFile = validModules[index] selectedModuleNamespace = namespace break index += 1 controlEnable = False userSpecifiedName = "" constrainCommand = self.constrainRootToHook constrainLabel = "Constrain Root > Hook" if selectedModuleNamespace != None: controlEnable = True userSpecifiedName = selectedModuleNamespace.partition("__")[2] mod = __import__("Blueprint."+currentModuleFile, {},{}, [currentModuleFile]) reload(mod) moduleClass = getattr(mod, mod.CLASS_NAME) self.moduleInstance = moduleClass(userSpecifiedName, None) cmds.button(self.UIElements["mirrorModuleBtn"], edit=True, enable=True, label="Mirror Module") if self.moduleInstance.isRootConstrained(): constrainCommand = self.unconstrainRootFromHook constrainLabel = "Unconstrain Root" #cmds.button(self.UIElements["mirrorModuleBtn"], edit=True, enable=controlEnable) cmds.button(self.UIElements["rehookBtn"], edit=True, enable=controlEnable) cmds.button(self.UIElements["snapRootBtn"], edit=True, enable=controlEnable) cmds.button(self.UIElements["constrainRootBtn"], edit=True, enable=controlEnable, label=constrainLabel, c=constrainCommand ) cmds.button(self.UIElements["deleteModuleBtn"], edit=True, enable=controlEnable, c=self.deleteModule) cmds.textField(self.UIElements["moduleName"], edit=True, enable=controlEnable, text=userSpecifiedName) self.createModuleSpecificControls() self.createScriptJob()
def setText(textBox): sel = cmds.ls(sl=True) if sel: cmds.textField(textBox, edit=True, tx=sel[0])
def getVoxelSize(self): return float(cmds.textField("voxelSizeField", query=True, text=True))
def ReturnToOptionMenu(self, selfMenu, item): cmds.optionMenu(selfMenu, edit=True, vis=True) cmds.textField(self, edit=True, vis=False) cmds.menuItem(parent=selfMenu, label=item) cmds.optionMenu(selfMenu, edit=True, v=item)
def textFF(self): textF = self.textF content = cmds.textField(textF, query=True, text=True) print content return content
def getShape1(): global getShape1_VAR_CCT global getObj1_VAR_CCT getObj1_VAR_CCT = mc.ls (sl = True) getShape1_VAR_CCT = mc.channelBox ('mainChannelBox', q=True, sma=True)[0] mc.textField (getShape1_TF, e = True, text = getObj1_VAR_CCT[0] + '.' + getShape1_VAR_CCT)
def BackpackWindow(): data = loadPrefs() localPath = '' storageType = 'Local Folder' tokenPath = '' try: localPath = data['backpack']['localPath'] except: pass try: tokenPath = data['backpack']['tokenPath'] except: pass try: storageType = data['backpack']['storageType'] except: pass localVis = 0 dropboxVis = 1 if storageType == 'Local Folder': localVis = 1 dropboxVis = 0 modelingForm = cmds.formLayout('modelingForm') #setting menu settingsButton = cmds.iconTextButton(style='iconOnly', image1='gear.png', c='toggleVis()') settingsMenu = cmds.columnLayout('settingsMenu', vis=False, adj=True) cmds.optionMenu("storageType", w=50, changeCommand='toggleStorageType()') cmds.menuItem(label="Local Folder") cmds.menuItem(label="Dropbox App") cmds.optionMenu("storageType", e=True, v=storageType) cmds.rowLayout('localPathGrp', numberOfColumns=2, adj=1, vis=localVis) localFolderPath = cmds.textField('localFolderPath', ed=False, tx=localPath) browseBtn = cmds.button(l='...', c='browseToFolder()', w=30) cmds.setParent(settingsMenu) cmds.rowLayout('dbPathGrp', numberOfColumns=2, adj=1, vis=dropboxVis) tokenPathField = cmds.textField('tokenPathField', ed=False, tx=tokenPath) cmds.button(l='...', w=30, c='browseToToken()') cmds.setParent(settingsMenu) cmds.setParent(modelingForm) typeText = cmds.text(label="Type") nameText = cmds.text(label="Name") reloadButton = cmds.iconTextButton(style='iconOnly', image1='refresh.png', c='setText(\'modelNameInputText\')') modelBtn1 = cmds.button("modelBtn1", l='Pocket', h=50, w=200, c='exportFile()') #model class menu modelClass = cmds.optionMenu("modelClass", w=50, changeCommand='UpdateMenus()') cmds.menuItem(label="Create New") cmds.menuItem(divider=True) modelClassInputText = cmds.textField( "modelClassInputText", w=50, vis=False, cc= 'ReturnToOptionMenu("modelClassInputText","modelClass",cmds.textField("modelClassInputText",q=True,tx=True ))' ) if (cmds.optionMenu(modelClass, q=True, numberOfItems=True) > 2): cmds.optionMenu(modelClass, edit=True, sl=3) #model name menu modelNameInputText = cmds.textField("modelNameInputText") cmds.formLayout(modelingForm, edit=True, attachForm=[(settingsMenu, 'left', 10), (settingsMenu, 'right', 40), (settingsButton, 'right', 0), (modelBtn1, 'left', 0), (modelBtn1, 'right', 0), (typeText, 'left', 10), (nameText, 'left', 10), (reloadButton, 'right', 10), (modelBtn1, 'bottom', 0), (modelClass, 'left', 50), (modelClassInputText, 'left', 50), (modelNameInputText, 'left', 50), (modelClass, 'right', 10), (modelClassInputText, 'right', 10), (modelNameInputText, 'right', 10)], attachControl=[ (modelClass, 'right', 10, reloadButton), (modelClassInputText, 'right', 10, reloadButton), (modelNameInputText, 'right', 10, reloadButton), (reloadButton, 'top', 72, settingsMenu), (typeText, 'top', 42, settingsMenu), (modelClass, 'top', 40, settingsMenu), (modelClassInputText, 'top', 40, settingsMenu), (modelNameInputText, 'top', 70, settingsMenu), (nameText, 'top', 72, settingsMenu) ]) cmds.setParent('..') setText('modelNameInputText') toggleStorageType() UpdateMenus()
def build_gui_create_testing_keys(): window_name = "build_gui_create_testing_keys" if cmds.window(window_name, exists=True): cmds.deleteUI(window_name) # Main GUI Start Here ================================================================================= build_gui_create_testing_keys = cmds.window(window_name, title=script_name + ' (v' + script_version + ')',\ titleBar=True, mnb=False, mxb=False, sizeable =True) cmds.window(window_name, e=True, s=True, wh=[1, 1]) content_main = cmds.columnLayout(adj=True) # Title Text title_bgc_color = (.4, .4, .4) cmds.separator(h=10, style='none') # Empty Space cmds.rowColumnLayout(nc=1, cw=[(1, 240)], cs=[(1, 10)], p=content_main) # Window Size Adjustment cmds.rowColumnLayout(nc=3, cw=[(1, 10), (2, 170), (3, 50)], cs=[(1, 10), (2, 0), (3, 0)], p=content_main) # Title Column cmds.text(" ", bgc=title_bgc_color) # Tiny Empty Green Space cmds.text(script_name, bgc=title_bgc_color, fn="boldLabelFont", align="left") cmds.button(l="Help", bgc=title_bgc_color, c=lambda x: build_gui_help_create_testing_keys()) cmds.separator(h=10, style='none') # Empty Space # Body ==================== body_column = cmds.rowColumnLayout(nc=1, cw=[(1, 230)], cs=[(1, 10)], p=content_main) cmds.rowColumnLayout(nc=1, cw=[(1, 230)], cs=[(1, 20)]) transform_column_width = [100, 1] # Offset Values Transforms copy_text_container = cmds.rowColumnLayout(p=body_column, numberOfRows=1, adj=True) cmds.text("Offset Amount", p=copy_text_container) cmds.separator(h=7, style='none', p=body_column) # Empty Space cmds.rowColumnLayout(nc=4, cw=[(1, 20), (2, 63), (3, 63), (4, 63)], cs=[(1, 6), (2, 0), (3, 2), (4, 2)], p=body_column) cmds.text(' ') cmds.text('X', bgc=[.5, 0, 0]) cmds.text('Y', bgc=[0, .5, 0]) cmds.text('Z', bgc=[0, 0, .5]) cmds.rowColumnLayout(nc=4, cw=[(1, 20), (2, 65), (3, 65), (4, 65)], cs=[(1, 5), (2, 0)], p=body_column) cmds.text('T') tx_offset_text_field = cmds.textField(text='0.0', ann='tx') ty_offset_text_field = cmds.textField(text='0.0', ann='ty') tz_offset_text_field = cmds.textField(text='0.0', ann='tz') cmds.text('R') rx_offset_text_field = cmds.textField(text='0.0', ann='rx') ry_offset_text_field = cmds.textField(text='0.0', ann='ry') rz_offset_text_field = cmds.textField(text='0.0', ann='rz') cmds.text('S') sx_offset_text_field = cmds.textField(text='0.0', ann='sx') sy_offset_text_field = cmds.textField(text='0.0', ann='sy') sz_offset_text_field = cmds.textField(text='0.0', ann='sz') cmds.separator(h=10, style='none', p=body_column) # Empty Space cmds.rowColumnLayout(nc=1, cw=[(1, 210)], cs=[(1, 10)], p=body_column) cmds.button(l='Reset All Offset Values', bgc=(.3, .3, .3), c=lambda x: reset_offset_values()) cmds.separator(h=10, style='none', p=body_column) # Empty Space cmds.rowColumnLayout(nc=1, cw=[(1, 200)], cs=[(1, 25)], p=body_column) add_inverted_checkbox = cmds.checkBox(l=' Add Inverted Offset Movement', value=True) cmds.separator(h=5, style='none') # Empty Space delete_keys_checkbox = cmds.checkBox(l=' Delete Previously Created Keys', value=True) cmds.separator(h=5, style='none') # Empty Space use_ws_checkbox = cmds.checkBox(l=' Use World Space (WS) Values', value=True) cmds.separator(h=5, style='none', p=body_column) # Empty Space cmds.rowColumnLayout(nc=1, cw=[(1, 180)], cs=[(1, 25)], p=body_column) interval_text_field = cmds.floatSliderGrp(cw=[(1,133),(2,45),(3,0)], cal=[(1,'left')], field=True, label='Interval Between Frames:',\ minValue=0, maxValue=1000, fieldMinValue=0, fieldMaxValue=1000, value=5)#, cc=lambda args: update_grade_output()) cmds.separator(h=7, style='none', p=body_column) # Empty Space cmds.rowColumnLayout(nc=1, cw=[(1, 210)], cs=[(1, 10)], p=body_column) cmds.button(l='Delete All Keyframes in the Scene', bgc=(.3, .3, .3), c=lambda x: gtu_delete_keyframes()) cmds.separator(h=7, style='none') # Empty Space cmds.button(l='Create Testing Keyframes', bgc=(.6, .6, .6), c=lambda x: validate_operation()) cmds.separator(h=13, style='none', p=content_main) # Empty Space # GUI Build Ends -------------------------------------------- def validate_operation(): ''' ''' errors = '' try: cmds.undoInfo(openChunk=True, chunkName=script_name) offset_text_fields = [tx_offset_text_field, ty_offset_text_field, tz_offset_text_field,\ rx_offset_text_field, ry_offset_text_field, rz_offset_text_field,\ sx_offset_text_field, sy_offset_text_field, sz_offset_text_field] initial_time = cmds.currentTime(q=True) selection = cmds.ls(selection=True) if len(cmds.ls(selection=True)) != 0: interval = cmds.floatSliderGrp(interval_text_field, q=True, value=True) add_inverted = cmds.checkBox(add_inverted_checkbox, q=True, value=True) delete_keys = cmds.checkBox(delete_keys_checkbox, q=True, value=True) use_ws = cmds.checkBox(use_ws_checkbox, q=True, value=True) if delete_keys: for obj in cmds.ls(selection=True): connections = cmds.listConnections( obj, type='animCurveTA') or [] connections += cmds.listConnections( obj, type='animCurveTL') or [] connections += cmds.listConnections( obj, type='animCurveTT') or [] connections += cmds.listConnections( obj, type='animCurveTU') or [] for key in connections: try: cmds.delete(key) except: pass # Apply Offsets for text_field in offset_text_fields: attr = cmds.textField(text_field, q=True, ann=True) value = 0.0 try: value = float( cmds.textField(text_field, q=True, text=True)) except: pass if value > 0: create_testing_keyframes(value, attr, interval, create_inverted=add_inverted, ws_method=use_ws) else: cmds.warning( 'Select at least one object to create testing key frames.') cmds.currentTime(initial_time) # Return Time to initial value except Exception as e: errors += str(e) + '\n' finally: cmds.undoInfo(closeChunk=True, chunkName=script_name) if errors != '': cmds.warning( 'An error occured when creating the keyframes. Open the script editor for more information.' ) print('######## Errors: ########') print(errors) print('#########################') def create_testing_keyframes(offset, attr, interval, create_inverted=False, ws_method=True): ''' Creates a sequence of keyframes on the selected objects so they move for testing Used to quickly test joints when rigging Parameters: offset (float, int): keyframe value, how much it will move up and down (e.g. 1 or 2...) attr (string): name of the attribute "e.g. rotation" interval (int): Interval between keyframes (frequency) create_inverted (bool): Whether or not to increate a key with the inverted offset value ''' initial_time = cmds.currentTime(q=True) selection = cmds.ls(selection=True) current_frame = cmds.playbackOptions( animationStartTime=True, q=True ) # Gets the first frame available in the timeline (usually 0 or 1) current_max_time = cmds.playbackOptions( maxTime=True, q=True ) # Gets the max time (work area end frame) to see if it needs to expand the timeline cmds.currentTime(current_frame) # Resets timeline to first frame offset_vec = (0, 0, 0) # Desired Channel translate = False rotate = False scale = False if 't' in attr: translate = True elif 'r' in attr: rotate = True elif 's' in attr: scale = True # Assemble Offset if 'x' in attr: offset_vec = (offset, offset_vec[1], offset_vec[2]) elif 'y' in attr: offset_vec = (offset_vec[0], offset, offset_vec[2]) else: offset_vec = (offset_vec[0], offset_vec[1], offset) for obj in selection: if cmds.objExists(obj): # Create key at neutral pose cmds.setKeyframe(obj, at=attr, t=current_frame, itt='linear', ott='linear') if translate: orig_tx = cmds.getAttr(obj + '.tx') orig_ty = cmds.getAttr(obj + '.ty') orig_tz = cmds.getAttr(obj + '.tz') if ws_method: temp_grp = cmds.group(name='temp_grp_', w=True, em=True) cmds.parentConstraint(obj, temp_grp) orig_tx = cmds.getAttr(temp_grp + '.tx') orig_ty = cmds.getAttr(temp_grp + '.ty') orig_tz = cmds.getAttr(temp_grp + '.tz') cmds.delete(temp_grp) cmds.setKeyframe(obj, at='.tx', t=current_frame, itt='linear', ott='linear') cmds.setKeyframe(obj, at='.ty', t=current_frame, itt='linear', ott='linear') cmds.setKeyframe(obj, at='.tz', t=current_frame, itt='linear', ott='linear') if rotate: orig_rx = cmds.getAttr(obj + '.rx') orig_ry = cmds.getAttr(obj + '.ry') orig_rz = cmds.getAttr(obj + '.rz') if ws_method: temp_grp = cmds.group(name='temp_grp_', w=True, em=True) cmds.parentConstraint(obj, temp_grp) orig_rx = cmds.getAttr(temp_grp + '.rx') orig_ry = cmds.getAttr(temp_grp + '.ry') orig_rz = cmds.getAttr(temp_grp + '.rz') cmds.delete(temp_grp) cmds.setKeyframe(obj, at='.rx', t=current_frame, itt='linear', ott='linear') cmds.setKeyframe(obj, at='.ry', t=current_frame, itt='linear', ott='linear') cmds.setKeyframe(obj, at='.rz', t=current_frame, itt='linear', ott='linear') if scale: orig_sx = cmds.getAttr(obj + '.sx') orig_sy = cmds.getAttr(obj + '.sy') orig_sz = cmds.getAttr(obj + '.sz') # Create key at positive pose current_frame += interval if translate and not ws_method: offset_tx = orig_tx + offset_vec[0] offset_ty = orig_ty + offset_vec[1] offset_tz = orig_tz + offset_vec[2] if not cmds.getAttr(obj + '.tx', lock=True) and offset_tx != orig_tx: cmds.setAttr(obj + '.tx', offset_tx) if not cmds.getAttr(obj + '.ty', lock=True) and offset_ty != orig_ty: cmds.setAttr(obj + '.ty', offset_ty) if not cmds.getAttr(obj + '.tz', lock=True) and offset_tz != orig_tz: cmds.setAttr(obj + '.tz', offset_tz) elif translate and ws_method: # WS Pose offset_tx = orig_tx + offset_vec[0] offset_ty = orig_ty + offset_vec[1] offset_tz = orig_tz + offset_vec[2] cmds.xform(obj, ws=True, t=(offset_tx, offset_ty, offset_tz)) cmds.setKeyframe(obj, at='.tx', t=current_frame, itt='linear', ott='linear') cmds.setKeyframe(obj, at='.ty', t=current_frame, itt='linear', ott='linear') cmds.setKeyframe(obj, at='.tz', t=current_frame, itt='linear', ott='linear') if rotate and not ws_method: offset_rx = orig_rx + offset_vec[0] offset_ry = orig_ry + offset_vec[1] offset_rz = orig_rz + offset_vec[2] if not cmds.getAttr(obj + '.rx', lock=True) and offset_rx != orig_rx: cmds.setAttr(obj + '.rx', offset_rx) if not cmds.getAttr(obj + '.ry', lock=True) and offset_ry != orig_ry: cmds.setAttr(obj + '.ry', offset_ry) if not cmds.getAttr(obj + '.rz', lock=True) and offset_rz != orig_rz: cmds.setAttr(obj + '.rz', offset_rz) elif rotate and ws_method: # WS Pose offset_rx = orig_rx + offset_vec[0] offset_ry = orig_ry + offset_vec[1] offset_rz = orig_rz + offset_vec[2] cmds.xform(obj, ws=True, ro=(offset_rx, offset_ry, offset_rz)) cmds.setKeyframe(obj, at='.rx', t=current_frame, itt='linear', ott='linear') cmds.setKeyframe(obj, at='.ry', t=current_frame, itt='linear', ott='linear') cmds.setKeyframe(obj, at='.rz', t=current_frame, itt='linear', ott='linear') if scale: offset_sx = orig_sx + offset_vec[0] offset_sy = orig_sy + offset_vec[1] offset_sz = orig_sz + offset_vec[2] if not cmds.getAttr(obj + '.sx', lock=True) and offset_sx != orig_sx: cmds.setAttr(obj + '.sx', offset_sx) if not cmds.getAttr(obj + '.sy', lock=True) and offset_sy != orig_sy: cmds.setAttr(obj + '.sy', offset_sy) if not cmds.getAttr(obj + '.sz', lock=True) and offset_sz != orig_sz: cmds.setAttr(obj + '.sz', offset_sz) cmds.setKeyframe(obj, at=attr, t=current_frame, itt='linear', ott='linear') if create_inverted: # Create key at negative pose current_frame += interval if translate and not ws_method: offset_tx = orig_tx + offset_vec[0] * -1 offset_ty = orig_ty + offset_vec[1] * -1 offset_tz = orig_tz + offset_vec[2] * -1 if not cmds.getAttr( obj + '.tx', lock=True) and offset_tx != orig_tx: cmds.setAttr(obj + '.tx', offset_tx) if not cmds.getAttr( obj + '.ty', lock=True) and offset_ty != orig_ty: cmds.setAttr(obj + '.ty', offset_ty) if not cmds.getAttr( obj + '.tz', lock=True) and offset_tz != orig_tz: cmds.setAttr(obj + '.tz', offset_tz) elif translate and ws_method: # WS Pose offset_tx = orig_tx + offset_vec[0] * -1 offset_ty = orig_ty + offset_vec[1] * -1 offset_tz = orig_tz + offset_vec[2] * -1 cmds.xform(obj, ws=True, t=(offset_tx, offset_ty, offset_tz)) cmds.setKeyframe(obj, at='.tx', t=current_frame, itt='linear', ott='linear') cmds.setKeyframe(obj, at='.ty', t=current_frame, itt='linear', ott='linear') cmds.setKeyframe(obj, at='.tz', t=current_frame, itt='linear', ott='linear') if rotate and not ws_method: offset_rx = orig_rx + offset_vec[0] * -1 offset_ry = orig_ry + offset_vec[1] * -1 offset_rz = orig_rz + offset_vec[2] * -1 if not cmds.getAttr( obj + '.rx', lock=True) and offset_rx != orig_rx: cmds.setAttr(obj + '.rx', offset_rx) if not cmds.getAttr( obj + '.ry', lock=True) and offset_ry != orig_ry: cmds.setAttr(obj + '.ry', offset_ry) if not cmds.getAttr( obj + '.rz', lock=True) and offset_rz != orig_rz: cmds.setAttr(obj + '.rz', offset_rz) elif rotate and ws_method: # WS Pose offset_rx = orig_rx + offset_vec[0] * -1 offset_ry = orig_ry + offset_vec[1] * -1 offset_rz = orig_rz + offset_vec[2] * -1 cmds.xform(obj, ws=True, ro=(offset_rx, offset_ry, offset_rz)) cmds.setKeyframe(obj, at='.rx', t=current_frame, itt='linear', ott='linear') cmds.setKeyframe(obj, at='.ry', t=current_frame, itt='linear', ott='linear') cmds.setKeyframe(obj, at='.rz', t=current_frame, itt='linear', ott='linear') if scale: offset_sx = orig_sx + (orig_sx * -1) * 2 + ( offset_vec[0] * -1) offset_sy = orig_sy + (orig_sy * -1) * 2 + ( offset_vec[1] * -1) offset_sz = orig_sz + (orig_sz * -1) * 2 + ( offset_vec[2] * -1) if not cmds.getAttr( obj + '.sx', lock=True) and offset_sx != orig_sx: cmds.setAttr(obj + '.sx', offset_sx) if not cmds.getAttr( obj + '.sy', lock=True) and offset_sy != orig_sy: cmds.setAttr(obj + '.sy', offset_sy) if not cmds.getAttr( obj + '.sz', lock=True) and offset_sz != orig_sz: cmds.setAttr(obj + '.sz', offset_sz) cmds.setKeyframe(obj, at=attr, t=current_frame, itt='linear', ott='linear') # Create key at neutral pose current_frame += interval if translate and not ws_method: if not cmds.getAttr(obj + '.tx', lock=True): cmds.setAttr(obj + '.tx', orig_tx) if not cmds.getAttr(obj + '.ty', lock=True): cmds.setAttr(obj + '.ty', orig_ty) if not cmds.getAttr(obj + '.tz', lock=True): cmds.setAttr(obj + '.tz', orig_tz) elif translate and ws_method: # WS Pose cmds.xform(obj, ws=True, t=(orig_tx, orig_ty, orig_tz)) cmds.setKeyframe(obj, at='.tx', t=current_frame, itt='linear', ott='linear') cmds.setKeyframe(obj, at='.ty', t=current_frame, itt='linear', ott='linear') cmds.setKeyframe(obj, at='.tz', t=current_frame, itt='linear', ott='linear') if rotate and not ws_method: if not cmds.getAttr(obj + '.rx', lock=True): cmds.setAttr(obj + '.rx', orig_rx) if not cmds.getAttr(obj + '.ry', lock=True): cmds.setAttr(obj + '.ry', orig_ry) if not cmds.getAttr(obj + '.rz', lock=True): cmds.setAttr(obj + '.rz', orig_rz) elif rotate and ws_method: # WS Pose cmds.xform(obj, ws=True, ro=(orig_rx, orig_ry, orig_rz)) cmds.setKeyframe(obj, at='.rx', t=current_frame, itt='linear', ott='linear') cmds.setKeyframe(obj, at='.ry', t=current_frame, itt='linear', ott='linear') cmds.setKeyframe(obj, at='.rz', t=current_frame, itt='linear', ott='linear') if scale: if not cmds.getAttr(obj + '.sx', lock=True): cmds.setAttr(obj + '.sx', orig_sx) if not cmds.getAttr(obj + '.sy', lock=True): cmds.setAttr(obj + '.sy', orig_sy) if not cmds.getAttr(obj + '.sz', lock=True): cmds.setAttr(obj + '.sz', orig_sz) cmds.setKeyframe(obj, at=attr, t=current_frame, itt='linear', ott='linear') else: # Create key at neutral pose current_frame += interval if translate and not ws_method: if not cmds.getAttr(obj + '.tx', lock=True): cmds.setAttr(obj + '.tx', orig_tx) if not cmds.getAttr(obj + '.ty', lock=True): cmds.setAttr(obj + '.ty', orig_ty) if not cmds.getAttr(obj + '.tz', lock=True): cmds.setAttr(obj + '.tz', orig_tz) elif translate and ws_method: # WS Pose cmds.xform(obj, ws=True, t=(orig_tx, orig_ty, orig_tz)) cmds.setKeyframe(obj, at='.tx', t=current_frame, itt='linear', ott='linear') cmds.setKeyframe(obj, at='.ty', t=current_frame, itt='linear', ott='linear') cmds.setKeyframe(obj, at='.tz', t=current_frame, itt='linear', ott='linear') if rotate and not ws_method: if not cmds.getAttr(obj + '.rx', lock=True): cmds.setAttr(obj + '.rx', orig_rx) if not cmds.getAttr(obj + '.ry', lock=True): cmds.setAttr(obj + '.ry', orig_ry) if not cmds.getAttr(obj + '.rz', lock=True): cmds.setAttr(obj + '.rz', orig_rz) elif rotate and ws_method: # WS Pose cmds.xform(obj, ws=True, ro=(orig_rx, orig_ry, orig_rz)) cmds.setKeyframe(obj, at='.rx', t=current_frame, itt='linear', ott='linear') cmds.setKeyframe(obj, at='.ry', t=current_frame, itt='linear', ott='linear') cmds.setKeyframe(obj, at='.rz', t=current_frame, itt='linear', ott='linear') if scale: if not cmds.getAttr(obj + '.sx', lock=True): cmds.setAttr(obj + '.sx', orig_sx) if not cmds.getAttr(obj + '.sy', lock=True): cmds.setAttr(obj + '.sy', orig_sy) if not cmds.getAttr(obj + '.sz', lock=True): cmds.setAttr(obj + '.sz', orig_sz) cmds.setKeyframe(obj, at=attr, t=current_frame, itt='linear', ott='linear') if current_frame > current_max_time: cmds.playbackOptions( maxTime=current_frame) # Expand max time if necessary cmds.select(selection) # Bring back original selection def reset_offset_values(): offset_text_fields = [tx_offset_text_field, ty_offset_text_field, tz_offset_text_field,\ rx_offset_text_field, ry_offset_text_field, rz_offset_text_field,\ sx_offset_text_field, sy_offset_text_field, sz_offset_text_field] for text_field in offset_text_fields: cmds.textField(text_field, e=True, text='0.0') def gtu_delete_keyframes(): '''Deletes all keyframes (Doesn't include Set Driven Keys)''' function_name = 'GTU Delete All Keyframes' cmds.undoInfo(openChunk=True, chunkName=function_name) try: keys_ta = cmds.ls(type='animCurveTA') keys_tl = cmds.ls(type='animCurveTL') keys_tt = cmds.ls(type='animCurveTT') keys_tu = cmds.ls(type='animCurveTU') deleted_counter = 0 all_keyframes = keys_ta + keys_tl + keys_tt + keys_tu for obj in all_keyframes: try: cmds.delete(obj) deleted_counter += 1 except: pass message = '<span style=\"color:#FF0000;text-decoration:underline;\">' + str( deleted_counter) + ' </span>' is_plural = 'keyframe nodes were' if deleted_counter == 1: is_plural = 'keyframe node was' message += is_plural + ' deleted.' cmds.inViewMessage(amg=message, pos='botLeft', fade=True, alpha=.9) except Exception as e: cmds.warning(str(e)) finally: cmds.undoInfo(closeChunk=True, chunkName=function_name) # Show and Lock Window cmds.showWindow(build_gui_create_testing_keys) cmds.window(window_name, e=True, s=False) # Set Window Icon qw = omui.MQtUtil.findWindow(window_name) if python_version == 3: widget = wrapInstance(int(qw), QWidget) else: widget = wrapInstance(long(qw), QWidget) icon = QIcon(':/setMaxInfluence.png') widget.setWindowIcon(icon) # Deselect Text Field cmds.setFocus(window_name)
def createWindow(): if cmds.window('MeshLightSetter',ex=True): cmds.deleteUI('MeshLightSetter') cmds.window('MeshLightSetter',t='MeshLight Setter',w=600,h=800) cmds.rowLayout(nc=2) cmds.frameLayout(l='aiTranslatorAttributes',w=380) cmds.formLayout('MeshLight_FormLayout') f1 = cmds.optionMenu('MeshLight_aiTranslator') cmds.menuItem(l='polymesh',p='MeshLight_aiTranslator') cmds.menuItem(l='mesh_light',p='MeshLight_aiTranslator') cmds.menuItem(l='procedural',p='MeshLight_aiTranslator') cmds.menuItem(l='quad',p='MeshLight_aiTranslator') cmds.menuItem(l='cylinder',p='MeshLight_aiTranslator') cmds.menuItem(l='disk',p='MeshLight_aiTranslator') f2 = cmds.colorSliderGrp('MeshLight_aiColor',l='Color') f3 = cmds.floatSliderGrp('MeshLight_aiIntensity',l='Intensity',field=True) f4 = cmds.floatSliderGrp('MeshLight_aiExposure',l='Exposure',field=True) f5 = cmds.checkBox('MeshLight_aiUseTemp',l='Use Temperature') f6 = cmds.floatSliderGrp('MeshLight_aiTemperature',l='Temperature',minValue=0.0,maxValue=20000.0,field=True) f7 = cmds.checkBox('MeshLight_aiVisible',l='Light Visible') f8 = cmds.intFieldGrp('MeshLight_aiSample',l='Sample') f9 = cmds.checkBox('MeshLight_aiNormalize',l='Normalize') f10 = cmds.checkBox('MeshLight_aiCastShadows',l='Cast Shadows') f11 = cmds.floatSliderGrp('MeshLight_aiShadowDensity',l='ShadowDensity',minValue=0.0,maxValue=1.0,field=True) f12 = cmds.colorSliderGrp('MeshLight_aiShadowColor',l='Shadow Color') f13 = cmds.checkBox('MeshLight_aiCastVolumeShadow',l='Cast Volumeric Shadow') f14 = cmds.intFieldGrp('MeshLight_aiVolumeSample',l='Volume Sample') f15 = cmds.textFieldGrp('MeshLight_aiAov',l='AOV Group') f16 = cmds.rowLayout(nc=2) f17 = cmds.button(l='List LightGroup',c=lambda *args:refreshLightGroupMenu(),w=98) f18 = cmds.button(l='Set LightGroup',c=lambda *args:setLightGroupFromMenu(),w=98) cmds.setParent(u=True) f19 = cmds.textFieldGrp('AOVString',l='AOVs') f20 = cmds.textScrollList('MeshLight_LightGroupList',w=200,h=372) cmds.formLayout('MeshLight_FormLayout',e=True,af = [(f1,'top',0),(f1,'left',100), (f2,'top',22),(f2,'left',-40), (f3,'top',44),(f3,'left',-40), (f4,'top',66),(f4,'left',-40), (f5,'top',88),(f5,'left',90), (f6,'top',110),(f6,'left',-40), (f7,'top',132),(f7,'left',90), (f8,'top',154),(f8,'left',-40), (f9,'top',176),(f9,'left',90), (f10,'top',198),(f10,'left',90), (f11,'top',220),(f11,'left',-40), (f12,'top',242),(f12,'left',-40), (f13,'top',264),(f13,'left',90), (f14,'top',286),(f14,'left',-40), (f15,'top',308),(f15,'left',-40), (f16,'top',333),(f16,'left',90), (f19,'top',360),(f19,'left',-40), (f20,'top',383),(f20,'left',90) ]) cmds.setParent(u=True) cmds.setParent(u=True) cmds.frameLayout(l='Mesh Light List',w=400) cmds.rowLayout(nc=5) cmds.button(l='aiAreaLight',w=80,c=lambda *ars:createAreaLight()) cmds.textField('nodeTypeFilterText',w=130) cmds.popupMenu(p='nodeTypeFilterText') cmds.menuItem(l='getTypeBySelect',c=lambda *args:cmds.textField('nodeTypeFilterText',e=True,tx=cmds.nodeType(cmds.ls(sl=True)[0]))) cmds.button(l='Selected',w=60,c=lambda args:cmds.select(cmds.ls(sl=True,dag=True,ni=True,type=cmds.textField('nodeTypeFilterText',q=True,tx=True)),r=True)) cmds.button(l='Scene',w=60,c=lambda args:cmds.select(cmds.ls(dag=True,ni=True,type=cmds.textField('nodeTypeFilterText',q=True,tx=True)),r=True)) cmds.button(l='Group',w=60,c=lambda args:cmds.select(groupAnalyzer(cmds.ls(dag=True,sl=True,ni=True),cmds.textField('nodeTypeFilterText',q=True,tx=True),'down'),r=True)) cmds.setParent(u=True) cmds.formLayout('MeshLightList_FormLayout') cmds.radioCollection() w1 = cmds.radioButton('AllLightCheck',l='List All Light',sl=True) w2 = cmds.radioButton('SelLightCheck',l='List Sel Light') #w1 = cmds.button(l='ALL MESH light',c=lambda *args:lightListRefresh(True),w=100) #w2 = cmds.button(l='Sel MESH Light',c=lambda *args:lightListRefresh(False),w=100) w3 = cmds.checkBox('List_NormalLight',l='Normal_Light') w4 = cmds.checkBox('List_MeshLight',l='Mesh_Light') w5 = cmds.textFieldGrp('MeshLight_Template',l='Template',w=400) w6 = cmds.button(l='Set Template',c=lambda *args:cmds.textFieldGrp('MeshLight_Template',e=True,tx=cmds.ls(sl=True,dag=True,ni=True)[0]),w=100) w7 = cmds.button(l='Convert!',c=lambda *args:convertMeshToMeshLight(),w=100) w8 = cmds.textScrollList('MeshLightList',w=400,h=700,ams=True) w9 = cmds.text('ListTotalNumber',l='0',w=50,nbg=True) w10 = cmds.text('ListSelectNumber',l='0',w=50,nbg=True) cmds.radioCollection() w11 = cmds.radioButton('Single_Check',l='Single') w12 = cmds.radioButton('Double_Check',l='Double',sl=True) w13 = cmds.button('ListWireframeColor',l='Color Dis',w=70,c=lambda *args:displayLightColorAsWireframe()) cmds.formLayout('MeshLightList_FormLayout',e=True,af = [(w1,'top',3),(w1,'left',0), (w2,'top',3),(w2,'left',101), (w3,'top',3),(w3,'left',205), (w4,'top',3),(w4,'left',320), (w5,'top',27),(w5,'left',-90), (w6,'top',27),(w6,'left',297), (w7,'top',52),(w7,'left',297), (w8,'top',77),(w8,'left',0), (w9,'top',57),(w9,'left',0), (w10,'top',57),(w10,'left',50), (w11,'top',55),(w11,'left',100), (w12,'top',55),(w12,'left',160), (w13,'top',52),(w13,'left',225) ]) cmds.popupMenu('MeshLightListMenu',p='MeshLightList') cmds.menuItem(l='Select...',p='MeshLightListMenu',c=lambda *args:cmds.select([item for item in cmds.textScrollList('MeshLightList',q=True,si=True)])) cmds.showWindow('MeshLightSetter') cmds.textScrollList('MeshLightList',e=True,dcc=lambda *args:cmds.select(cmds.textScrollList('MeshLightList',q=True,si=True),r=True)) cmds.textScrollList('MeshLightList',e=True,sc=lambda *args:getMeshLightAttrsAndShow()) cmds.textScrollList('MeshLight_LightGroupList',e=True,ams=True,sc=lambda *args:genAovString(),dcc=lambda *args:selectLightByGroupName()) cmds.optionMenu(f1,e=True,cc=lambda *args:setMeshLightAttrsAndShow('translator')) cmds.colorSliderGrp(f2,e=True,cc=lambda *args:setMeshLightAttrsAndShow('color')) cmds.floatSliderGrp(f3,e=True,cc=lambda *args:setMeshLightAttrsAndShow('intensity')) cmds.floatSliderGrp(f4,e=True,cc=lambda *args:setMeshLightAttrsAndShow('exposure')) cmds.checkBox(f5,e=True,cc=lambda *args:setMeshLightAttrsAndShow('useTemp')) cmds.floatSliderGrp(f6,e=True,cc=lambda *args:setMeshLightAttrsAndShow('temp')) cmds.checkBox(f7,e=True,cc=lambda *args:setMeshLightAttrsAndShow('visible')) cmds.intFieldGrp(f8,e=True,cc=lambda *args:setMeshLightAttrsAndShow('sample')) cmds.checkBox(f9,e=True,cc=lambda *args:setMeshLightAttrsAndShow('normalize')) cmds.checkBox(f10,e=True,cc=lambda *args:setMeshLightAttrsAndShow('castShadows')) cmds.floatSliderGrp(f11,e=True,cc=lambda *args:setMeshLightAttrsAndShow('shadowDensity')) cmds.colorSliderGrp(f12,e=True,cc=lambda *args:setMeshLightAttrsAndShow('shadowColor')) cmds.checkBox(f13,e=True,cc=lambda *args:setMeshLightAttrsAndShow('castVolumeShadow')) cmds.intFieldGrp(f14,e=True,cc=lambda *args:setMeshLightAttrsAndShow('volumeSample')) cmds.textFieldGrp(f15,e=True,cc=lambda *args:setMeshLightAttrsAndShow('aiAov')) cmds.radioButton('AllLightCheck',e=True,cc=lambda *args:lightListRefresh()) cmds.radioButton('SelLightCheck',e=True,cc=lambda *args:lightListRefresh()) cmds.checkBox('List_NormalLight',e=True,cc=lambda *args:lightListRefresh()) cmds.checkBox('List_MeshLight',e=True,cc=lambda *args:lightListRefresh())
def core(self): if cmds.window(self._winName, ex=1): cmds.deleteUI(self._winName) cmds.window(self._winName, title=self._title) cmds.columnLayout() uifnc.setSpace(5) widthList = uifnc.setWidthByPerList([5, 25, 45, 20, 5], self._width) cmds.rowColumnLayout(nc=5, cw=[(1, widthList[0]), (2, widthList[1]), (3, widthList[2]), (4, widthList[3]), (5, widthList[4])]) uifnc.setSpace() cmds.text(l='Target Root : ', al='right', w=widthList[1]) cmds.textField(w=widthList[2]) cmds.button(l='Load', w=widthList[3]) uifnc.setSpace() cmds.setParent('..') uifnc.setSpace(10) cmds.separator(width=self._width + 2) uifnc.setSpace(10) widthList = uifnc.setWidthByPerList([5, 45, 3, 45, 5], self._width) cmds.rowColumnLayout(nc=5, cw=[(1, widthList[0]), (2, widthList[1]), (3, widthList[2]), (4, widthList[3]), (5, widthList[4])]) uifnc.setSpace() cmds.rowColumnLayout(nc=1, cw=(1, widthList[1])) cmds.text(l='Driver List', al='center') uifnc.setSpace(10) cmds.scrollLayout() cmds.textScrollList(w=widthList[1] - 8) cmds.setParent('..') cmds.setParent('..') uifnc.setSpace() cmds.rowColumnLayout(nc=1, cw=(1, widthList[3] - 1)) cmds.text(l='Driver Value') uifnc.setSpace(30) cmds.frameLayout(cll=0, lv=0) uifnc.setSpace() driverWidthList = uifnc.setWidthByPerList([50, 50, 5], widthList[3] - 2) cmds.rowColumnLayout(nc=3, cw=[(1, driverWidthList[0]), (2, driverWidthList[1]), (3, driverWidthList[2])]) cmds.text(l='Angle1') cmds.floatField(editable=False, bgc=[0.9, 0.9, 0.3]) uifnc.setSpace() cmds.text(l='Angle2') cmds.floatField(editable=False, bgc=[0.9, 0.9, 0.3]) uifnc.setSpace() cmds.text(l='Angle3') cmds.floatField(editable=False, bgc=[0.9, 0.9, 0.3]) uifnc.setSpace() cmds.setParent('..') uifnc.setSpace() cmds.setParent('..') uifnc.setSpace(30) cmds.checkBox(l='Show Only Moved Driver') uifnc.setSpace(10) cmds.button(l='Update Condition', h=30) cmds.setParent('..') cmds.setParent('..') cmds.rowColumnLayout() uifnc.setSpace(10) cmds.separator(width=self._width + 2) uifnc.setSpace(10) cmds.setParent('..') uifnc.setSpace() cmds.setParent('..') cmds.window(self._winName, e=1, width=self._width + 2, height=self._height) cmds.showWindow(self._winName)
if (mc.window (win, exists = True)): mc.deleteUI (win) mc.window (win, rtf = True, width = 280, height = 280, title = winTitle, s = False) mc.columnLayout (adjustableColumn = True, rowSpacing = 2) mc.text (l = ' ') mc.text (l = '"Pick" buttons fill fields with selected attributes from the channel box.') mc.text (l = '"Select" buttons quickly select the node that houses the picked attributes of each row.') mc.text (l = "Getting an error? Ensure the selected attribute's parent node is the node selected.") mc.text (l = ' ') mc.rowLayout (cw3 = (50, 280, 40), nc = 4) mc.text (l = 'Driver 1') getShape1_TF = mc.textField (bgc = (.15,.15,.15), w=340, ed = 0) mc.button (l = 'Pick', c = 'getShape1()') mc.button (l = 'Select', c = 'mc.select (getObj1_VAR_CCT)') mc.setParent( '..' ) mc.text (l = ' x', al = 'left') mc.rowLayout (cw3 = (50, 280, 40), nc = 4) mc.text (l = 'Driver 2') getShape2_TF = mc.textField (bgc = (.15,.15,.15), w=340, ed = 0) mc.button (l = 'Pick', c = 'getShape2()') mc.button (l = 'Select', c = 'mc.select (getObj2_VAR_CCT)') mc.setParent( '..' ) mc.text (l = ' =', al = 'left')
def edo_loadListToTF(tfid, status): #tfid='edo_createSoftDeformSecCtrl_TF01' sels = cmds.ls(sl=1) t = edo_listToStr(sels) cmds.textField(tfid, e=1, text=t)
def validate_operation(): ''' ''' errors = '' try: cmds.undoInfo(openChunk=True, chunkName=script_name) offset_text_fields = [tx_offset_text_field, ty_offset_text_field, tz_offset_text_field,\ rx_offset_text_field, ry_offset_text_field, rz_offset_text_field,\ sx_offset_text_field, sy_offset_text_field, sz_offset_text_field] initial_time = cmds.currentTime(q=True) selection = cmds.ls(selection=True) if len(cmds.ls(selection=True)) != 0: interval = cmds.floatSliderGrp(interval_text_field, q=True, value=True) add_inverted = cmds.checkBox(add_inverted_checkbox, q=True, value=True) delete_keys = cmds.checkBox(delete_keys_checkbox, q=True, value=True) use_ws = cmds.checkBox(use_ws_checkbox, q=True, value=True) if delete_keys: for obj in cmds.ls(selection=True): connections = cmds.listConnections( obj, type='animCurveTA') or [] connections += cmds.listConnections( obj, type='animCurveTL') or [] connections += cmds.listConnections( obj, type='animCurveTT') or [] connections += cmds.listConnections( obj, type='animCurveTU') or [] for key in connections: try: cmds.delete(key) except: pass # Apply Offsets for text_field in offset_text_fields: attr = cmds.textField(text_field, q=True, ann=True) value = 0.0 try: value = float( cmds.textField(text_field, q=True, text=True)) except: pass if value > 0: create_testing_keyframes(value, attr, interval, create_inverted=add_inverted, ws_method=use_ws) else: cmds.warning( 'Select at least one object to create testing key frames.') cmds.currentTime(initial_time) # Return Time to initial value except Exception as e: errors += str(e) + '\n' finally: cmds.undoInfo(closeChunk=True, chunkName=script_name) if errors != '': cmds.warning( 'An error occured when creating the keyframes. Open the script editor for more information.' ) print('######## Errors: ########') print(errors) print('#########################')
def __init__(self): windowName = "ribbonizer_window" windowWidth = 400 windowHeight = 160 if mc.window(windowName, ex=True): mc.deleteUI(windowName) mc.windowPref(windowName, remove=True) mainWindow = mc.window(windowName, t="Ribbonizer 2.0", s=False, mnb=False, mxb=False) mc.window(windowName, e=True, wh=(windowWidth, windowHeight)) mainFormL = mc.formLayout() prefixText = mc.text(l="prefix:") self.prefixField = mc.textField("prefix", pht="name me") numCtrlsText = mc.text(l="num_of_ctrls:") self.numCtrlsField = mc.intField("num_of_ctrls", min=1, v=5, step=1) numJntsText = mc.text(l="num_of_jnts:") self.numJntsField = mc.intField("num_of_jnts", min=1, v=29, step=1) self.equalCheckbox = mc.checkBox("equal", l="equal_dist", v=True) self.constrCheckbox = mc.checkBox("constrain", l="constrain", v=True) self.wireCheckbox = mc.checkBox("wire", l="wire", v=False) self.fkCheckbox = mc.checkBox("add_fk", l="add_fk", v=False) self.ribbonizeBtn = mc.button(l="Ribbonize", c=self.launch) mc.formLayout(mainFormL, e=True, attachForm=[ (prefixText, "left", 20), (numCtrlsText, "left", 20), (numJntsText, "left", 20), (prefixText, "top", 19), (self.prefixField, "top", 15), (self.equalCheckbox, "left", 20), (self.wireCheckbox, "left", 20), (self.constrCheckbox, "left", 110), (self.fkCheckbox, "left", 110), (self.prefixField, "left", 110), (self.numCtrlsField, "left", 110), (self.numJntsField, "left", 110), (self.ribbonizeBtn, "left", 200), (self.ribbonizeBtn, "right", 15), (self.ribbonizeBtn, "top", 15), (self.ribbonizeBtn, "bottom", 15), ], attachControl=[ (numCtrlsText, "top", 11, prefixText), (numJntsText, "top", 11, numCtrlsText), (self.numCtrlsField, "top", 5, self.prefixField), (self.numJntsField, "top", 5, self.numCtrlsField), (self.equalCheckbox, "top", 20, self.numJntsField), (self.wireCheckbox, "top", 5, self.equalCheckbox), (self.constrCheckbox, "top", 20, self.numJntsField), (self.fkCheckbox, "top", 5, self.constrCheckbox), (self.prefixField, "right", 15, self.ribbonizeBtn), (self.numCtrlsField, "right", 15, self.ribbonizeBtn), (self.numJntsField, "right", 15, self.ribbonizeBtn), ]) mc.showWindow(mainWindow)
def __init__(self): # Default values on init self.selObjs = None self.objIDOn = 0 self.objIDVal = None self.useAttrOn = 0 self.useAttrVal = None self.matIDOn = 0 self.matIDVal = None self.matIDCol = None if mc.window('vrayAttr', exists=True): mc.deleteUI('vrayAttr') mc.window('vrayAttr', t="Set Vray Attribute", iconName='Vray Attrs', w=220) mc.rowColumnLayout(nc=1, cal=[1, 'left'], rs=[1, 7], cs=[1, 20], cw=[1, 180]) mc.separator(st='none', h=17) # Set Selected Objects to selObjs variable mc.button(l='Select Objects', c=self.selectObjects, w=50) mc.separator(h=25, st='in') # Enable and set Vray ObjectID self.guiObjIDOn = mc.checkBox(l='Object ID') mc.text(l='Object ID Value') self.guiObjIDVal = mc.textField() mc.separator(h=25, st='in') # Enable and set Vray User Attributes self.guiUseAttrOn = mc.checkBox(l='User attributes') mc.text(l='Enter User attributes') self.guiUseAttrVal = mc.textField() mc.separator(h=25, st='in') # Enable and set Vray Material ID self.guiMatIDOn = mc.checkBox(l='Material ID') mc.text(l='Multimatte ID') self.guiMatIDVal = mc.textField() mc.text(l='Material ID') self.guiMatIDCol = mc.radioCollection() mc.radioButton('red', label='Red') mc.radioButton('green', label='Green') mc.radioButton('blue', label='Blue') mc.radioButton('white', label='White') mc.radioButton('black', label='Black') mc.separator(h=25, st='in') # Activate on Geo or Material mc.button(l='Apply Settings to Geometry', c=self.vrayMeshAttrSet, w=50) mc.separator(st='none') mc.button(l='Apply Settings to Materials', c=self.vrayMtrlIDSet, w=50) mc.separator(st='none', h=17) mc.showWindow()
def mirrorModule_UI(self): #print self.modules self.moduleNames = [] for module in self.modules: self.moduleNames.append(module.partition("__")[2]) self.sameMirrorSettingsForAll = False if len(self.modules) > 1: result = cmds.confirmDialog( title="Mirror Multiple Modules", message=str(len(self.modules)) + " modules selected for mirror.\n How would you like to apply mirroring? ", button=["Same for All", "Individually", "Cancel"], defaultButton="Same for All", cancelButton="Cancel", dismissString="Cancel") if result == "Cancel": return if result == "Same for All": self.sameMirrorSettingsForAll = True print self.sameMirrorSettingsForAll self.UIElements = {} if cmds.window("mirrorModule_UI_window", exists=True): cmds.deleteUI("mirrorModule_UI_window") windowWidth = 300 windowHeight = 400 self.UIElements["window"] = cmds.window("mirrorModule_UI_window", width=windowWidth, height=windowHeight, title="Mirror Module(s)", sizeable=False) self.UIElements["scrollLayout"] = cmds.scrollLayout(hst=0) self.UIElements["topColumnLayout"] = cmds.columnLayout(adj=True, rs=3) scrollWidth = windowWidth - 30 mirrorPlane_textWidth = 80 mirrorPlane_columnWidth = (scrollWidth - mirrorPlane_textWidth) / 3 self.UIElements["mirrorPlane_rowColumn"] = cmds.rowColumnLayout( nc=4, columnAttach=(1, "right", 0), columnWidth=[(1, mirrorPlane_textWidth), (2, mirrorPlane_columnWidth), (3, mirrorPlane_columnWidth), (4, mirrorPlane_columnWidth)]) cmds.text(label="Mirror Plane: ") self.UIElements["mirrorPlane_radioCollection"] = cmds.radioCollection() cmds.radioButton("XY", label="XY", select=False) cmds.radioButton("YZ", label="YZ", select=True) cmds.radioButton("XZ", label="XZ", select=False) cmds.setParent(self.UIElements["topColumnLayout"]) cmds.separator() cmds.text(label="mirrored Name(s): ") columnWidth = scrollWidth / 2 self.UIElements["moduleName_rowColumn"] = cmds.rowColumnLayout( nc=2, columnAttach=(1, "right", 0), columnWidth=[(1, columnWidth), (2, columnWidth)]) for module in self.moduleNames: cmds.text(label=module + ">>") self.UIElements["moduleName_" + module] = cmds.textField( enable=True, text=module + "_mirror") cmds.setParent(self.UIElements["topColumnLayout"]) cmds.separator() if self.sameMirrorSettingsForAll: self.generateMirrorFunctionControls(None, scrollWidth) else: for module in self.moduleNames: cmds.setParent(self.UIElements["topColumnLayout"]) self.generateMirrorFunctionControls(module, scrollWidth) cmds.setParent(self.UIElements["topColumnLayout"]) cmds.separator() self.UIElements["button_row"] = cmds.rowLayout(nc=2, columnWidth=[ (1, columnWidth), (2, columnWidth) ], cat=[(1, "both", 10), (2, "both", 10)], columnAlign=[ (1, "center"), (2, "center") ]) cmds.button(label="Accept", c=self.acceptWindow) cmds.button(label="Cancel", c=self.cancelWindow) cmds.showWindow(self.UIElements["window"])
import maya.cmds as cmds