def selectedFilesFromList(self): ctrlPath = '|'.join([self.window, 'groupBox', 'listWidget']); self.selectedFiles = cmds.textScrollList(ctrlPath, query=True, si=True); self.filesToCreate = 0 self.filesCreated = 0 self.createdErrors = 0 if not self.selectedFiles: updateProgressMessage(self.window, 0, 0, 0) return list = cmds.textScrollList(ctrlPath, query=True, ai=True); for i in range(len(self.selectedFiles)): texture = self.selectedFiles[i] if texture.startswith(' '): self.selectedFiles[i] = texture.replace(' ','',1) elif texture.startswith('(tx) '): self.selectedFiles[i] = texture.replace('(tx) ','',1) else: self.selectedFiles[i] = "" continue; texture = self.selectedFiles[i] if 'udim' in os.path.basename(texture): udims = getUdims(texture) self.filesToCreate += len(udims) else: self.filesToCreate += 1 updateProgressMessage(self.window, self.filesCreated, self.filesToCreate, 0) ctrlPath = '|'.join([self.window, 'groupBox_3', 'label_10']); cmds.text(ctrlPath, edit=True, label="");
def showUI(): win = 'lsWireOffset_window' # if window exists, delete if mc.window(win, ex=True): mc.deleteUI(win, wnd=True) # delete window prefs... if you want... mc.windowPref(win, remove=True) # create window mc.window(win, t='lsWireOffset v0.1', wh=(200,335), mxb=False) # main column mainCol = mc.columnLayout(columnAttach=('both', 5), rowSpacing=10, columnWidth=200) # creation frame createFrm = mc.frameLayout(p=mainCol, cl=False, l='Create New Module') createCol = mc.columnLayout(columnAttach=('both', 5), rowSpacing=5, columnWidth=188) nameTxtFld = mc.textFieldGrp( label='Name: ', text='', cw2=(40,125), p=createCol) mc.text(l='Select edge loop OR \n vertices and...') creationBtn = mc.button(l='Create', c="lsWireOffset.ui.createNew('%s')"%nameTxtFld) # edit frame editFrm = mc.frameLayout(p=mainCol, cl=False, l='Edit Existing Modules') editCol = mc.columnLayout(columnAttach=('both', 5), rowSpacing=5, columnWidth=188) scrollList = mc.textScrollList(win+'_wTSL') refreshTSL(scrollList) # popop menu for right click mc.popupMenu(win+'_wTSL_MM', p=scrollList, mm=True, button=3, pmc=buildMM) mc.showWindow(win)
def build(self): if mc.window( self.win, ex=1 ): mc.deleteUI( self.win ) if mc.windowPref( self.win, ex=1 ): mc.windowPref( self.win, remove=1 ) mc.window(self.win, title=self.title, wh=(410,378)) mc.columnLayout( 'mainColumn', adj=True ) mc.separator( h=10 ) mc.rowLayout( numberOfColumns=2, columnWidth2=(200, 200), columnAttach=[(1, "both", 5),(2 ,"both", 5)] ) mc.columnLayout( adj=True, columnAlign="center" ) mc.text( l=self.textsk ) self.skcharacterList = mc.textScrollList( numberOfRows=20, allowMultiSelection=True ) mc.setParent('..') mc.columnLayout( adj=True, columnAlign="center" ) mc.text( l=self.textqp ) self.qpcharacterList = mc.textScrollList( numberOfRows=20, allowMultiSelection=True ) mc.setParent( '..' ) mc.setParent('..') mc.separator ( h=10 ) mc.rowLayout( numberOfColumns=4, columnWidth4=(100, 100, 100, 100), columnAttach=[(1, "both", 1),(2 ,"both", 1), (3 ,"both", 1), (4 ,"both", 1)] ) mc.button( l=self.buttonsk, c=self.selSKItem ) mc.button( l=self.buttonAllSk, c=self.mainSK ) mc.button( l=self.buttonqp, c=self.selQPItem ) mc.button( l=self.buttonAllQp, c=self.mainQP ) mc.setParent('..') mc.columnLayout( adj=True, columnAlign="center" ) mc.separator ( h=10 ) mc.setParent('..') self.addSKList()
def selectedFilesFromFolder(self, *args): ctrlPath = '|'.join([self.window, 'groupBox_4', 'lineEdit_2']); folder = cmds.textField(ctrlPath, query=True, text=True); self.selectedFiles = [] self.filesToCreate = 0 self.filesCreated = 0 self.createdErrors = 0 ctrlPath = '|'.join([self.window, 'groupBox_4', 'checkBox']); recursive = cmds.checkBox(ctrlPath, query=True, value=True); if os.path.isdir(folder): if recursive: for root, dirs, files in os.walk(folder): for texture in files: if (isImage(texture)): self.selectedFiles.append(os.path.join(root, texture)) self.filesToCreate += 1 else: files = os.listdir(folder) for texture in files: if (isImage(texture)): self.selectedFiles.append(os.path.join(folder, texture)) self.filesToCreate += 1 updateProgressMessage(self.window, self.filesCreated, self.filesToCreate, 0) ctrlPath = '|'.join([self.window, 'groupBox_3', 'label_10']); cmds.text(ctrlPath, edit=True, label="");
def setAttributeVectorUI(): global tfXIn, tfXOut, tfYIn, tfYOut, tfZIn, tfZOut, tslVectorList, tfXAdd, tfYAdd, tfZAdd, vectorUI vectorUI = 'vectorUI' closeUI(vectorUI) cmds.window(vectorUI, title = 'vectorUI') cmds.columnLayout(columnAttach = ['both', 5], rowSpacing = 5, columnWidth = 210) cmds.text('..: random range :..', backgroundColor = [0.15, 0.15, 0.0]) cmds.gridLayout(numberOfColumns = 6, cellWidthHeight = (33, 20)) tfXIn = cmds.textField(text = '0.0', backgroundColor = [0.15, 0.1, 0.0]) tfXOut = cmds.textField(text = '1.0', backgroundColor = [0.15, 0.1, 0.0]) tfYIn = cmds.textField(text = '0.0', backgroundColor = [0.0, 0.15, 0.1]) tfYOut = cmds.textField(text = '1.0', backgroundColor = [0.0, 0.15, 0.1]) tfZIn = cmds.textField(text = '0.0', backgroundColor = [0.0, 0.1, 0.15]) tfZOut = cmds.textField(text = '1.0', backgroundColor = [0.0, 0.1, 0.15]) cmds.setParent('..') cmds.button('ok', command = 'setAttributeVectorRandom()') cmds.separator(style = 'out') cmds.text('..: vector list :..', backgroundColor = [0.0, 0.15, 0.15]) tslVectorList = cmds.textScrollList(allowMultiSelection = True) cmds.button('remove', command = 'removeScrollListVector()') cmds.gridLayout(numberOfColumns = 4, cellWidthHeight = (50, 20)) tfXAdd = cmds.textField(text = '0.0', backgroundColor = [0.15, 0.1, 0.0]) tfYAdd = cmds.textField(text = '0.0', backgroundColor = [0.0, 0.15, 0.1]) tfZAdd = cmds.textField(text = '0.0', backgroundColor = [0.0, 0.1, 0.15]) cmds.button('add..', command = 'addScrollListVector()') cmds.setParent('..') cmds.button('random', command = 'setAttributeListVectorRandom()') cmds.button('increment %', command = 'setAttributeListVectorInc()') cmds.setParent('..') cmds.showWindow()
def transfertSelectionToTarget_window(): """ This definition creates the 'Transfert Selection To Target' main window. """ cmds.windowPref(enableAll=False) if (cmds.window("transfertSelectionToTarget_window", exists=True)): cmds.deleteUI("transfertSelectionToTarget_window") cmds.window("transfertSelectionToTarget_window", title="Transfert Selection To Target", width=320) spacing = 5 cmds.columnLayout(adjustableColumn=True, rowSpacing=spacing) cmds.rowLayout(numberOfColumns=3, columnWidth3=(125, 150, 130), adjustableColumn=2, columnAlign=(2, "left"), columnAttach=[(1, "both", spacing), (2, "both", spacing), (3, "both", spacing)]) cmds.text(label="Target:") sources_textField = cmds.textField("target_textField") cmds.button("pickTarget_button", label="Pick Target!", command=pickTarget_button_OnClicked) cmds.setParent(topLevel=True) cmds.separator(style="single") cmds.button("transfertSelection_button", label="Transfert Selection!", command=transfertSelection_button_OnClicked) setUnsetContextHotkeys() scriptJob = cmds.scriptJob(uiDeleted=("transfertSelectionToTarget_window", setUnsetContextHotkeys), runOnce=True) cmds.showWindow("transfertSelectionToTarget_window") cmds.windowPref(enableAll=True)
def create(self): if cmds.window('uvShellAlignWindow', exists = True): cmds.deleteUI('uvShellAlignWindow') self.window = cmds.window(self.window, title = self.title, widthHeight = self.size) self.frameForm = cmds.frameLayout(label = " 1. 基準とする UVShell を選択して登録", bgc = (0.5, 0.3, 0.2), cll = False) self.setUVSBtn1 = cmds.button(label = "基準 UVShell を登録" , command = self.registUVBndBox1, height = 30 ) cmds.rowLayout( numberOfColumns = 1, adj = True) cmds.setParent("..") self.frameForm = cmds.frameLayout(label = " 2. 位置を揃えたい UVShell を選択して実行", bgc = (0.2, 0.3, 0.5), cll = False) self.distDcheckBox = cmds.radioButtonGrp('radioBtn', label = "", numberOfRadioButtons = 4 , sl = 1, cl4 = ['left','left','left','left'] , la4 = [ 'Left', 'Right', 'Bottom', 'Top'], adj = True) self.backupPathText = cmds.text("※ 2016/1/5 現在、複数UVを選択した状態での位置揃えには対応していません", font = "smallBoldLabelFont", align = 'left'); self.setUVSBtn2 = cmds.button(label = "選択した UVShell を揃える" , command = self.registUVBndBox2, height = 30 ) cmds.setParent("..") cmds.separator(width = self.width, style = 'in') cmds.text("【問い合わせ先】 : TAセクション.村岡", bgc = (0.2, 0.2, 0.2), align = 'left', width = self.width); cmds.setParent("..") cmds.showWindow()
def enterTimecodeUI(self, buttonlabel='set', buttonfunc=None): ''' generic UI to enter timecode :param buttonlabel' = label to add to the button :param buttonfunc' = function to bind to the button on exit ''' self.win='Timecode_UI' if cmds.window(self.win, exists=True): cmds.deleteUI(self.win, window=True) cmds.window(self.win, title=self.win) cmds.columnLayout(adjustableColumn=True) cmds.text(label='Timecode Reference') cmds.separator(h=10, style='in') cmds.rowColumnLayout(nc=8) cmds.text(label=' smpte : ') cmds.textField('tchrs', tx='00', w=40, cc=lambda x:self.__uicb_checkfield('tchrs')) cmds.text(label=' : ') cmds.textField('tcmins', tx='00', w=40, cc=lambda x:self.__uicb_checkfield('tcmins')) cmds.text(label=' : ') cmds.textField('tcsecs', tx='00', w=40, cc=lambda x:self.__uicb_checkfield('tcsecs')) cmds.text(label=' : ') cmds.textField('tcfrms', tx='00', w=40, cc=lambda x:self.__uicb_checkfield('tcfrms')) cmds.setParent('..') cmds.button(label=buttonlabel, command=lambda x:self.__uicb_gatherTimecode(buttonfunc)) cmds.showWindow(self.win)
def __uicb_setReferenceBwavNode(self, *args): ''' : PRO_PACK : set the internal reference offset used to offset the audionode. .. note:: If you pass this a bwav then it caches that bwav for use as the offset. If you pass it a node, and that node has the timecode attrs, then it caches the offset itself. ''' selectedAudio=cmds.ls(sl=True, type='audio') self.__bwav_reference = None self.__cached_tc_offset = None if selectedAudio: if not len(selectedAudio)==1: log.warning("Please only select 1 piece of Audio to use for reference") return reference=AudioNode(selectedAudio[0]) if reference.isBwav(): self.__bwav_reference=selectedAudio[0] cmds.text('bwavRefTC', edit=True, label='frame %s == %s' % (reference.startFrame,reference.bwav_timecodeFormatted())) else: raise IOError("selected Audio node is NOT a Bwav so can't be used as reference") else: selectedNode = cmds.ls(sl=True,l=True) if len(selectedNode)==1: relativeTC = self.pro_audio.Timecode(selectedNode[0]).getTimecode_from_node() actualframe = cmds.currentTime(q=True) self.__cached_tc_offset = actualframe - self.pro_audio.timecode_to_frame(relativeTC) cmds.text('bwavRefTC', edit=True, label='frame %s == %s' % (cmds.currentTime(q=True), relativeTC)) else: log.warning("No reference audio track selected for reference") return
def OnSelectionChange( self ): self.SelectedNodes = mel.eval( "ls -sl" ) self.ActiveManip = None # ... informacion del frame seleccionado ... if ( ( self.SelectedNodes != None ) and ( len( self.SelectedNodes ) == 1 ) ): selectManip = None if ( self.TranslationManips != None ): selectManip = next( ( manip for manip in self.TranslationManips if manip.GetGizmo() == self.SelectedNodes[ 0 ] ), None ) if ( selectManip != None ): sequence = next( ( seq for seq in self.SequenceInfo if seq.GetNode() == self.ActiveNode ), None ) frameInfo = sequence.GetFrameInfo( selectManip.GetFrame() ) self.ActiveManip = selectManip cmds.checkBox( self.cXKey, edit = True, value = frameInfo.HasTranslationKeyAxis( 0 ) ) cmds.checkBox( self.cYKey, edit = True, value = frameInfo.HasTranslationKeyAxis( 1 ) ) cmds.checkBox( self.cZKey, edit = True, value = frameInfo.HasTranslationKeyAxis( 2 ) ) cmds.text( self.txtSelectedFrame, edit = True, label = selectManip.GetFrame() + self.StartFrame ) # ... self.EnableKeyInfo( ( selectManip != None ) ) else: self.EnableKeyInfo( False )
def EnableKeyInfo( self, enable ): cmds.checkBox( self.cXKey, edit = True, enable = enable ) cmds.checkBox( self.cYKey, edit = True, enable = enable ) cmds.checkBox( self.cZKey, edit = True, enable = enable ) if ( not enable ): cmds.text( self.txtSelectedFrame, edit = True, label = "None" )
def add(self, driverName, angleValues=[] ): if not angleValues: angleValues = [0,0,0] defaultBgc = [ .1, .1, .1 ] onBgc = [ .9, .9, .2 ] enList = [0,0,0] bgcList = [None,None,None] for i in range( 3 ): if math.fabs( angleValues[i] ) >= self._minValue: bgcList[i] = onBgc enList[i] = 1 else: bgcList[i] = defaultBgc enList[i] = 0 widthList = uifnc.setWidthByPerList( [70,15,15,15] , self._width ) cmds.rowColumnLayout( nc=4, cw=[(1,widthList[0]),(2,widthList[1]),(3,widthList[2]),(4,widthList[3])] ) cmds.text( l= driverName+' : ', al='right' ) cmds.floatField( precision=2, v=angleValues[0], bgc= bgcList[0] ) cmds.popupMenu(); cmds.menuItem( l='Add Driver', c= partial( self.addConnectDriver, driverName+' | angle0 : %3.2f' %angleValues[0] ) ) cmds.floatField( precision=2, v=angleValues[1], bgc= bgcList[1] ) cmds.popupMenu(); cmds.menuItem( l='Add Driver', c= partial( self.addConnectDriver, driverName+' | angle1 : %3.2f' %angleValues[1] ) ) cmds.floatField( precision=2, v=angleValues[2], bgc= bgcList[2] ) cmds.popupMenu(); cmds.menuItem( l='Add Driver', c= partial( self.addConnectDriver, driverName+' | angle2 : %3.2f' %angleValues[2] ) ) self.driverScrollAddPopupCmd() cmds.setParent( '..' )
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 build(self): if mc.windowPref(self.win, exists=1): mc.windowPref(self.win, remove=1) if mc.window(self.win,exists=1): mc.deleteUI(self.win) mc.window( self.win, title=self.title, widthHeight=(500, 210) ) cl1 = mc.columnLayout( columnAttach=('both', 2), rowSpacing=3, columnWidth=500, adjustableColumn = True) mc.radioCollection() self.mouth = mc.radioButton( l='user import', select=1, p=cl1 ) self.autoR = mc.radioButton( l='auto import', p=cl1 ) mc.separator() mc.frameLayout('selected') mc.rowLayout(numberOfColumns=3, columnWidth3=(80, 75, 150), adjustableColumn=2, columnAlign=(1, 'right'), columnAttach=[(1, 'both', 0), (2, 'both', 0), (3, 'both', 0)] ) mc.text(l='Mode') mc.columnLayout() mc.radioCollection() self.prop = mc.radioButton( l='Prop', select=1 ) self.character = mc.radioButton( l='Character' ) mc.setParent( '..' ) mc.setParent( '..' ) self.numText = mc.floatFieldGrp( l='Num' ) self.txtProp = mc.textFieldButtonGrp( label='File Path', text='', buttonLabel='Browse', cw3 = (40,400,50), adjustableColumn3 = 2, cl3 = ('left', 'center', 'right'), bc = self.browse,cc=self.getPath ) #mc.separator() #self.txtCharacter = mc.textFieldButtonGrp( label='Path', text='', buttonLabel='Browse', cw3 = (40,400,50), adjustableColumn3 = 2, cl3 = ('left', 'center', 'right'), bc = self.browse,cc=self.getPath ) #mc.separator() mc.separator(p=cl1) mc.button( 'importR', l='Import Reference File', p=cl1 ) mc.setParent( '..' )
def create_comment(self, *args): cmds.window('comment_win') cmds.columnLayout() cmds.text(l='Enter in new comment') self.new_comment_field = cmds.scrollField() add = cmds.button(l='Add', c=self.add_comment) cmds.showWindow('comment_win')
def installConvertOption(self): """""" cmds.rowLayout(nc=2, adj=2) cmds.text(l=' Convert:', fn='boldLabelFont') self.keepCheck = cmds.iconTextCheckBox( st='textOnly', l='Keep original', v=True ) cmds.setParent( '..' ) cmds.separator( style='none' )
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 refresh(self, *args): #clear field cmds.textField('nameSpace', e=True, tx='') cmds.textField('sourcePath', e=True, tx='') cmds.text('renderVersion', e=True, l='', nbg=True) #populate scene information episodeName = cmds.getAttr('sceneInfo.episodeName', asString=True) seqName = cmds.getAttr('sceneInfo.shotName', asString=True) cmds.textField('episodeName', e=True, tx=episodeName) cmds.textField('sequenceName', e=True, tx=seqName) #populate exported MCC data sceneDataPath = veRegCore.genDataPath(pathType='sequence', episode=episodeName, sceneName=seqName) mccLis = veRegCore.listExportedMcc(sceneDataPath=sceneDataPath) cmds.textScrollList('serverMccData', e=True, ra=True) for item in mccLis: cmds.textScrollList('serverMccData', e=True, a=item) #populate current scene asset cmds.textScrollList('currentSceneData', e=True, ra=True) for reffPath in cmds.file(q=True, r=True): namespace = cmds.referenceQuery(reffPath, rfn=True) cmds.textScrollList('currentSceneData', e=True, a=namespace) return
def setupRLUI(): if cmds.window("RLWin", exists=True): cmds.deleteUI("RLWin") widgets["win"] = cmds.window("RLWin", t="zbw_setupRL", w=200, h=400) widgets["mainCL"] = cmds.columnLayout(w=200) widgets["mainFrame"] = cmds.frameLayout(l="Create Render Layers", w=200, cll=True, bgc=(.2,.2,.2)) widgets["CarKey"] = cmds.checkBox(l="Car_Env", v=True) widgets["CarEnv"] = cmds.checkBox(l="Car_Key", v=True) widgets["BGKey"] = cmds.checkBox(l="BG_Env", v=True) widgets["BGEnv"] = cmds.checkBox(l="BG_Key", v=True) widgets["AO"] = cmds.checkBox(l="All_AO", v=True) widgets["MatteA"] = cmds.checkBox(l="All_MatteA", v=True) widgets["MatteB"] = cmds.checkBox(l="All_MatteB", v=True) widgets["MoVec"] = cmds.checkBox(l="All_MoVec", v=True) widgets["Shadow"] = cmds.checkBox(l="All_Shadow", v=True) widgets["createBut"] = cmds.button(l="Create Layers", w=200, h=40, bgc=(.6,.8,.6), c=createRL) cmds.text("NOTE: this is setting the overrides for \nthe moVec layer RG's and materials \n(if you have them in scene\n for the AO and Movec layers but \n NO passes are set up") cmds.separator(h=20, style = "double") #widgets["copyBut"] = cmds.button(l="Copy Selected Layer", w=200, h=40, bgc=(.8,.8,.6), c=copyRL) #cmds.separator(h=20, style = "double") widgets["importBut"] = cmds.button(l="Import RL Shaders File", w=200, h=40, bgc=(.8,.6,.6), c=importRL) cmds.showWindow(widgets["win"]) cmds.window(widgets["win"], e=True, w=200, h=400)
def secondaryUI(): sec_UIname = 'secondary' if cmds.window(sec_UIname,exists = True): cmds.deleteUI(sec_UIname) cmds.window(sec_UIname,title = 'rosa_secondary') clmLot = cmds.columnLayout( adjustableColumn=True) cmds.textField('ctrl_name',text = 'ctrl_name') cmds.button('createctrl',label = 'create ctrl',h = 30,c = 'ctrl()') cmds.button('load_model',label = 'load "org" model',c = 'load_org()') cmds.textField('org_model',text = '"org" model') cmds.button('load_property_obj',label = 'loading property add object',c = 'load_vis()') cmds.textField('vis',text = 'Visibility') # flLot = cmds.flowLayout(columnSpacing = 6) cmds.text(label = 'ctrl axial:') cmds.radioCollection() cmds.radioButton('follic',label = 'follic',select = 0) cmds.radioButton('Custom',label = 'Custom',select = 1) # cmds.setParent( clmLot) cmds.button(label = 'Generate',c = 'secondary_add()') cmds.button('add_ctrl',label = 'add controller',c = 'add_controller()') cmds.button('Add_modelSec',label = 'Add_modelSec',c = 'Add_modelSec()') cmds.button(label = 'inverse_connect',c = 'inverse_connect01()') # cmds.frameLayout( label='modify ctrl:',borderStyle='etchedOut') cmds.setParent( clmLot) cmds.button(label = 'loding want to modify the controller',c = 'load_ctrl()') cmds.textField('sec_ctrl',text = 'secondary_ctrl') cmds.button(label = 'modify the controller position',c = 'ctrl_modify()') cmds.button(label = 'complete controller modifies',c = 'modify_complete()') cmds.showWindow()
def cmd(self, *args): fileExt = None fileType = cmds.file(query=True, type=True) if fileType[0] == 'mayaBinary': fileExt = '.mb' elif fileType[0] == 'mayaAscii': fileExt = '.ma' saveName = cmds.text(self.parent.parent.nameTxt, query=True, l=True) + fileExt savePath = cmds.text(self.parent.pathTxt, query=True, l=True) finalPath = os.path.join(savePath, saveName) if self.mode == 'scene': cmds.file(rename=finalPath) cmds.file(save=True, type=fileType[0]) cmds.deleteUI(self.parent.intWinName, window=True) elif self.mode == 'selected': sel = cmds.ls(sl=True) if len(sel) > 0: cmds.file(os.path.join(savePath, saveName), exportSelected=True, type='mayaBinary') cmds.deleteUI(self.parent.intWinName, window=True) else: from key_libs import key_sys_lib key_sys_lib.printMayaWarning('Nothing is selected...')
def copyCrvShapeUI(): if cmds.window('copyCrvShapeWin', exists=True): cmds.deleteUI('copyCrvShapeWin') cmds.window('copyCrvShapeWin', t='CopyCurve', rtf=True) cmds.columnLayout('mainCL', adj=True) cmds.text(l='Search for', align='center') cmds.textField('searchTF') cmds.textField('searchTF', e=True, tx='_L_') cmds.separator() cmds.text(align='center', l='Replace with') cmds.textField('replaceTF') cmds.textField('replaceTF', e=True, tx='_R_') cmds.separator() cmds.button('copyBTN', l='copy', c=partial(copyCrvShape)) cmds.showWindow('copyCrvShapeWin') cmds.window('copyCrvShapeWin', e=True, w=220, h=98)
def create(self): if cmds.window( WinMain.name, q=1, ex=1 ): cmds.deleteUI( WinMain.name ) cmds.window( WinMain.name, title=WinMain.title ) form = cmds.formLayout() textExplanation = cmds.text( l='1.컨트롤러 선택 \n2.컨트롤할 타겟들 선택'.decode( 'utf-8' ), al='center', h=50, bgc=[.3,.3,.3], font='fixedWidthFont' ) textAttr = cmds.text( l='Attribute Name', h=25 ) fieldAttrName = cmds.textField( tx='show', h=25) buttonConnect = cmds.button( l='Connect', h=30, c=Cmd.connect ) cmds.formLayout( form, e=1, af=[(textExplanation, 'top', 0), (textExplanation, 'left', 0), (textExplanation, 'right', 0), (textAttr, 'left', 5), (fieldAttrName, 'right', 5), (buttonConnect, 'left', 0), (buttonConnect, 'right', 0)], ac=[(textAttr, 'top', 5, textExplanation), (fieldAttrName, 'top', 5, textExplanation), (fieldAttrName, 'left', 5, textAttr), (buttonConnect, 'top', 5, textAttr)] ) cmds.window( WinMain.name, e=1, width=WinMain.width, height=WinMain.height ) WinMain.fieldAttrName = fieldAttrName
def _showUI(self): if cmds.window(self.win, exists=True): cmds.deleteUI(self.win, window=True) cmds.window(self.win, title=self.win, widthHeight=(400, 220)) cmds.columnLayout('uicl_audioMain',adjustableColumn=True) cmds.separator(h=15, style='none') cmds.text(l='Select Audio to Offset') cmds.separator(h=15, style='in') cmds.rowColumnLayout(numberOfColumns=3, columnWidth=[(1, 100), (2, 90), (3, 100)]) cmds.button(label='<< Offset', ann='Nudge selected Audio Backwards', command=partial(self.offsetSelectedBy,'negative')) cmds.floatField('AudioOffsetBy', value=10) cmds.button(label='Offset >>', ann='Nudge selected Audio Forwards', command=partial(self.offsetSelectedBy,'positive')) cmds.setParent('..') cmds.separator(h=15, style='in') cmds.rowColumnLayout(numberOfColumns=2, columnWidth=[(1, 200), (2, 90)]) cmds.button(label='Offset Range to Start at:', ann='offset the selected range of audionodes such that they start at the given frame', command=self.offsetSelectedTo) cmds.floatField('AudioOffsetToo', value=10) cmds.setParent('..') cmds.separator(h=15, style='in') cmds.button(label='Ripple selected', ann="Ripple offset the selected audio nodes so they're timed one after another", command=self.offsetRipple) cmds.separator(h=15, style='none') cmds.iconTextButton(style='iconOnly', bgc=(0.7, 0, 0), image1='Rocket9_buttonStrap2.bmp', c=lambda *args: (r9Setup.red9ContactInfo()), h=22, w=200) cmds.showWindow(self.win) cmds.window(self.win, e=True, widthHeight=(290, 190))
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 show( self ) : oSrch = 'LFT' oRep = 'RGT' oMul = 0 if mc.window( self.win , exists=True ) : oSrch = mc.textField( '%sSrchTF'%self.ui , q=True , tx=True ) oRep = mc.textField( '%sRepTF'%self.ui , q=True , tx=True ) oMul = mc.floatField( '%sMultFF'%self.ui , q=True , v=True ) mc.deleteUI( self.win ) mc.window( self.win , t='pkWeightPuller' , rtf=True ) mc.columnLayout( '%sMainCL'%self.ui , adj=True ) mc.text( l='Search for' , align='center' ) mc.textField( '%sSrchTF'%self.ui , tx=oSrch ) mc.text( l='Replace with' , align='center' ) mc.textField( '%sRepTF'%self.ui , tx=oRep ) mc.button( '%sSwapBUT'%self.ui , l='Swap' , c=partial( self.swap ) ) mc.floatField( '%sMultFF'%self.ui , minValue=0 , maxValue=1 , v=oMul ) mc.button( '%sBUT'%self.ui , l='Pull' , c=partial( self.pull ) ) mc.showWindow( self.win ) mc.window( self.win , e=True , w=180 ) mc.window( self.win , e=True , h=180 )
def snapOnClosestVertex_window(): """ Creates the 'Snap On Closest Vertex' vertex window. """ cmds.windowPref(enableAll=False) if (cmds.window("snapOnClosestVertex_window", exists=True)): cmds.deleteUI("snapOnClosestVertex_window") cmds.window("snapOnClosestVertex_window", title="Snap On Closest Vertex", width=320) spacing = 5 cmds.columnLayout(adjustableColumn=True, rowSpacing=spacing) cmds.rowLayout(numberOfColumns=3, columnWidth3=(125, 150, 130), adjustableColumn=2, columnAlign=(2, "left"), columnAttach=[(1, "both", spacing), (2, "both", spacing), (3, "both", spacing)]) cmds.text(label="Reference Object:") referenceObject_textField = cmds.textField("referenceObject_textField") cmds.button("getReferenceObject_button", label="Get Reference Object!", command=getReferenceObject_button_OnClicked) cmds.setParent(topLevel=True) cmds.separator(style="single") cmds.button("snapIt_button", label="Snap It!", al="center", command=snapIt_button_OnClicked) cmds.showWindow("snapOnClosestVertex_window") cmds.windowPref(enableAll=True)
def deleteTx(self, *args): ctrlPath = '|'.join([self.window, 'radioButton']); selection = cmds.radioButton(ctrlPath, query=True, select=True); self.deletedFiles = 0 ctrlPath = '|'.join([self.window, 'groupBox_3', 'label_10']); if selection: self.selectedFilesFromList() else: self.selectedFilesFromFolder() if not self.selectedFiles: cmds.text(ctrlPath, edit=True, label="Deleted: {0}".format(self.deletedFiles)); return for texture in self.selectedFiles: if not texture: continue; if 'udim' in os.path.basename(texture): udims = getUdims(texture) for udim in udims: txFile = os.path.splitext(udim)[0]+".tx" if os.path.isfile(txFile): os.remove(txFile) self.deletedFiles += 1 else: txFile = os.path.splitext(texture)[0]+".tx" if os.path.isfile(txFile): os.remove(txFile) self.deletedFiles += 1 cmds.text(ctrlPath, edit=True, label="Deleted: {0}".format(self.deletedFiles)); self.updateList()
def AverageUI(self): import maya.cmds as cmds import maya.mel as mel import sys if cmds.window('AverageTool',exists=True): cmds.deleteUI('AverageTool') cmds.window('AverageTool') grid=cmds.gridLayout( numberOfColumns=2, cellWidthHeight=(120, 150) ) column=cmds.columnLayout() cmds.button('Creat',c='creat()',h=100) cmds.button('Key',c='key()',h=50) cmds.columnLayout(column,edit=1,columnAttach=('both',0),adj=1,co=('both',50),columnWidth=120) cmds.setParent(column) cmds.setParent( '..' ) cmds.frameLayout( label='Average', borderStyle='in' ) cmds.columnLayout() cmds.rowLayout( numberOfColumns=3, columnWidth3=(35, 30, 35), adjustableColumn=2, columnAlign=(1, 'right'), columnAttach=[(1, 'both', 0), (2, 'both', 0), (3, 'both', 0)] ) cmds.intField('min',minValue=0,value=0) cmds.text('To') cmds.intField('max',minValue=0, value=0) cmds.setParent( '..' ) cmds.setParent( '..' ) cmds.frameLayout( label='Iterations', borderStyle='out' ) cmds.intField('iterations',minValue=0,maxValue=10,value=0) cmds.frameLayout( label='Key', borderStyle='out' ) cmds.button('Delect',c='Delect()') cmds.showWindow()
def __init__(self, CTL_TREE,allStartingWeights,allNeutralWeights, allCurrentGenWeights, strongestShapes, minMaxWeights, allSymmetryNames, OTHER_FACE_IDS,MESH_NAME,AUTOMATE): self.ctlTree = CTL_TREE self.allStartingWeights = allStartingWeights self.allCurrentGenWeights = allCurrentGenWeights self.allCurrentWeights = allCurrentGenWeights self.allNeutralWeights = allNeutralWeights self.allMinMaxWeights = minMaxWeights self.strongestShapes = strongestShapes self.strongestShapesTree = {} self.generationSelection = [] self.nextGeneration = [] self.allSymmetryNames = allSymmetryNames self.buttonList = [] self.newShapes = {} self.startingCurves = {} self.currentGenCurves = {} self.OTHER_FACE_IDS = OTHER_FACE_IDS self.originalStrongest = strongestShapes self.symGroups = {} self.lastElite = [] self.NextGenePool = [] self.CurrentGenePool = [] self.EliteGenes = [] self.MESH_NAME = MESH_NAME self.EliteGenErrors = [] self.AUTOMATE = AUTOMATE self.STARTING_MESH_VERTS = self.getVertexPositions(0) print "strongestShapes" print strongestShapes self.newShapes = self.flattenDictToVals(self.strongestShapes) targetShapes = self.flattenDictToChildren(self.strongestShapes) strongestShapesTree = self.cropTreeToStrongestShapes() # strongestShapesNeutrals = self.getStrongestNeutralVals(self.strongestShapes) # self.strongestShapesNeutrals = strongestShapesNeutrals print "newShapes:" print self.newShapes print "targetShapes" print targetShapes print "strongestShapesTree" print strongestShapesTree # print "strongestShapesNeutrals" # print strongestShapesNeutrals self.strongestShapesTree = strongestShapesTree flattenedSyms = self.flattenDictToChildren(self.allSymmetryNames) # newShapesSym = self.correctSymmetryNames(newShapes, flattenedSyms) #self.linearBlendshape(self.strongestShapesTree) self.EliteGenes = self.getFaceWeights(self.allStartingWeights, 0) self.lastElite.append(self.getFaceWeights(self.allStartingWeights, 0)) #self.sampleNonLinear(2,[1,2,3]) self.sampleNewFaces(1, [1,2,3], "Sample") selectionUI = 'altUI' if cmds.window(selectionUI, exists=True): cmds.deleteUI(selectionUI) cmds.window(selectionUI, width=1000, height=200) form = cmds.formLayout() tabs = cmds.tabLayout(innerMarginWidth=10, innerMarginHeight=10, mcw=400, width=750, height=100) cmds.formLayout(form, edit=True, attachForm=((tabs, 'top', 0), (tabs, 'left', 0), (tabs, 'bottom', 0), (tabs, 'right', 0))) child2 = cmds.gridLayout(numberOfColumns=4, cellWidthHeight=(300, 32)) cmds.text("ELITE:", font="boldLabelFont", al="center") cmds.text("SAMPLE 1:", font="boldLabelFont", al="center") cmds.text("SAMPLE 2:", font="boldLabelFont", al="center") cmds.text("SAMPLE 3:", font="boldLabelFont", al="center") cmds.rowLayout(numberOfColumns=3, adjustableColumn=2, columnAlign=(1, 'right'), columnAttach=[(1, 'left', 0), (2, 'both', 0), (3, 'right', 0)]) cmds.text(label="Set Elite: ") controlGroup1 = cmds.optionMenu("controlGroup1") for key in range(1, 4): cmds.menuItem(label="SAMPLE " + str(key)) cmds.button(label=' Set ', command=partial(self.setFaceAsElite,1)) cmds.setParent('..') cmds.rowLayout(numberOfColumns=2, adjustableColumn=2, columnAlign=(1, 'right'), columnAttach=[(1, 'left', 0), (2, 'right', 0)]) cmds.text(" ") cmds.checkBox("face1cB", editable=True, label=" Select") cmds.setParent('..') cmds.rowLayout(numberOfColumns=2, adjustableColumn=2, columnAlign=(1, 'right'), columnAttach=[(1, 'left', 0), (2, 'right', 0)]) cmds.text(" ") cmds.checkBox("face2cB", editable=True, label=" Select") cmds.setParent('..') cmds.rowLayout(numberOfColumns=2, adjustableColumn=2, columnAlign=(1, 'right'), columnAttach=[(1, 'left', 0), (2, 'right', 0)]) cmds.text(" ") cmds.checkBox("face3cB", editable=True, label=" Select") cmds.setParent('..') cmds.text(label='') cmds.separator() cmds.separator() cmds.separator() cmds.rowLayout(numberOfColumns=3, adjustableColumn=2, columnAlign=(1, 'right'), columnAttach=[(1, 'left', 0), (2, 'both', 0), (3, 'right', 0)]) cmds.text(label=" ") cmds.button(label='Reset to Last Elite' , command=partial(self.resetToLastElite)) cmds.text(label=" ") cmds.setParent('..') cmds.rowLayout(numberOfColumns=3, adjustableColumn=2, columnAlign=(1, 'right'), columnAttach=[(1, 'left', 0), (2, 'both', 0), (3, 'right', 0)]) cmds.text(label=" ") cmds.button(label='Sample Current Gen' , command=partial(self.sampleCurrentGen)) cmds.text(label=" ") cmds.setParent('..') cmds.rowLayout(numberOfColumns=3, adjustableColumn=2, columnAlign=(1, 'right'), columnAttach=[(1, 'left', 0), (2, 'both', 0), (3, 'right', 0)]) cmds.text(label=" ") cmds.button(label='Add Selected to Gene Pool' , command=partial(self.addToGenePool, 0)) cmds.text(label=" ") cmds.setParent('..') cmds.rowLayout(numberOfColumns=3, adjustableColumn=2, columnAlign=(1, 'right'), columnAttach=[(1, 'left', 0), (2, 'both', 0), (3, 'right', 0)]) cmds.text(label=" ") cmds.button(label='Breed Next Gen' , command=partial(self.breedNextGen)) cmds.text(label=" ") cmds.setParent('..') cmds.setParent('..') child1 = cmds.gridLayout(numberOfColumns=4, cellWidthHeight=(300, 32)) cmds.text(label = "") cmds.text("Choose Group to Act on:", font="boldLabelFont", al="center") controlGroupSourceGroup = cmds.optionMenu("controlGroupSourceGroup") cmds.menuItem(label='All') for key1 in self.allStartingWeights.keys(): cmds.menuItem(label=key1) cmds.text(label="") cmds.text("ELITE:", font="boldLabelFont", al="center") cmds.text("Choose Curve to Act on:", font="boldLabelFont", al="center") controlGroupSource = cmds.optionMenu("controlGroupSource") cmds.menuItem(label='All') for key1 in flattenedSyms: cmds.menuItem(label=key1) cmds.text("OPTIONS:", font="boldLabelFont", al="center") cmds.text(label='') cmds.separator() cmds.separator() cmds.rowLayout(numberOfColumns=2, adjustableColumn=2, columnAlign=(1, 'right'), columnAttach=[(1, 'left', 0), (2, 'right', 0)]) cmds.text(" ") cmds.checkBox("symFlag", editable=True, label=" Symmetry", value=True) cmds.setParent('..') cmds.rowLayout(numberOfColumns=3, adjustableColumn=2, columnAlign=(1, 'right'), columnAttach=[(1, 'left', 0), (2, 'both', 0), (3, 'right', 0)]) cmds.text(label="Set Elite: ") controlGroup2 = cmds.optionMenu("controlGroup2") for key in range(1, 4): cmds.menuItem(label="SAMPLE " + str(key)) cmds.button(label=' Set ' , command=partial(self.setFaceAsElite,2)) cmds.setParent('..') cmds.text("New Curves:", font="boldLabelFont", al="center") cmds.text(label='') cmds.rowLayout(numberOfColumns=2, adjustableColumn=2, columnAlign=(1, 'right'), columnAttach=[(1, 'left', 0), (2, 'right', 0)]) cmds.text(" ") cmds.checkBox("activeOnlyFlag",editable=True, label=" Active blendshapes only") cmds.setParent('..') cmds.rowLayout(numberOfColumns=3, adjustableColumn=2, columnAlign=(1, 'right'), columnAttach=[(1, 'left', 0), (2, 'both', 0), (3, 'right', 0)]) cmds.text(label=" ") cmds.button(label='Reset Samples to Elite' , command=partial(self.copyEliteToSamples)) cmds.text(label=" ") cmds.setParent('..') cmds.rowLayout(numberOfColumns=3, adjustableColumn=2, columnAlign=(1, 'right'), columnAttach=[(1, 'left', 0), (2, 'both', 0), (3, 'right', 0)]) cmds.text(label=" Number of BS's to sample:") cmds.intField("numKeys",minValue=1, maxValue=5, value=3, editable=True) cmds.text(label=" ") cmds.setParent('..') cmds.rowLayout(numberOfColumns=3, adjustableColumn=2, columnAlign=(1, 'right'), columnAttach=[(1, 'left', 0), (2, 'both', 0), (3, 'right', 0)]) cmds.text(label=" ") cmds.button(label='Sample around Elite' , command=partial(self.sampleNewFaces, -1, [1,2,3], "Sample")) cmds.text(label=" ") cmds.setParent('..') cmds.rowLayout(numberOfColumns=3, adjustableColumn=2, columnAlign=(1, 'right'), columnAttach=[(1, 'left', 0), (2, 'both', 0), (3, 'right', 0)], w=100) cmds.text(label=" ") cmds.checkBox("localiseFlag", editable=True, label=" Localise sampling") cmds.text(label=' ') cmds.setParent('..') cmds.rowLayout(numberOfColumns=3, adjustableColumn=2, columnAlign=(1, 'right'), columnAttach=[(1, 'left', 0), (2, 'both', 0), (3, 'right', 0)]) cmds.text(label=" ") cmds.button(label='Reset to Last Elite' , command=partial(self.resetToLastElite)) cmds.text(label=" ") cmds.setParent('..') cmds.rowLayout(numberOfColumns=3, adjustableColumn=2, columnAlign=(1, 'right'), columnAttach=[(1, 'left', 0), (2, 'both', 0), (3, 'right', 0)]) cmds.text(label=" ") cmds.text(label=" ") cmds.text(label=" ") cmds.setParent('..') cmds.rowLayout(numberOfColumns=3, adjustableColumn=2, columnAlign=(1, 'right'), columnAttach=[(1, 'left', 0), (2, 'both', 0), (3, 'right', 0)]) cmds.text(label=" ") cmds.button(label='Sample around Current', command=partial(self.sampleNewFaces,-1,[1,2,3],"Mutate")) cmds.text(label=" ") cmds.setParent('..') cmds.rowLayout(numberOfColumns=3, adjustableColumn=2, columnAlign=(1, 'right'), columnAttach=[(1, 'left', 0), (2, 'both', 0), (3, 'right', 0)], w=100) cmds.text(label=' S.D: ') cmds.floatSliderGrp("sdVal", field=True, minValue=0.0, maxValue=1.0, fieldMinValue=0.0, fieldMaxValue=1.0, value=0.3, cw=[(1, 50), (2, 120)]) cmds.text(label=' ') cmds.setParent('..') cmds.setParent('..') cmds.tabLayout(tabs, edit=True, tabLabel=((child2, '\t\t\t\t\t\t\t\t\tEvolution\t\t\t\t\t\t\t\t\t'), (child1, '\t\t\t\t\t\t\tAdvanced Control\t\t\t\t\t\t\t'))) cmds.showWindow()
import traceback
pass #Set the font of sub UI Currentfont = "plainLabelFont" maya.frameLayout(label='Nuke Script Setting', borderStyle='etchedOut', marginHeight=8, backgroundColor=[0.35, 0.35, 0.35]) maya.rowColumnLayout(numberOfColumns=2, columnAttach=[1, "right", 0], columnWidth=[[1, 100], [2, 400]]) #create the script Path input knob maya.text(label="Nuke Script Path", align="right", font=Currentfont) ScriptPath = maya.textField() commandstr_spt = "filename = maya.fileDialog2(fileMode=1, caption='Script Path');\ tempdata = filename[0];\ maya.textField(ScriptPath,edit=True,fi=tempdata);\ projpath = tempdata" maya.textField(ScriptPath, edit=True, w=400, fi=projpath, dgc=commandstr_spt, changeCommand="Commandchange(ScriptPath,'projpath')") #create the sequences path input knob maya.text(label="Read Node Path", align='right', font=Currentfont)
####UI spacing = 10 titleHeight = 20 cmds.window(title = "HQZ Exporter",width = 600) cmds.columnLayout(adjustableColumn = True, bgc = [0.4,0.4,0.4]) cmds.frameLayout(label= 'File settings', borderStyle='in', collapsable=True, cl = 0) engine_field = cmds.textFieldButtonGrp(label='Engine path', buttonLabel='Set...', buttonCommand = 'get_file(field = engine_field, mode = 1)') directory_field = cmds.textFieldButtonGrp(label='Export directory', buttonLabel='Set...', buttonCommand = 'get_file(field = directory_field, mode = 3)') file_field = cmds.textFieldGrp(label='File name') batch_field = cmds.checkBoxGrp(label='Export batch file', value1 = True) cmds.setParent("..") cmds.frameLayout(label= 'Export settings', borderStyle='in', collapsable=True, cl = 0 ) cmds.text(label='Export settings', height = titleHeight) resolution_field = cmds.intFieldGrp(numberOfFields=2, label='Scale', extraLabel='pixels', value1=1920, value2=1080) exposure_field = cmds.floatSliderGrp(label='Exposure', field=True, value = 0.5, minValue = 0, maxValue = 10) gamma_field = cmds.floatSliderGrp(label='Gamma', field=True, value = 2.2, minValue = 0, maxValue = 4) rays_field = cmds.intSliderGrp(label='Number of rays', field=True, value = 100000, minValue = 0, maxValue = 100000, fieldMaxValue = 1000000000) seed_field = cmds.intSliderGrp(label='Seed', field=True, value = 0, minValue = 0, maxValue = 100000, fieldMaxValue = 1000000000) time_field = cmds.intSliderGrp(label='Render time', field=True, value = 20, minValue = 0, maxValue = 1000, fieldMaxValue = 100000000, extraLabel=' (0 for infinity)') animation_field = cmds.checkBoxGrp(label='Export animation', value1=False, changeCommand='cmds.intFieldGrp(frame_range_field, edit=True, enable=cmds.checkBoxGrp(animation_field, query=True, value1=True))') frame_range_field = cmds.intFieldGrp(numberOfFields=2, label='Frame range', value1=1, value2=5, enable=False) normals_export_field = cmds.checkBoxGrp(label='Export normals', value1 = True) normals_invert_field = cmds.checkBoxGrp(label='Revert normals', value1 = False) check_Z_field = cmds.checkBoxGrp(label='Check Z value', value1 = True) cmds.setParent("..") cmds.frameLayout(label='Material settings', borderStyle='in', collapsable=True, cl = 0) cmds.text(label="Please enter factors for diffusion, transmission and reflection. The sum should be between 0 and 1.", height = titleHeight)
def UI_animCurve( self, UIparent ): panels = [ 'flAnimCurve', 'colAnimCurve' , 'flAnimGather' , 'colAnimGather' , 'flAnimRelease' , 'colAnimRelease' ] mc.frameLayout( panels[0] , li = 80 , cl = 1 , cll = 1 , w = 262 , bgc = [ 0.23 , 0.23 , 0.24 ] , label = 'ANIM CURVE' , p = UIparent ) mc.columnLayout( panels[1] , p = panels[0] , bgc = [ 0.27 , 0.27 , 0.27 ] , columnAttach = [ 'both' , 10 ] , rowSpacing = 0 , columnWidth = 280 ) mc.text( p = panels[1] , l = '' , h = 1 ) mc.textField(self.ftAnimPath , p = panels[1] , tx = self.animCurvePath , ann = self.animCurvePath , ec = '{}.cmds_animCurveRefreshPath()'.format(self.variableNameInGlobal) , cc = '{}.cmds_animCurveRefreshPath()'.format(self.variableNameInGlobal) ) mc.text( p = panels[1] , l = '' , h = 5 ) mc.button( p = panels[1] , l = 'PATH - GET CURRENT SCENE' , bgc = [ 0.5 , 0.3 , 0.3 ] , c = '{}.cmds_animCurvePathUpdateWithCurrent()'.format(self.variableNameInGlobal) ) mc.text( p = panels[1] , l = '' , h = 5 ) mc.button( p = panels[1] , l = 'PATH - OPEN IN EXPLORER' , bgc = [ 0.3 , 0.3 , 0.3 ] , c = '{}.cmds_animCurvePathOpen()'.format(self.variableNameInGlobal) ) mc.text( p = panels[1] , l = '' , h = 5 ) mc.text( p = panels[1] , l = '' , h = 5 ) mc.checkBox( self.cbFileShowLatest , p = panels[1] , l = 'show only latest' , v = 1 , cc = '{}.cmds_animCurveRefreshPath()'.format(self.variableNameInGlobal) ) mc.text( p = panels[1] , l = '' , h = 5 ) mc.optionMenu(self.omFileNames , p = panels[1] , w = 120 , bgc = [ 0.35 , 0.35 , 0.35 ] , cc = '{}.cmds_animCurveRefreshFile()'.format(self.variableNameInGlobal) ) mc.text( p = panels[1] , l = '' , h = 1 ) mc.frameLayout( panels[2] , p = panels[1] , l = 'GATHER' , bgc = [ 0.23 , 0.23 , 0.24 ] , li = 80 , cl = 1 , cll = 1 , w = 262 ) mc.text( p = panels[1] , l = '' , h = 1 ) mc.frameLayout( panels[4] , p = panels[1] , l = 'RELEASE' , bgc = [ 0.23 , 0.23 , 0.24 ] , li = 80 , cl = 1 , cll = 1 , w = 262 ) mc.columnLayout( panels[3] , p = panels[2] , bgc = [ 0.27 , 0.27 , 0.27 ] , columnAttach = [ 'both' , 10 ] , rowSpacing = 0 , columnWidth = 280 ) mc.text( p = panels[3] , l = '' , h = 1 ) mc.button( p = panels[3] , l = 'GATHER' , bgc = [ 0.5 , 0.3 , 0.3 ] , c = '{}.cmds_animCurveGather()'.format(self.variableNameInGlobal) ) mc.text( p = panels[3] , l = '' , h = 5 ) mc.button( p = panels[3] , l = 'SELECT CTRLS' , bgc = [ 0.5 , 0.3 , 0.3 ] , c = '{}.cmds_animCurveObjSelect()'.format(self.variableNameInGlobal) ) mc.text( p = panels[3] , l = '' , h = 5 ) mc.checkBox( self.cbAnimLoadOnSelection , p = panels[3] , l = 'CTRLS - load on selection' , v = 0 ) mc.text( p = panels[3] , l = '' , h = 5 ) mc.checkBox( self.cbAnimLoadMatchSelection , p = panels[3] , l = 'CTRLS - match selection' , v = 0 ) mc.text( p = panels[3] , l = '' , h = 5 ) mc.checkBox( self.cbAnimLoadMatchNamespace , p = panels[3] , l = 'CTRLS - match selected namespace' , v = 0 ) mc.text( p = panels[3] , l = '' , h = 5 ) mc.checkBox( self.cbAnimReplaceCurrent , p = panels[3] , l = 'CURVES - replace' , v = 0 ) mc.text( p = panels[3] , l = '' , h = 5 ) mc.checkBox( self.cbAnimOffsetCurrentFrame , p = panels[3] , l = 'TIME - load at current frame' , v = 0 ) mc.text( p = panels[3] , l = '' , h = 5 ) mc.checkBox( self.cbAnimOffsetEndFrame , p = panels[3] , l = 'TIME - load at end frame' , v = 0 ) mc.text( p = panels[3] , l = '' , h = 5 ) mc.checkBox( self.cbAnimInverse , p = panels[3] , l = 'TIME - inverse' , v = 0 ) mc.text( p = panels[3] , l = '' , h = 5 ) mc.checkBox( self.cbAnimMirror , p = panels[3] , l = 'VALUE - mirror' , v = 0 ) mc.text( p = panels[3] , l = '' , h = 10 ) for animCurvefile in self.animCurvefiles: mc.menuItem( p = self.omFileNames , l = animCurvefile ) mc.columnLayout( panels[5] , p = panels[4] , bgc = [ 0.27 , 0.27 , 0.27 ] , columnAttach = [ 'both' , 10 ] , rowSpacing = 0 , columnWidth = 280 ) mc.button( p = panels[5] , l = 'RELEASE' , bgc = [ 0.5 , 0.3 , 0.3 ] , c = '{}.cmds_animCurveRelease()'.format(self.variableNameInGlobal) ) mc.text( p = panels[5] , l = '' , h = 5 ) mc.radioCollection( self.rcAnimCurveReleaseOption , p = panels[5] ) mc.radioButton( l = 'from All' ) mc.radioButton( l = 'from selected RIG' ) mc.radioButton( l = 'from selected CTRLS' , select = True ) mc.text( p = panels[5] , l = '' , h = 10 )
def UI_manipShape( self, UIparent ): panels = [ 'bmUI_manipShape' , 'bmUI_manipShapeForm' , 'bmUI_manipShapeAxe' , 'bmUI_manipShapeColor' , 'bmUI_colomn' ] mc.frameLayout( panels[0] , li = 80 , cl = 1 , cll = 1 , w = 262 , bgc = [ 0.23 , 0.23 , 0.24 ] , label = 'CTRL SHAPE' , p = UIparent ) mc.columnLayout( panels[4] , p = panels[0] , bgc = [ 0.27 , 0.27 , 0.27 ] , columnAttach = [ 'both' , 10 ] , rowSpacing = 0 , columnWidth = 280 ) mc.text( p = panels[4] , l = '' , h = 1 ) form = mc.formLayout( p = panels[4] , numberOfDivisions = 100 , bgc = [ 0.27 , 0.27 , 0.27 ] ) self.UI_manipShape_form( panels[1] , form ) self.UI_manipShape_colorSorted( panels[2] , form ) self.UI_manipShape_color( panels[3] , form ) mc.formLayout( form , e = True , af =[ ( panels[1] , 'top' , 5 ) , ( panels[1] , 'left' , 0 ) ] , ac = [ ] ) # manipShapeForm mc.formLayout( form , e = True , af =[ ( panels[2] , 'left' , 0 ) ] , ac = [ ( panels[2] , 'top' , 5 , panels[1] ) ] ) # manipShapeForm mc.formLayout( form , e = True , af =[ ( panels[3] , 'left' , 0 ) ,( panels[3] , 'bottom' , 10 ) ] , ac = [ ( panels[3] , 'top' , 5 , panels[2] ) ] ) # manipShapeColor mc.text( p = panels[4] , l = '' , h = 5 ) mc.checkBox( self.cbModifDupli , p = panels[4] , l = 'MODIFY DUPLICATES' , v = 1 ) mc.text( p = panels[4] , l = '' , h = 5 ) mc.button( p = panels[4] , l = 'SELECT DUPLICATES SHAPE' , bgc = [ 0.5 , 0.3 , 0.3 ] , c = '{}.cmds_selectDuplicateCtrls()'.format(self.variableNameInGlobal) ) mc.text( p = panels[4] , l = '' , h = 5 ) mc.button( p = panels[4] , l = 'UPDATE DUPLICATES SHAPE' , bgc = [ 0.5 , 0.3 , 0.3 ] , c = '{}.cmds_updateDuplicateCtrls()'.format(self.variableNameInGlobal) ) mc.text( p = panels[4] , l = '' , h = 5 ) mc.checkBox( self.cbUpdateInWS , p = panels[4] , l = 'in local Space' , v = 0 ) mc.text( p = panels[4] , l = '' , h = 5 ) mc.button( p = panels[4] , l = 'CURVE LINE 3' , bgc = [ 0.5 , 0.3 , 0.3 ] , c = '{}.cmds_updateLineWidthDuplicateCtrls( 3 )'.format(self.variableNameInGlobal) ) mc.text( p = panels[4] , l = '' , h = 10 )
def UI_constraint( self, UIparent ): panels = [ 'constraintUI_manipShape' , 'constraintUI_colomn' ] mc.frameLayout( panels[0] , li = 80 , cl = 1 , cll = 1 , w = 262 , bgc = [ 0.23 , 0.23 , 0.24 ] , label = 'CONSTRAINTS' , p = UIparent ) mc.columnLayout( panels[1] , p = panels[0] , bgc = [ 0.27 , 0.27 , 0.27 ] , columnAttach = [ 'both' , 10 ] , rowSpacing = 0 , columnWidth = 280 ) mc.text( p = panels[1] , l = '' , h = 5 ) mc.button( p = panels[1] , l = 'CONSTRAINT' , bgc = [ 0.5 , 0.3 , 0.3 ] , c = '{}.cmds_constraint()'.format(self.variableNameInGlobal) ) mc.text( p = panels[1] , l = '' , h = 5 ) mc.checkBox( self.cbConstraintDuplicates , p = panels[1] , l = 'MODIFY DUPLICATES' , v = 1 ) mc.text( p = panels[1] , l = '' , h = 5 ) mc.checkBox( self.cbConstraintConvert , p = panels[1] , l = 'CONVERT CTRL TO OUT' , v = 1 ) mc.text( p = panels[1] , l = '' , h = 5 ) mc.checkBox( self.cbConstraint2by2 , p = panels[1] , l = '2BY2' , v = 1 ) mc.text( p = panels[1] , l = '' , h = 5 ) mc.checkBox( self.cbConstraintPoint , p = panels[1] , l = 'POINT' , v = 1 ) mc.text( p = panels[1] , l = '' , h = 5 ) mc.checkBox( self.cbConstraintRotate , p = panels[1] , l = 'ROTATE' , v = 1 ) mc.text( p = panels[1] , l = '' , h = 5 ) mc.checkBox( self.cbConstraintScale , p = panels[1] , l = 'SCALE' , v = 1 ) mc.text( p = panels[1] , l = '' , h = 10 )
def repathUI(): global eloadNameSpace global epathShader global epathAlembic global iloadNameSpace global ipathShader global ipathAlembic global uloadNameSpace global upathShader global upathAlembic global tabs global F tabs='tabs' wPathUI='EXPORPACO v1.6' if cmds.window(wPathUI, exists=True): cmds.deleteUI(wPathUI) if cmds.window(tabs, exists=True): cmds.deleteUI(tabs) wPathUI=cmds.window(wPathUI,title=wPathUI,resizeToFitChildren=True,s=1) tabs = cmds.tabLayout('tabs',innerMarginWidth=100, innerMarginHeight=5) #Creo columna de Export ecl1=cmds.columnLayout(parent=tabs,adjustableColumn=True,columnOffset=['both',5],rowSpacing=5 ) etx1=cmds.text("EXPORT ALEMBIC!!",parent=ecl1,bgc=(1,8,0)) ecl2=cmds.columnLayout(parent=ecl1) efl1=cmds.rowLayout(numberOfColumns=3,columnWidth3=[90,100,70],parent=ecl2) etx0=cmds.text("NAMESPACE->",h=25,parent=efl1) eloadNameSpace=cmds.textField(w=250,h=25,parent=efl1) efl2=cmds.rowLayout(numberOfColumns=3,columnWidth3=[90,100,70],parent=ecl2) etx2=cmds.text("FILE SHADER->",h=25,parent=efl2) epathShader=cmds.textField(w=250,h=25,parent=efl2) eloadBtnShd=cmds.button(w=100,label="SELECT FILE",c="PH_EXPORTPACO.selectDir()",parent=efl2) efl3=cmds.rowLayout(numberOfColumns=3,columnWidth3=[90,100,70],parent=ecl2) etx3=cmds.text("SAVE ALEMBIC->",h=25,parent=efl3) epathAlembic=cmds.textField(w=250,h=25,parent=efl3) eloadBtnAbc=cmds.button(w=100,label="SAVE .ABC ",c="PH_EXPORTPACO.selectDir(F=False)",parent=efl3) cmds.setParent( '..' ) efixit=cmds.button(l="MANUEAL CREATE ALEMBIC", c="PH_EXPORTPACO.alembic()",w=70,h=80,bgc=(0.8,0.6,0),parent=ecl1) #autoExport=cmds.button(l="AUTO CREATE ALEMBIC", c="PH_EXPORTPACO.automaticExport()",w=70,h=80,bgc=(0.8,0.6,0),parent=ecl1) #autoSwitch=cmds.button(l="SWITCH CACHE/RIG", c="PH_EXPORTPACO.changebetweencache()",w=70,h=80,bgc=(0.8,0.6,0),parent=ecl1) cmds.setParent( '..' ) #Creo columna de Import icl1=cmds.columnLayout(parent=tabs,adjustableColumn=True,columnOffset=['both',5],rowSpacing=5 ) itx1=cmds.text("IMPORT ALEMBIC!!",parent=icl1,bgc=(0.5,0.8,1)) icl2=cmds.columnLayout(parent=icl1) ifl1=cmds.rowLayout(numberOfColumns=3,columnWidth3=[90,100,70],parent=icl2) itx0=cmds.text("NAMESPACE->",h=25,parent=ifl1) iloadNameSpace=cmds.textField(w=250,h=25,parent=ifl1) ifl2=cmds.rowLayout(numberOfColumns=3,columnWidth3=[90,100,70],parent=icl2) itx2=cmds.text("FILE SHADER->",h=25,parent=ifl2) ipathShader=cmds.textField(w=250,h=25,parent=ifl2) iloadBtnShd=cmds.button(w=100,label="SELECT FILE",c="PH_EXPORTPACO.selectDir(True)",parent=ifl2) ifl3=cmds.rowLayout(numberOfColumns=3,columnWidth3=[90,100,70],parent=icl2) itx3=cmds.text("FILE ALEMBIC->",h=25,parent=ifl3) ipathAlembic=cmds.textField(w=250,h=25,parent=ifl3) iloadBtnAbc=cmds.button(w=100,label="SELECT .ABC",c="PH_EXPORTPACO.selectDir(F=False)",parent=ifl3) ifixit=cmds.button(l="IMPORT ALEMBIC", c="PH_EXPORTPACO.alembic()",w=70,h=80,bgc=(0.5,0.8,1),parent=icl1) #Creo columna de Update ucl1=cmds.columnLayout(parent=tabs,adjustableColumn=True,columnOffset=['both',5],rowSpacing=5 ) utx1=cmds.text("UPDATE ALEMBIC!!",parent=ucl1,bgc=(0.29,0.87,0.35)) ucl2=cmds.columnLayout(parent=ucl1) ufl1=cmds.rowLayout(numberOfColumns=3,columnWidth3=[90,100,70],parent=ucl2) utx0=cmds.text("NAMESPACE->",h=25,parent=ufl1) uloadNameSpace=cmds.textField(w=250,h=25,parent=ufl1) ufl2=cmds.rowLayout(numberOfColumns=3,columnWidth3=[90,100,70],parent=ucl2) ufl3=cmds.rowLayout(numberOfColumns=3,columnWidth3=[90,100,70],parent=ucl2) utx3=cmds.text("FILE ALEMBIC->",h=25,parent=ufl3) upathAlembic=cmds.textField(w=250,h=25,parent=ufl3) uloadBtnAbc=cmds.button(w=100,label="SELECT .ABC ",c="PH_EXPORTPACO.selectDir()",parent=ufl3) fixit=cmds.button(l="UPDATE ALEMBIC", c="PH_EXPORTPACO.alembic()",w=70,h=80,bgc=(0.29,0.87,0.35),parent=ucl1) #Creo los Tabs tabs=cmds.tabLayout( tabs, edit=True, tabLabel=((ecl1, 'CREATE ALEMBIC'),(icl1, 'IMPORT ALEMBIC'),(ucl1, 'UPDATE ALEMBIC'))) cmds.showWindow(wPathUI)
typeToPrune = 'ikEffector' deleteFilteredObjects(globalTargetRig, typeToPrune) #Start GUI if cmds.window(windowID, exists=True): cmds.deleteUI(windowID) cmds.window(windowID, title='Dupe Rig, Parent Constrain Hierarchy', sizeable=False, resizeToFitChildren=True) #Start of 1st frame cmds.frameLayout(label='Duplicate and Rename', collapsable=True) cmds.text(label = 'Select the joint root to duplicate and enter search and replace names') #Start of 1st frame content cmds.rowColumnLayout(numberOfColumns=5, columnWidth=[(1,150), (2,150), (3,10), (4,100), (5,150)], columnOffset=[(1,'right', 3)]) #New Row cmds.text(label='Joint root to duplicate:') jointNameField = cmds.textField('selectedObjectField') cmds.separator(h=10, style='none') cmds.separator(h=10, style='none') cmds.button(label='Select', command=(loadSelected)) #functools.partial
def gui(): if (cmds.window(win, q=True, ex=True)): cmds.deleteUI(win) global prefix, name, start_num, pad_num, division, search, replace, sel_hier cmds.window(win, t='Rename Tool', w=width, h=300) main_layout = cmds.columnLayout(w=width, nch=2) cmds.rowColumnLayout(w=width, nc=2) cmds.text(w=(width/2), l='Prefix:') prefix = cmds.textField(w=(width/2), tx='Prefix') cmds.text(w=(width/2), l='New Name:') name = cmds.textField(w=(width/2), tx='New Name') cmds.text(w=(width/2), l='Start Number:') start_num = cmds.intField(w=(width/2), min=0, max=999, v=1, s=1) cmds.text(w=(width/2), l='Padding:') pad_num = cmds.intField(w=(width/2), min=0, max=5, v=2, s=1) cmds.text(w=75, l='Divider:') division = cmds.radioButtonGrp(nrb=2, cw=[(1,40), (2,40)], labelArray2=('_', 'None'), sl=1) cmds.setParent(main_layout) cmds.columnLayout(w=width, adj=True) cmds.button(l='Rename', c=scriptname + '.run_rename()') cmds.setParent(main_layout) cmds.rowColumnLayout(w=width, nc=2) cmds.text(w=(width/2), l='Search:') search = cmds.textField(w=(width/2), tx='joint') cmds.text(w=(width/2), l='Replace:') replace = cmds.textField(w=(width/2), tx='Replace') cmds.setParent(main_layout) cmds.columnLayout(w=width, adj=True) sel_hier = cmds.radioButtonGrp(nrb=2, cw=[(1,(width/2)), (2,(width/2))], labelArray2=('Selected', 'Hierarchy'), sl=1) cmds.button(w=75, l='Replace', c=scriptname + '.searchReplace()') cmds.showWindow()
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', w=88, c=lambda *args: refreshLightGroupMenu()) f18 = cmds.button(l='Set LightGroup', w=88, c=lambda *args: setLightGroupFromMenu()) cmds.setParent(u=True) f19 = cmds.textFieldGrp('AOVString', l='AOVs String') f20 = cmds.textScrollList('MeshLight_LightGroupList', w=180, h=380) f21 = cmds.textScrollList('LightFilterList', w=180, h=380, ams=True) f22 = cmds.rowLayout(nc=3) cmds.button(l='List', w=58, c=lambda *args: refreshAiLightFilterList()) cmds.button(l='Connect', w=58, c=lambda *args: connectAiLightFilter()) cmds.button(l='Cut', w=58, c=lambda *args: disconnectExistsFilters()) cmds.setParent(u=True) 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', 355), (f16, 'left', 5), (f19, 'top', 330), (f19, 'left', -40), (f20, 'top', 383), (f20, 'left', 5), (f21, 'top', 383), (f21, 'left', 195), (f22, 'top', 355), (f22, 'left', 195)]) 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.menuItem(l='Light Color Button Window', c=lambda *args: colorAnalyzer()) 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()) cmds.textScrollList( 'LightFilterList', e=True, dcc=lambda *args: cmds.select( cmds.textScrollList('LightFilterList', q=True, si=True), r=True))
def show(self): self.close() win = mc.window(self._windowName, t=u'导入数据生成动画', widthHeight=self._windowSize) mc.formLayout('formLyt', numberOfDivisions=100) one = mc.columnLayout('First_Set', parent='formLyt') mc.rowLayout('PathRow', numberOfColumns=3, columnAttach3=['left', 'left', 'left'], columnWidth3=[5, 260, 35], columnOffset3=[2, 2, 2], adjustableColumn3=True, parent='First_Set') mc.textFieldButtonGrp(self._textDateFBG, label=u'采集数据文件路径:', ed=False, text='', columnWidth3=[109, 230, 100], buttonLabel=u'选择文件', bc=self.fileDateGet) mc.rowLayout('oneRow', numberOfColumns=3, columnAttach3=['left', 'left', 'left'], columnWidth3=[5, 260, 35], columnOffset3=[2, 2, 2], adjustableColumn3=True, parent='First_Set') mc.textFieldButtonGrp(self._textTranFBG, label=u'动态文件读取路径:', ed=False, text='', columnWidth3=[109, 230, 100], buttonLabel=u'选择文件', bc=self.fileTranGet) mc.rowLayout('addRow', numberOfColumns=3, columnAttach3=['left', 'left', 'left'], columnWidth3=[5, 260, 35], columnOffset3=[2, 2, 2], adjustableColumn3=True, parent='First_Set') mc.textFieldButtonGrp(self._textSaveFBG, label=u'动态文件保存路径:', ed=False, text='', columnWidth3=[109, 230, 100], buttonLabel=u'保存文件', bc=self.fileSaveGet) mc.rowLayout('twoRow', numberOfColumns=4, columnAttach4=['left', 'left', 'left', 'left'], columnWidth4=[5, 68, 70, 88], columnOffset4=[2, 2, 10, 15], adjustableColumn4=True, parent='First_Set') mc.text(label=u'开始帧:', w=68, parent='twoRow') mc.textField('startFrame', text='1', width=80, alwaysInvokeEnterCommandOnReturn=True, parent='twoRow') mc.text(label=u'结束帧:', w=68, parent='twoRow') mc.textField('endFrame', text='25', width=80, alwaysInvokeEnterCommandOnReturn=True, parent='twoRow') mc.rowLayout('threeRow', numberOfColumns=5, columnAttach5=['left', 'left', 'left', 'left', 'left'], columnWidth5=[50, 50, 50, 35, 35], columnOffset5=[10, 10, 10, 10, 20], adjustableColumn5=True, parent='First_Set') mc.textField(self._textSub, text='1', width=40, alwaysInvokeEnterCommandOnReturn=True, parent='threeRow') mc.button(l=u'创建分段点', width=60, command=lambda *arg: self.Subsection(), parent='threeRow') mc.text(label=u'场景比例', w=60, parent='threeRow') mc.textFieldGrp(self._textFG, cw2=[150, 50], cal=[1, 'left'], text='1', parent='threeRow') mc.button(l=u'生成', width=150, parent='threeRow', c=self.Doit) mc.setParent('First_Set') two = mc.scrollLayout('Subsection_set', horizontalScrollBarThickness=16, verticalScrollBarThickness=16, w=400, h=400) mc.rowLayout('fourRow', adjustableColumn1=True, backgroundColor=[0.1, 0.1, 0.1], w=400, parent='Subsection_set') mc.text( l= u'-------------------------------------------分段设置-------------------------------------------', parent='fourRow') mc.rowColumnLayout('fiveRow', numberOfColumns=3, columnWidth=[(1, 60), (2, 80), (3, 90)], parent='Subsection_set') mc.text(l=u'每段起始帧', parent='fiveRow') mc.text(l=u'头尾融合帧', parent='fiveRow') mc.text(l=u'距离缩放', parent='fiveRow') self.Subsection() mc.showWindow(win)
def ui(): ''' ''' with utl.MlUi('ml_animCurveEditor', 'Animation Curve Editing', width=400, height=300, info='''Non-Linear Editing workflows for animation curves. Choose which animCurves to affect from the drop-down menu, then change tabs to choose options related to that function.''') as win: mc.separator(height=8, style='none') mc.optionMenuGrp('ml_animCurveEditor_selection_menu', label='Act On AnimCurves In:') mc.menuItem(label='Selected Nodes') mc.menuItem(label='Selected Channels') mc.menuItem(label='Hierarchy') mc.menuItem(label='Graph Editor') mc.menuItem(label='Entire Scene') #mc.menuItem(label='AnimLayer') mc.separator(height=8, style='none') tabs = mc.tabLayout() # ________ #/ Offset \_________________________________ tab1 = mc.columnLayout(adj=True) mc.separator(height=8, style='none') mc.text('Offset animCurves by the number of frames specified.') mc.text('Use negative values to offset backward in time.') mc.separator(height=16, style='in') mc.floatFieldGrp('ml_animCurveEditor_frames_floatField', label='Frames') mc.paneLayout(configuration='vertical2', separatorThickness=1) win.ButtonWithPopup( label='Offset', command=offset, name='ml_animCurveEditor', readUI_toArgs={ 'frames': 'ml_animCurveEditor_frames_floatField', 'selectionOption': 'ml_animCurveEditor_selection_menu' }, annotation= 'Offset curves in time by the number of frames specified. use negative numbers to offset backwards.' ) win.ButtonWithPopup( label='Offset Current Frame To', command=offsetCurrentTimeTo, name='ml_animCurveEditor', readUI_toArgs={ 'frame': 'ml_animCurveEditor_frames_floatField', 'selectionOption': 'ml_animCurveEditor_selection_menu' }, annotation= 'Offset curves so that the current time is moved to the specified frame.' ) mc.setParent('..') win.ButtonWithPopup(label='Insert Frame', command=insertFrame, name='ml_animCurveEditor', readUI_toArgs={ 'selectionOption': 'ml_animCurveEditor_selection_menu' }, annotation='Insert frame.') mc.setParent('..') # _____ #____________/ Cut \_______________________ tab2 = mc.columnLayout(adj=True) mc.separator(height=8, style='none') mc.text( 'Cut sections of animation, based on the current frame or timeline selection.' ) mc.text( 'If Set Key At Cut is checked, a key will be set so that the integrity of the curves are mainained.' ) mc.separator(height=16, style='in') mc.checkBoxGrp( 'ml_animCurveEditor_setKeyAtCut_checkBox', label='Set Key At Cut', value1=True, annotation='Set a key at the cut point to preserve curves.') mc.paneLayout(configuration='vertical2', separatorThickness=1) b11 = win.ButtonWithPopup( label='Cut Before Current Frame', command=cutEarlier, name='ml_animCurveEditor', readUI_toArgs={ 'selectionOption': 'ml_animCurveEditor_selection_menu', 'setKey': 'ml_animCurveEditor_setKeyAtCut_checkBox' }, annotation='Cut all keys before the current frame') b21 = win.ButtonWithPopup( label='Cut After Current Frame', command=cutLater, name='ml_animCurveEditor', readUI_toArgs={ 'selectionOption': 'ml_animCurveEditor_selection_menu', 'setKey': 'ml_animCurveEditor_setKeyAtCut_checkBox' }, annotation='Cut all keys after the current frame') mc.setParent('..') mc.paneLayout(configuration='vertical2', separatorThickness=1) b12 = win.ButtonWithPopup( label='Cut Selected Range', command=cutSelected, name='ml_animCurveEditor', readUI_toArgs={ 'selectionOption': 'ml_animCurveEditor_selection_menu', 'setKey': 'ml_animCurveEditor_setKeyAtCut_checkBox' }, annotation='Cut all keys within the range selected in the timeline' ) b22 = win.ButtonWithPopup( label='Cut Unselected Range (Keep Only Selection)', command=cutUnselected, name='ml_animCurveEditor', readUI_toArgs={ 'selectionOption': 'ml_animCurveEditor_selection_menu', 'setKey': 'ml_animCurveEditor_setKeyAtCut_checkBox' }, annotation='Cut all keys outside of the selected range') mc.setParent('..') b22 = win.ButtonWithPopup( label='Ripple Cut Selection', command=rippleCut, name='ml_animCurveEditor', readUI_toArgs={ 'selectionOption': 'ml_animCurveEditor_selection_menu', 'setKey': 'ml_animCurveEditor_setKeyAtCut_checkBox' }, annotation= 'Cut keys within the selection, and move the later keys to close the gap' ) mc.setParent('..') # ____________ #____/ Scale Time \_______________________ tab3 = mc.columnLayout(adj=True) mc.separator(height=8, style='none') mc.text('Scale animation in time to speed it up or slow it down.') mc.text( 'Time Pivot is where the animation scales from, values at this position wont change.' ) mc.separator(height=16, style='in') mc.radioButtonGrp( 'ml_animCurveEditor_scaleTimePivot_radioButton', label='Time Pivot', numberOfRadioButtons=4, labelArray4=('Current Frame', 'Start', 'End', 'Middle'), select=1, annotation= 'Where in time to scale from. start, end and middle refer to the range of the animation curves, not the timeline.' ) mc.floatSliderGrp( 'ml_animCurveEditor_scaleTimePercent_floatField', label='Percent', field=True, value=100, precision=0, step=1, sliderStep=10, minValue=0, maxValue=200, fieldMinValue=-10000, fieldMaxValue=10000, annotation= 'Percentage to scale time by. 50% will make motion go twice as fast, etc.' ) win.ButtonWithPopup( label='Scale Key Time', command=scaleTime, name='ml_animCurveEditor', readUI_toArgs={ 'percent': 'ml_animCurveEditor_scaleTimePercent_floatField', 'pivotOption': 'ml_animCurveEditor_scaleTimePivot_radioButton', 'selectionOption': 'ml_animCurveEditor_selection_menu' }, annotation='Scale curves in time.') mc.setParent('..') # _____________ #________/ Scale Value \____________________ tab4 = mc.columnLayout(adj=True) mc.separator(height=8, style='none') mc.text( 'Scale animCurve values to change how much they affect the animation.' ) mc.text( 'Value Pivot is where the animation scales from, values at this position wont change.' ) mc.separator(height=16, style='in') mc.radioButtonGrp( 'ml_animCurveEditor_scaleValuePivot_radioButton', label='Value Pivot', numberOfRadioButtons=4, labelArray4=('Zero', 'Top', 'Bottom', 'Middle'), select=1, annotation= 'Where to scale the curves from. top, bottom and middle refer to the highest and lowest keys on the curve.' ) mc.floatSliderGrp('ml_animCurveEditor_scaleValuePercent_floatField', label='Percent', field=True, value=100, precision=0, step=1, sliderStep=10, minValue=0, maxValue=200, fieldMinValue=-10000, fieldMaxValue=10000, annotation='Percentage to scale keyframe values by') win.ButtonWithPopup( label='Scale Keys', command=scaleValue, name='ml_animCurveEditor', readUI_toArgs={ 'percent': 'ml_animCurveEditor_scaleValuePercent_floatField', 'pivotOption': 'ml_animCurveEditor_scaleValuePivot_radioButton', 'selectionOption': 'ml_animCurveEditor_selection_menu' }, annotation='Scale keyframe values') mc.setParent('..') # _____________ #________________/ Value Clamp \______________ tab5 = mc.columnLayout(adj=True) mc.separator(height=8, style='none') mc.text('Clamp animation curve values at an upper or lower bound.') mc.text( 'For example to keep keys from passing below a zero-level ground plane.' ) mc.separator(height=16, style='in') mc.radioButtonGrp( 'ml_animCurveEditor_clamp_radioButton', label='Clamp:', numberOfRadioButtons=2, labelArray2=('Clamp Upper', 'Clamp Lower'), select=1, annotation= 'Either clamp everything above the specified value, or below') mc.floatFieldGrp( 'ml_animCurveEditor_clampValue_floatField', label='Value:', annotation='Clamp keyframes above or below this value to this value' ) win.ButtonWithPopup(label='Clamp', command=clampValues, name='ml_animCurveEditor', readUI_toArgs={ 'value': 'ml_animCurveEditor_clampValue_floatField', 'clampOption': 'ml_animCurveEditor_clamp_radioButton', 'selectionOption': 'ml_animCurveEditor_selection_menu' }, annotation='Clamp keyframe values') mc.setParent('..') # __________ #________________________/ Clean Up \_________ tab6 = mc.columnLayout(adj=True) mc.separator(height=8, style='none') mc.text('Various tools for deleting keys.') mc.separator(height=16, style='in') win.ButtonWithPopup( label='Delete Static Channels', command=deleteStaticChannels, name='ml_animCurveEditor', readUI_toArgs={ 'selectionOption': 'ml_animCurveEditor_selection_menu' }, annotation="Delete all keys on channels which don't change value") win.ButtonWithPopup( label='Delete Redundant Keys', command=deleteRedundantKeys, name='ml_animCurveEditor', readUI_toArgs={ 'selectionOption': 'ml_animCurveEditor_selection_menu' }, annotation= "Delete keyframes who's values are the same as previous and next key." ) win.ButtonWithPopup( label='Delete Sub-Frame Keys', command=deleteSubFrameKeys, name='ml_animCurveEditor', readUI_toArgs={ 'selectionOption': 'ml_animCurveEditor_selection_menu' }, annotation="Delete keys that aren't on a whole-number frame.") mc.tabLayout(tabs, edit=True, tabLabel=((tab1, 'Offset'), (tab2, 'Cut'), (tab3, 'Scale Time'), (tab4, 'Scale Value'), (tab5, 'Clamp'), (tab6, 'Clean Up')))
def __init__(self, *args): if not cmds.objExists('All_InitCTL'): self.rigInitCtl_inst = initrigset.RigAll() self.rigInitCtl_inst.putInitCtl() self.rigInitCtl_inst.doIt() try: f = open("pickle.dat", 'w') pickle.dump(self.rigInitCtl_inst, f) f.close() except: pass else: try: f = open("pickle.dat", 'r') self.rigInitCtl_inst = pickle.load(f) f.close() except: pass win = rigbase.createWindow('locusHumanRig_ui', title='Locus Human Rig') form = cmds.formLayout() cmds.image(image=chModules.chRiggingImagePath) cmds.popupMenu() cmds.menuItem(l='Mirror <<') cmds.menuItem(l='Mirror >>') self.neckField = cmds.intField(v=4, min=3) self.bodyField = cmds.intField(v=5, min=3) self.armLUField = cmds.intField(v=5, min=3) self.armLLField = cmds.intField(v=5, min=3) self.armRUField = cmds.intField(v=5, min=3) self.armRLField = cmds.intField(v=5, min=3) self.legLUField = cmds.intField(v=5, min=3) self.legLLField = cmds.intField(v=5, min=3) self.legRUField = cmds.intField(v=5, min=3) self.legRLField = cmds.intField(v=5, min=3) self.fieldGrp = [ self.neckField, self.bodyField, self.armLUField, self.armLLField, self.armRUField, self.armRLField, self.legLUField, self.legLLField, self.legRUField, self.legRLField ] self.headFollow = cmds.frameLayout(l='Head Follow', w=100) cmds.checkBox(l='Neck', v=1, onc=partial(self.followAttrVis, ['Head_CTL'], 'neckFollow', True), ofc=partial(self.followAttrVis, ['Head_CTL'], 'neckFollow', False)) cmds.checkBox(l='Chest', v=1, onc=partial(self.followAttrVis, ['Head_CTL'], 'chestFollow', True), ofc=partial(self.followAttrVis, ['Head_CTL'], 'chestFollow', False)) cmds.checkBox(l='Root', onc=partial(self.followAttrVis, ['Head_CTL'], 'rootFollow', True), ofc=partial(self.followAttrVis, ['Head_CTL'], 'rootFollow', False)) cmds.checkBox(l='Move', onc=partial(self.followAttrVis, ['Head_CTL'], 'moveFollow', True), ofc=partial(self.followAttrVis, ['Head_CTL'], 'moveFollow', False)) cmds.setParent('..') self.collarFollow = cmds.frameLayout(l='Collar Follow', w=100) cmds.checkBox(l='Chest', onc=partial(self.followAttrVis, ['Collar_L_CTL', 'Collar_R_CTL'], 'chestFollow', True), ofc=partial(self.followAttrVis, ['Collar_L_CTL', 'Collar_R_CTL'], 'chestFollow', False)) cmds.checkBox(l='Root', onc=partial(self.followAttrVis, ['Collar_L_CTL', 'Collar_R_CTL'], 'rootFollow', True), ofc=partial(self.followAttrVis, ['Collar_L_CTL', 'Collar_R_CTL'], 'rootFollow', False)) cmds.checkBox(l='Move', onc=partial(self.followAttrVis, ['Collar_L_CTL', 'Collar_R_CTL'], 'moveFollow', True), ofc=partial(self.followAttrVis, ['Collar_L_CTL', 'Collar_R_CTL'], 'moveFollow', False)) cmds.setParent('..') self.armFollow = cmds.frameLayout(l='Arm Follow', w=100) cmds.checkBox(l='Collar', onc=partial(self.followAttrVis, ['Arm_L_Switch_CTL', 'Arm_R_Switch_CTL'], 'collarFollow', True), ofc=partial(self.followAttrVis, ['Arm_L_Switch_CTL', 'Arm_R_Switch_CTL'], 'collarFollow', False)) cmds.checkBox(l='Head', onc=partial(self.followAttrVis, ['Arm_L_Switch_CTL', 'Arm_R_Switch_CTL'], 'headFollow', True), ofc=partial(self.followAttrVis, ['Arm_L_Switch_CTL', 'Arm_R_Switch_CTL'], 'headFollow', False)) cmds.checkBox(l='Chest', v=1, onc=partial(self.followAttrVis, ['Arm_L_Switch_CTL', 'Arm_R_Switch_CTL'], 'chestFollow', True), ofc=partial(self.followAttrVis, ['Arm_L_Switch_CTL', 'Arm_R_Switch_CTL'], 'chestFollow', False)) cmds.checkBox(l='Hip', onc=partial(self.followAttrVis, ['Arm_L_Switch_CTL', 'Arm_R_Switch_CTL'], 'hipFollow', True), ofc=partial(self.followAttrVis, ['Arm_L_Switch_CTL', 'Arm_R_Switch_CTL'], 'hipFollow', False)) cmds.checkBox(l='Root', v=1, onc=partial(self.followAttrVis, ['Arm_L_Switch_CTL', 'Arm_R_Switch_CTL'], 'rootFollow', True), ofc=partial(self.followAttrVis, ['Arm_L_Switch_CTL', 'Arm_R_Switch_CTL'], 'rootFollow', False)) cmds.checkBox(l='Move', onc=partial(self.followAttrVis, ['Arm_L_Switch_CTL', 'Arm_R_Switch_CTL'], 'moveFollow', True), ofc=partial(self.followAttrVis, ['Arm_L_Switch_CTL', 'Arm_R_Switch_CTL'], 'moveFollow', False)) cmds.setParent('..') self.legFollow = cmds.frameLayout(l='Leg Follow', w=100) cmds.checkBox(l='Hip', onc=partial(self.followAttrVis, ['Leg_L_Switch_CTL', 'Leg_R_Switch_CTL'], 'hipFollow', True), ofc=partial(self.followAttrVis, ['Leg_L_Switch_CTL', 'Leg_R_Switch_CTL'], 'hipFollow', False)) cmds.checkBox(l='Root', v=1, onc=partial(self.followAttrVis, ['Leg_L_Switch_CTL', 'Leg_R_Switch_CTL'], 'rootFollow', True), ofc=partial(self.followAttrVis, ['Leg_L_Switch_CTL', 'Leg_R_Switch_CTL'], 'rootFollow', False)) cmds.checkBox(l='Move', onc=partial(self.followAttrVis, ['Leg_L_Switch_CTL', 'Leg_R_Switch_CTL'], 'moveFollow', True), ofc=partial(self.followAttrVis, ['Leg_L_Switch_CTL', 'Leg_R_Switch_CTL'], 'moveFollow', False)) cmds.setParent('..') dfFollowButton = cmds.button(l='Default Follow', w=100, h=30, c=self.defaultFollow) self.setButton = cmds.button(l='SET', c=self.setCmd, w=60, h=30, bgc=[.308 - .1, .312 - .1, .292 - .1]) self.backButton = cmds.button(l='BACK', c=self.backCmd, vis=0, w=60, h=30, bgc=[.308 - .1, .312 - .1, .292 - .1]) empty = cmds.text(l='') #mirrorLButton = cmds.button( l='>>', w=30, h=80 ) #mirrorRButton = cmds.button( l='<<', w=30, h=80 ) cmds.frameLayout(self.collarFollow, q=1, ca=1) cmds.formLayout(form, e=1, attachForm=[(self.neckField, 'top', 80), (self.neckField, 'left', 130), (self.bodyField, 'top', 195), (self.bodyField, 'left', 150), (self.armLUField, 'top', 170), (self.armLUField, 'left', 200), (self.armLLField, 'top', 235), (self.armLLField, 'left', 215), (self.armRUField, 'top', 170), (self.armRUField, 'left', 65), (self.armRLField, 'top', 235), (self.armRLField, 'left', 50), (self.legLUField, 'top', 350), (self.legLUField, 'left', 175), (self.legLLField, 'top', 465), (self.legLLField, 'left', 165), (self.legRUField, 'top', 350), (self.legRUField, 'left', 105), (self.legRLField, 'top', 470), (self.legRLField, 'left', 85), (self.headFollow, 'top', 15), (self.headFollow, 'left', 320), (self.collarFollow, 'top', 150), (self.collarFollow, 'left', 320), (self.armFollow, 'top', 265), (self.armFollow, 'left', 320), (self.legFollow, 'top', 440), (self.legFollow, 'left', 320), (dfFollowButton, 'top', 560), (dfFollowButton, 'left', 320), (self.setButton, 'top', 560), (self.setButton, 'left', 250), (self.backButton, 'top', 560), (self.backButton, 'left', 250), (empty, 'top', 0)]) cmds.window(win, e=1, wh=[313, 595], s=0) try: from BorderlessFrame import BorderlessFrame, toQtObject dlg = toQtObject(win) self._win = BorderlessFrame() self._win.setContent(dlg) self._win.setTitle('Locus Human Rig') self._win.show() self._win.move(214, 223) except: cmds.showWindow(win) self.win = win self.followMenuVisSet() self.scriptJobSetting()
def __init__(self): if mc.windowPref('infoAiAssWind', query=True, exists=True): mc.windowPref('infoAiAssWind', remove=True ) if mc.window('infoAiAssWind', query=True, exists=True): mc.deleteUI('infoAiAssWind', window=True) aif = AiFuncClass() windbgc=0.2,0.2,0.2 #color of the background of the window self.windInfo = mc.window('infoAiAssWind', title="Info", widthHeight=(315, 200), backgroundColor=windbgc, tlc=[250,450],te=25,s=True,mnb=False,mxb=False,i=False) mc.rowColumnLayout("rclInfoGlobal", adj=True) mc.iconTextButton(st='textOnly',label= " ", h = 2, backgroundColor=bgcgreenM ) mc.separator( h=15, style='none' ) mc.text(l='<font color=#00f58a><h3>This tool was made by LiamCollod<h3></font>',h=15) mc.text(l='<font <h5>mail pro: <i>[email protected]<i><h5></font>',h=35) mc.rowColumnLayout("rclInfoSep", nc=3) mc.separator( w=10, style='none' ) mc.iconTextButton(st='iconOnly',bgc=bgcwhite,w=3) mc.rowColumnLayout("rclInfo2ndCol", nc=1,cal=[1,'left']) mc.text(label=' > A StandIn will be exported for each selection',fn='smallBoldLabelFont',h=16) mc.text(label=" > Remove this value from mask to remove corresponding",fn='smallBoldLabelFont',h=16) mc.text(label=' Options=1 ; Camera=2 ; Light=4 ; Shape=8 ; Shader=16',fn='smallBoldLabelFont',h=16) mc.setParent('..') mc.setParent('..') mc.separator( h=5, style='none' ) mc.rowColumnLayout("rclInfoSep2", nc=3) mc.separator( w=10, style='none' ) mc.iconTextButton(st='iconOnly',bgc=bgcwhite,w=3) mc.rowColumnLayout("rclInfo2ndCol2", adj=True) stItbLink="iconAndTextHorizontal" imgItbLink=":/out_genericConstraint.png" mc.iconTextButton(st=stItbLink,label='GUMROAD LINK',fn='smallBoldLabelFont',i=imgItbLink,c=func.partial(aif.hyperLink,0)) mc.iconTextButton(st=stItbLink,label='TWITTER LINK',fn='smallBoldLabelFont',i=imgItbLink,c=func.partial(aif.hyperLink,1)) mc.iconTextButton(st=stItbLink,label='ARTSTATION LINK',fn='smallBoldLabelFont',i=imgItbLink,c=func.partial(aif.hyperLink,2)) mc.setParent('..') mc.setParent('..') mc.text(l='<font <h5>You find a bug ? Submit it to <i>[email protected]<i><h5></font>',h=35) mc.iconTextButton(st='textOnly',label= " ", h = 2, backgroundColor=bgcwhite ) mc.setParent('..')
def FKLayout(fkList, colLayout): cmds.rowLayout(numberOfColumns=1, parent=colLayout, height=35) cmds.text("FK temperory controls:") cmds.setParent("..") for tempCtrl in fkList: chooseButtonWrapper(colLayout, tempCtrl, tempCtrl)
def build_gui_make_stretchy_legs(): window_name = "build_gui_make_stretchy_legs" if cmds.window(window_name, exists=True): cmds.deleteUI(window_name) # Main GUI Start Here ================================================================================= # Build UI build_gui_make_stretchy_legs = 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]) column_main = cmds.columnLayout() form = cmds.formLayout(p=column_main) content_main = cmds.columnLayout(adj=True) # Title Text cmds.separator(h=10, style='none') # Empty Space cmds.rowColumnLayout(nc=1, cw=[(1, 270)], cs=[(1, 10)], p=content_main) # Window Size Adjustment cmds.rowColumnLayout(nc=3, cw=[(1, 10), (2, 200), (3, 50)], cs=[(1, 10), (2, 0), (3, 0)], p=content_main) # Title Column cmds.text(" ", bgc=[0, .5, 0]) # Tiny Empty Green Space cmds.text(script_name + " v" + script_version, bgc=[0, .5, 0], fn="boldLabelFont", align="left") cmds.button(l="Help", bgc=(0, .5, 0), c=lambda x: build_gui_help_make_stretchy_legs()) cmds.separator(h=5, style='none') # Empty Space # Body ==================== body_column = cmds.rowColumnLayout(nc=1, cw=[(1, 260)], cs=[(1, 10)], p=content_main) cmds.text(l='This script creates a simple stretchy leg setup.', align="center") cmds.text(l='Select your ikHandle and click on "Make Stretchy', align="center") cmds.separator(h=15, style='none') # Empty Space cmds.text(l='Important:', align="center", fn="boldLabelFont") cmds.text(l='It assumes that you have a curve driving your', align="center") cmds.text(l='ikHandle as a control.', align="center") cmds.separator(h=7, style='none') # Empty Space cmds.separator(h=5) cmds.separator(h=7, style='none') # Empty Space cmds.button(l="Make Stretchy", bgc=(.6, .8, .6), c=lambda x: make_stretchy_legs()) cmds.separator(h=10, style='none') # Empty Space # Show and Lock Window cmds.showWindow(build_gui_make_stretchy_legs) cmds.window(window_name, e=True, s=False) # Set Window Icon qw = omui.MQtUtil.findWindow(window_name) widget = wrapInstance(long(qw), QWidget) icon = QIcon(':/ikSCsolver.svg') widget.setWindowIcon(icon)
def showUI(self): if (cmds.window('massRefRlps_window', ex=True)): cmds.deleteUI('massRefRlps_window') print( '=========================== START UP ===========================') allRef = [] self.myWindow = cmds.window('massRefRlps_window', w=350, title=self._toolName_) cmds.columnLayout(adj=True, rs=10) #---------------------------------------- cmds.rowLayout(adj=True, nc=3, columnAlign=[(1, 'left'), (2, 'right')]) cmds.text(l=self._toolName_, fn='boldLabelFont') cmds.iconTextButton('iconTextButton_refresh', style='iconAndTextHorizontal', image1='refresh.xpm', label='Refresh', c=self.refreshIcon_onclick) #cmds.text( l = 'Refresh', fn='boldLabelFont' ) cmds.setParent('..') #---------------------------------------- cmds.columnLayout(adj=True) cmds.text(l='All Reference node : ', align='left') cmds.separator() #============== center ============= myTextScrollList = cmds.textScrollList( 'textScrollList_allLists', numberOfRows=20, allowMultiSelection=True, append=allRef, sc=self.textScrollList_allLists_onSelect) cmds.columnLayout(adj=True) cmds.setParent('..') cmds.setParent('..') #---------------------------------------- cmds.rowLayout(adj=True, nc=3, columnAlign=[1, 'left']) cmds.text(l='') cmds.button(l='From selection', c=self.select_fromSelection) cmds.button(l='Clear all selected', c=self.clear_allSelection) cmds.setParent('..') cmds.rowLayout(adj=True, nc=3, columnAlign=[2, 'left']) cmds.textFieldGrp('textFieldGrp_RefPath', label='new Reference path : ', text='path:/...') cmds.button('button_GetRefPath', l='...', c=self.buttonGetRefPath_OnClick) cmds.setParent('..') #---------------------------------------- cmds.columnLayout(adj=True, rs=10) #cmds.checkBox('checkBox_Transfrom',l='Replace transform',en=False,v=False) #cmds.button('button_SelectFromeList', l='Get name from selection', h=45, en=True, c=self.button_SelectFromeList_onClick) cmds.button('massRefRlps_submit', l='replace', c=self.massRefRlps_submit_onClick, h=50, bgc=(0.5, 1, 0)) cmds.setParent('..') #---------------------------------------- cmds.rowLayout(adj=True, nc=2) cmds.text(l='version : ' + self._appVersion_) cmds.button(l='Close', en=True, c='cmds.deleteUI(\'massRefRlps_window\')', w=100) cmds.setParent('..') #---------------------------------------- cmds.setParent('..') cmds.showWindow('massRefRlps_window') print('DEBUG : massRefRlps_UI|showUI : Main window created.') self.refreshIcon_onclick() jobNum = cmds.scriptJob( ct=["SomethingSelected", self.run_scriptJob_selectSomthing], p=self.myWindow)
def buildWindow(self): self.window = cmds.window(title="Submit to Farm", iconName='Render', widthHeight=(387, 450)) cmds.columnLayout(rowSpacing=20, columnOffset=['both', 20]) cmds.setParent("..") cmds.rowColumnLayout(numberOfColumns=2, columnAttach=(1, 'right', 0), columnWidth=[(1, 100), (2, 250)]) # render globals cmds.text(label='Job Name') self.ui.jobname = cmds.textField() cmds.text(label='Render Name') self.ui.rendername = cmds.textField() cmds.text(label='Frame Range') self.ui.framerange = cmds.textField() cmds.text(label='Chunk Size') self.ui.chunksize = cmds.intSliderGrp(field=True, maxValue=100, step=15, fieldStep=15, sliderStep=15) cmds.text(label='Threads') self.ui.threads = cmds.intSliderGrp(field=True, minValue=1, maxValue=16, fieldStep=2, value=8) cmds.text(label='') self.ui.globals = cmds.button(label='Open Render Settings') # select the layers to render cmds.text(label='Render Layers') self.ui.renderlayers = cmds.textScrollList(numberOfRows=8, allowMultiSelection=True, append=['default'], selectItem='default', showIndexedItem=1) cmds.text(label='') self.ui.refresh = cmds.button(label='refresh') # general options for the render manager cmds.text(label='Options') self.ui.options = cmds.checkBoxGrp( numberOfCheckBoxes=2, labelArray2=['Check Outputs', 'Generate Quicktime']) cmds.text(label='Process') self.ui.process = cmds.radioButtonGrp( labelArray4=['Light', 'Medium', 'Heavy', 'Sumo'], select=2, numberOfRadioButtons=4, columnWidth4=[60, 60, 60, 60]) cmds.setParent("..") # render button cmds.columnLayout(columnOffset=['both', 20]) self.ui.render = cmds.button(label='Render', width=330, height=50)
def __init__(self): ####UI STYLE##### bgcwind=[0.2,0.2,0.2] opTxt = "-shadowLinks 1; -mask 6399; -lightLinks 1; -boundingBox; -fullPath" aif = AiFuncClass() self.windowv = mc.window('%s' %WINDN, title=" ", widthHeight=(320, 130), backgroundColor=bgcwind, nde=True, ds=True, le=650,tbm=False,s=True) mc.rowColumnLayout("uiTopRowGlobal", adj=True) mc.rowColumnLayout("uiTopRowName", nr=1,adj=True,cat=[1,"left",1]) mc.rowColumnLayout( nr=1) mc.iconTextButton(st='iconOnly', h = 25,w=25,image=":/ExportStandinShelf.png") mc.text(label=' Arnold StandIn Utility '+VERSION, h = 20,w = 285, bgc=[0.2, 0.2, 0.2], al='left', fn='tinyBoldLabelFont' , rs=False) mc.setParent('..') mc.iconTextButton(st='iconOnly', h = 25,w=25,image=":/info.png",c=aif.infoWind) mc.iconTextButton(st='iconOnly',label= " ", h = 15,w=25 ,command=aif.closeWind ,image=":/closeTabButton.png" ) mc.setParent('..') mc.separator( height=4, style='none' ) mc.iconTextButton(st='textOnly',label= " ", h = 2,w=150 , backgroundColor=bgcai ) mc.setParent('..') mc.rowColumnLayout("rclytUiFuncGlobal", adj=True) mc.rowLayout("rowlytField",nc=2,cl2=["left","center"],ct2=["left","left"],co2=[1,0],ad2=True) mc.iconTextButton('itbFolder',st='iconOnly', h = 25,w=25 ,command=aif.fileDialog, backgroundColor=(bgcgrey),image=":/folder-open.png",ebg=True ) mc.textField("textFieldFile", ann="export path",sbm="export path" , font = "obliqueLabelFont", h= 20,w= 350,bgc=(bgcgreyd),tx=aif.projectPath) mc.setParent( '..' ) mc.separator(style='none',h=10) '''Export options''' mc.rowColumnLayout('rclExOp',nr=1,ral=[1,'center'],bgc=bgcai,adj=True) mc.separator(style='none',w=3) mc.iconTextButton('itbHelp',st='iconOnly', h = 25,w=25 ,command=func.partial(aif.hyperLink,3),image=":/help.png") mc.text(l='<font style="color:rgb(50,50,50)">ExportOptions:</font>',fn= "smallBoldLabelFont") mc.separator(style='none',w=3) mc.textField("textFieldOptions", ann="export ass options" , h= 20,w=280,bgc=bgcgreyl,tx=opTxt,p='rclExOp') mc.iconTextButton('itbFolder',st='iconOnly',l="r",ann="Reset field", h = 20,w=15 ,command=aif.resetField,bgc=bgcgreyd,image=":/cycle.png",mh=6) mc.setParent( '..' ) '''OPTIONS PART''' mc.separator(style='none',h=10) mc.rowColumnLayout("rclOpGlobal", nc=3) chkS = 15 txtOp = ['Cameras','Lights','Shapes','Shaders'] mc.rowColumnLayout("rcl1", nc=4,rs=[1,5]) mc.columnLayout(bgc=bgcgreyl) mc.columnLayout(bgc=bgcgreyl) mc.iconTextButton('itbChkEsf',l='Off',st='iconOnly',bgc=bgcgreyd,w=chkS,h=chkS,mh=0,c=aif.chkChange_esf) mc.setParent('..') mc.setParent('..') mc.separator( w=4, style='none' ) mc.iconTextButton(st='textOnly',l='Export selection as a single file',h=chkS,fn="smallBoldLabelFont") mc.separator( w=8, style='none' ) # # mc.iconTextButton(st='iconOnly',bgc=bgcgreenM,w=chkS,h=chkS,mh=0) # mc.separator( w=4, style='none' ) # mc.iconTextButton(st='textOnly',l=txtOp[2],h=chkS) # mc.separator( w=8, style='none' ) mc.setParent('..') mc.rowColumnLayout("rclFielName", nc=4,rs=[1,5],en=False) mc.iconTextButton(st='textOnly',bgc=bgcwhite,w=2,h=20) mc.separator( w=15, style='none' ) mc.text(l='Name:') mc.textField("textFieldName", ann="Name of the single exported file" , h= 20,w=150,bgc=bgcgreyl,tx="asset_msh") mc.setParent('..') # # mc.rowColumnLayout("rcl2", nc=4,rs=[1,5]) # mc.iconTextButton(st='iconOnly',bgc=bgcgreenM,w=chkS,h=chkS,mh=0) # mc.separator( w=4, style='none' ) # mc.iconTextButton(st='textOnly',l=txtOp[1],h=chkS) # mc.separator( w=8, style='none' ) # # mc.iconTextButton(st='iconOnly',bgc=bgcgreenM,w=chkS,h=chkS,mh=0) # mc.separator( w=4, style='none' ) # mc.iconTextButton(st='textOnly',l=txtOp[3],h=chkS) # mc.separator( w=8, style='none' ) # mc.setParent('..') # mc.setParent('..') '''END''' mc.separator(style='none',h=10) mc.columnLayout("cLytBtn1",adj=True) mc.iconTextButton(label="",style="textOnly",bgc=bgcgreyl,h=4) mc.iconTextButton(label="EXPORT to Path",style="textOnly",bgc=bgcgreyd,command=aif.export_ass,fn="smallBoldLabelFont") mc.separator(style='none',h=5) mc.iconTextButton(label="",style="textOnly",bgc=bgcgreyl,h=4) mc.iconTextButton(label="CREATE from Path",style="textOnly",bgc=bgcgreyd,command=aif.import_ass,fn="smallBoldLabelFont") mc.setParent('..') mc.setParent( '..' )#rclUiFuncGlobal
def createCustom(self, *args): ''' # # # # # ''' # selection type mc.rowColumnLayout(nc=2, cw=[(1, 500), (2, 500)], cs=[1, 5], rs=[1, 3]) mc.text(l="Select The Neck Root: ") mc.text(l="") mc.setParent("..") mc.separator(st="in", h=17, w=500) mc.checkBox("selSpineEnd_cb", l="Connect To Spine", en=True, v=True) mc.separator(st="in", h=17, w=500) # sources mc.rowColumnLayout(nc=2, cw=[(1, 100), (2, 380)], cs=[1, 5], rs=[1, 3]) mc.text(bgc=(0.85, 0.65, 0.25), l="Neck Start Joint: ") mc.textFieldButtonGrp("jointLoad_tfbg", cw=(1, 322), bl=" Load ") mc.text(bgc=(0.85, 0.65, 0.25), l="IK Chest CTRL: ") mc.textFieldButtonGrp("ctrlIKChestLoad_tf", cw=(1, 322), bl=" Load ", tx="CTRL_IK_chest") mc.text(bgc=(0.85, 0.65, 0.25), l="Spine Rig GRP: ") mc.textFieldButtonGrp("grpJNTSpine_tfbg", cw=(1, 322), bl=" Load ", tx="GRP_JNT_spine") mc.text(bgc=(0.85, 0.65, 0.25), l="COG: ") mc.textFieldButtonGrp("cog_tfbg", cw=(1, 322), bl=" Load ", tx="CTRL_COG") mc.separator(st="in", h=17, w=500) mc.setParent("..") mc.rowColumnLayout(nc=2, cw=[(1, 100), (2, 380)], cs=[1, 5], rs=[1, 3]) mc.checkBox("selGeo_cb", l="Affect Geometry", en=True, v=True) mc.setParent("..") # Attributes # load buttons mc.textFieldButtonGrp("jointLoad_tfbg", e=True, bc=self.loadSrc1Btn) mc.textFieldButtonGrp("ctrlIKChestLoad_tf", e=True, bc=self.loadSrc2Btn) mc.textFieldButtonGrp("grpJNTSpine_tfbg", e=True, bc=self.loadSrc3Btn) mc.textFieldButtonGrp("cog_tfbg", e=True, bc=self.loadSrc4Btn) mc.showWindow(self.window)
def build_gui_help_make_stretchy_legs(): window_name = "build_gui_help_make_stretchy_legs" if cmds.window(window_name, exists=True): cmds.deleteUI(window_name, window=True) cmds.window(window_name, title=script_name + " Help", mnb=False, mxb=False, s=True) cmds.window(window_name, e=True, s=True, wh=[1, 1]) cmds.columnLayout("main_column", p=window_name) # Title Text cmds.separator(h=12, style='none') # Empty Space cmds.rowColumnLayout(nc=1, cw=[(1, 310)], cs=[(1, 10)], p="main_column") # Window Size Adjustment cmds.rowColumnLayout(nc=1, cw=[(1, 300)], cs=[(1, 10)], p="main_column") # Title Column cmds.text(script_name + " Help", bgc=[0, .5, 0], fn="boldLabelFont", align="center") cmds.separator(h=10, style='none', p="main_column") # Empty Space # Body ==================== cmds.rowColumnLayout(nc=1, cw=[(1, 300)], cs=[(1, 10)], p="main_column") cmds.text(l='This script creates a simple stretchy leg setup.', align="center") cmds.text(l='Select your ikHandle and click on "Make Stretchy', align="center") cmds.separator(h=15, style='none') # Empty Space cmds.text(l='Important:', align="center", fn="boldLabelFont") cmds.text(l='It assumes that you have a curve driving your', align="center") cmds.text(l='ikHandle as a control.', align="center") cmds.separator(h=15, style='none') # Empty Space cmds.rowColumnLayout(nc=2, cw=[(1, 140), (2, 140)], cs=[(1, 10), (2, 0)], p="main_column") cmds.text('Guilherme Trevisan ') cmds.text( l='<a href="mailto:[email protected]">[email protected]</a>', hl=True, highlightColor=[1, 1, 1]) cmds.rowColumnLayout(nc=2, cw=[(1, 140), (2, 140)], cs=[(1, 10), (2, 0)], p="main_column") cmds.separator(h=15, style='none') # Empty Space cmds.text(l='<a href="https://github.com/TrevisanGMW">Github</a>', hl=True, highlightColor=[1, 1, 1]) cmds.separator(h=7, style='none') # Empty Space # Close Button cmds.rowColumnLayout(nc=1, cw=[(1, 300)], cs=[(1, 10)], p="main_column") cmds.separator(h=10, style='none') cmds.button(l='OK', h=30, c=lambda args: close_help_gui()) cmds.separator(h=8, style='none') # Show and Lock Window cmds.showWindow(window_name) cmds.window(window_name, e=True, s=False) # Set Window Icon qw = omui.MQtUtil.findWindow(window_name) widget = wrapInstance(long(qw), QWidget) icon = QIcon(':/question.png') widget.setWindowIcon(icon) def close_help_gui(): if cmds.window(window_name, exists=True): cmds.deleteUI(window_name, window=True)
def create_UI(self): # creates the ui for the ref object self.mainFLO = cmds.formLayout(bgc=(.2, .2, .2), w=500, h=40, p=widgets["refCLO"]) if self.status == "pending": cmds.formLayout(self.mainFLO, e=True, bgc=(.7, .7, .7)) self.stateBut = cmds.button(l="", w=20, h=26, p=self.mainFLO, en=False, bgc=(.5, .5, .5)) if self.status != "current": cmds.button(self.stateBut, e=True, bgc=(0, 0, 0)) self.nsTxt = cmds.text(self.namespace, p=self.mainFLO) cmds.popupMenu(p=self.nsTxt) cmds.menuItem(l=self.ref) self.variantOM = cmds.optionMenu(p=self.mainFLO, w=125, cc=self.change_variant) if self.compatible: # initialize variant list self.pathParse.get_variants_list() self.variants = self.pathParse.variantList for v in self.variants: cmds.menuItem(label=v) self.verOM = cmds.optionMenu(l="V:", p=self.mainFLO, w=75, bgc=(.5, .9, .5), changeCommand=self.change_number) if self.compatible: self.get_versions_list() for a in self.versionNums: cmds.menuItem(label=a) cmds.optionMenu(self.verOM, e=True, value=self.versionNum) else: cmds.optionMenu(self.verOM, e=True, bgc=(.5, .5, .5)) # set up the variant list # if self.compatible: # self.change_variant() self.loadBut = cmds.button(l="L", w=20, h=26, en=False, bgc=(.5, .9, .5), c=self.unload_toggle) if not self.loadState: cmds.button(self.loadBut, e=True, bgc=(.9, .5, .5)) if self.status == "current": cmds.button(self.loadBut, e=True, en=True) self.killBut = cmds.button(l="X", w=20, h=26, bgc=(.2, .2, .2), c=self.kill_toggle) # if it's not in the pipeline kill some options if not self.compatible: cmds.formLayout(self.mainFLO, e=True, bgc=(.4, .2, .2)) cmds.optionMenu(self.verOM, e=True, en=False) cmds.formLayout(self.mainFLO, e=True, af=[ (self.stateBut, "top", 8), (self.stateBut, "left", 2), (self.nsTxt, "top", 12), (self.nsTxt, "left", 40), (self.verOM, "top", 12), (self.verOM, "left", 350), (self.variantOM, "top", 12), (self.variantOM, "left", 200), (self.loadBut, "top", 8), (self.loadBut, "left", 440), (self.killBut, "top", 8), (self.killBut, "left", 470), ])
def core(self): uiInfo.addFrameLayout(self._uiName, self._label) uiInfo.setSpace(4) cmds.rowColumnLayout(nc=3, cw=[(1, 10), (2, self._width - 20), (3, 10)]) uiInfo.setSpace() cmds.button("Create Yeti", h=25, c=partial(self.createYetiCmd, self._basePointer)) uiInfo.setSpace() cmds.setParent('..') uiInfo.separator(self._width, 1) textScrollArea = (self._width - 20) / 2 textScrollArea2 = self._width - 20 - textScrollArea cmds.rowColumnLayout(nc=4, cw=[(1, 10), (2, textScrollArea), (3, textScrollArea2), (4, 10)]) uiInfo.setSpace() cmds.text(l='Set', h=25) cmds.text(l='Guide Set', h=25) uiInfo.setSpace() uiInfo.setSpace() self._set = cmds.textScrollList(h=100, ams=1, sc=partial(self.selectOnSetCmd)) self._guideSet = cmds.textScrollList(h=100, ams=1, sc=partial( self.selectOnGuideSetCmd)) uiInfo.setSpace() uiInfo.setSpace() cmds.button(l='Move to >>', c=partial(self.moveToRCmd, self._basePointer)) cmds.button(l='<< Move to', c=partial(self.moveToLCmd, self._basePointer)) uiInfo.setSpace() cmds.setParent('..') cmds.rowColumnLayout(nc=3, cw=[(1, 10), (2, self._width - 20), (3, 10)]) uiInfo.setSpace() cmds.button(l='Add', h=25, c=partial(self.addCmd, self._winPointer, self._basePointer)) uiInfo.setSpace() uiInfo.setSpace() cmds.button(l='Reset', h=25, c=partial(self.resetCmd, self._winPointer, self._basePointer)) uiInfo.setSpace() uiInfo.setSpace() cmds.button(l='Remove', h=25, c=partial(self.removeCmd)) uiInfo.setSpace() cmds.setParent('..') uiInfo.separator(self._width) iconArea = 25 fieldArea = (self._width) * .5 textArea = self._width - fieldArea - iconArea - 10 cmds.rowColumnLayout(nc=3, cw=[(1, textArea), (2, fieldArea), (3, iconArea)]) cmds.text(l='Groom File Name : ') self._filePath = cmds.textField(h=22, tx=self._defaultFilePath) cmds.iconTextButton(image=uiModel.iconPath + "/folder.png", c=partial(self.loadFilePathCmd)) cmds.setParent('..') cmds.rowColumnLayout(nc=3, cw=[(1, 10), (2, self._width - 20), (3, 10)]) uiInfo.setSpace() cmds.button("Import Groom", h=25, c=partial(self.importGroomCmd, self._basePointer)) uiInfo.setSpace() uiInfo.setSpace() cmds.button("Open Graph Editor", h=25, c=partial(self.openGraphEditorCmd, self._basePointer)) uiInfo.setSpace() cmds.setParent('..') uiInfo.setSpace(10) uiInfo.getOutFrameLayout()
def create_window(): if not cmds.optionVar(q='playblastFFmpeg_ffmpegLoc'): cmds.optionVar(sv=('playblastFFmpeg_ffmpegLoc', '')) if not cmds.optionVar(q='playblastFFmpeg_outputLoc'): cmds.optionVar(sv=('playblastFFmpeg_outputLoc', '/movies/playblast.mov')) if not cmds.optionVar(q='playblastFFmpeg_resolutionx'): cmds.optionVar(sv=('playblastFFmpeg_resolutionx', 1920)) if not cmds.optionVar(q='playblastFFmpeg_resolutiony'): cmds.optionVar(sv=('playblastFFmpeg_resolutiony', 1080)) if not cmds.optionVar(q='playblastFFmpeg_inframe'): cmds.optionVar(sv=('playblastFFmpeg_inframe', 0)) if not cmds.optionVar(q='playblastFFmpeg_outframe'): cmds.optionVar(sv=('playblastFFmpeg_outframe', 100)) winID = 'playblastFFmpeg' if cmds.window(winID, exists=True): cmds.deleteUI(winID) cmds.window(winID, title='Playblast FFmpeg') def save_settings(*args): if cmds.textFieldButtonGrp('ffmpegLoc', q=True, text=True): cmds.optionVar(sv=('playblastFFmpeg_ffmpegLoc', cmds.textFieldButtonGrp('ffmpegLoc', q=True, text=True))) if cmds.textFieldButtonGrp(outputLocationText, q=True, text=True): cmds.optionVar(sv=('playblastFFmpeg_outputLoc', cmds.textFieldButtonGrp('VideoOutputLoc', q=True, text=True))) cmds.optionVar(sv=('playblastFFmpeg_resolutionx', cmds.textField(set_resolutionx, q=True, text=True))) cmds.optionVar(sv=('playblastFFmpeg_resolutiony', cmds.textField(set_resolutiony, q=True, text=True))) cmds.optionVar(sv=('playblastFFmpeg_inframe', cmds.textField(set_inframe, q=True, text=True))) cmds.optionVar(sv=('playblastFFmpeg_outframe', cmds.textField(set_outframe, q=True, text=True))) def get_ffmpeg_path(*args): file_path = cmds.fileDialog2(fm=1)[0] cmds.textFieldButtonGrp('ffmpegLoc', e=1, text=file_path) save_settings() # FFMPEG LOCATION cmds.columnLayout(w=300, rs=5) ffmpegLocation = cmds.optionVar(q='playblastFFmpeg_ffmpegLoc') ffmpegLocationText = cmds.textFieldButtonGrp('ffmpegLoc', label='FFmpeg Location', buttonLabel='FFmpeg Location', text=ffmpegLocation, cc=save_settings, bc=get_ffmpeg_path) cmds.setParent('..') # RESOLUTION cmds.columnLayout() cmds.text(label="") cmds.text(label="Video Resolution") resolutionx = cmds.optionVar(q='playblastFFmpeg_resolutionx') set_resolutionx = cmds.textField(text=resolutionx, cc=save_settings) resolutiony = cmds.optionVar(q='playblastFFmpeg_resolutiony') set_resolutiony = cmds.textField(text=resolutiony, cc=save_settings) # IN/OUT # Set the in and out frames for the playblast cmds.columnLayout() cmds.text(label="") cmds.text(label="In and Out Frames") inframe = cmds.optionVar(q="playblastFFmpeg_inframe") set_inframe = cmds.textField(text=inframe, cc=save_settings) outframe = cmds.optionVar(q="playblastFFmpeg_outframe") set_outframe = cmds.textField(text=outframe, cc=save_settings) # VIDEO FORMAT cmds.columnLayout() cmds.text(label="") cmds.text(label="") cmds.optionMenu('selected_video_format', label='Format', cc=printFormatMenuItem) cmds.menuItem('ext', label="use extension") #cmds.menuItem('mov', label="mov") #cmds.menuItem('mp4', label="mp4") #cmds.menuItem('webm', label="Webm") # ENCODE FORMAT # Set the video encode format cmds.columnLayout() cmds.optionMenu('selected_encode_format', label='Encoder', cc=printEncodeMenuItem) cmds.menuItem('libx264', label="(mov/mp4) h.264") cmds.menuItem('libx265', label="(mov/mp4) h.265/HEVC") cmds.menuItem('libvpx-vp9', label="(Webm) AV9") def get_video_output_path(*args): file_path = cmds.fileDialog2()[0] cmds.textFieldButtonGrp('VideoOutputLoc', e=1, text=file_path) save_settings() # OUTPUT LOCATION # Sets output location for playblast file and ffmpeg file cmds.columnLayout() OutputLocation = cmds.optionVar(q='playblastFFmpeg_outputLoc') outputLocationText = cmds.textFieldButtonGrp('VideoOutputLoc', label="Video Output Location", buttonLabel="Set Output Location", text=OutputLocation, cc=save_settings, bc=get_video_output_path) cmds.setParent('..') # EXPORT PLAYBLAST cmds.columnLayout() cmds.button( label="Export Playblast", h=50, c="ffmpeg_playblast(cmds.optionVar(q='playblastFFmpeg_resolutionx'), cmds.optionVar(q='playblastFFmpeg_resolutiony'), cmds.optionVar(q='playblastFFmpeg_inframe'), cmds.optionVar(q='playblastFFmpeg_outframe'), cmds.optionVar(q='playblastFFmpeg_outputLoc'))") cmds.showWindow(winID) selected_video_format = cmds.optionMenu('selected_video_format', q=True, value=True) selected_encode_format = cmds.optionMenu('selected_encode_format', q=True, value=True) selected_output_location = cmds.textFieldButtonGrp('VideoOutputLoc', q=True, text=True) return ffmpegLocation, selected_video_format, selected_output_location
def expTrackerWindow(): if cmds.window('expTrackerWindow', exists=True): cmds.deleteUI('expTrackerWindow') #window def cmds.window('expTrackerWindow', widthHeight=(900, 400), title='expTracker-conelab', minimizeButton=False, maximizeButton=False, resizeToFitChildren=True, sizeable=True) #cmds.rowColumnLayout(numberOfColumns=3,columnWidth=[(1,300),(2,300),(3,300)],backgroundColor=[200,200,0]) #select an existing blendShape node cmds.rowColumnLayout(numberOfColumns=6, columnWidth=[(1, 150), (2, 25), (3, 300), (4, 25), (5, 200), (6, 200)], backgroundColor=[1, 0.9843, 0.7961]) cmds.text(label='Blend Shape node name : ', align='right') cmds.text(label='') selectedBlendShapeTextField = cmds.textField('selectedBlendShapeText', backgroundColor=[1, 1, 1]) cmds.text(label='') cmds.button(label='Load Targets', command='loadTargetList()', width=20, align='left', backgroundColor=[0.3412, 0.8196, 0.7882]) cmds.text(label='') cmds.columnLayout('temp1', width=900) cmds.rowColumnLayout(numberOfColumns=6, columnWidth=[(1, 300), (2, 40), (3, 300), (4, 40), (5, 200), (6, 20)]) cmds.text(label='') cmds.text(label='') cmds.text(label='') cmds.text(label='') cmds.text(label='') cmds.text(label='') targetList = cmds.optionMenu('targetObjectMenu', label='Target: ', backgroundColor=[1, 0.9098, 0.4118]) cmds.menuItem(label=' ') cmds.text(label='') paramList = cmds.optionMenu('paramObjectMenu', label='Link: ', backgroundColor=[1, 0.9098, 0.4118]) cmds.menuItem(label='Please select param') cmds.menuItem(label='Brow Left UP') cmds.menuItem(label='Brow Left Down') cmds.menuItem(label='Brow Right UP') cmds.menuItem(label='Brow Right Down') cmds.menuItem(label='Brow Centering') cmds.menuItem(label='Brow outer left down') cmds.menuItem(label='Brow outer right down') cmds.menuItem(label='Eye Close Left') cmds.menuItem(label='Eye Close Right') cmds.menuItem(label='Mouse Open') cmds.menuItem(label='Mouse Left Smile') cmds.menuItem(label='Mouse Right Smile') cmds.menuItem(label='Mouse Left Spread') cmds.menuItem(label='Mouse Right Spread') cmds.menuItem(label='Mouse Left Frawn') cmds.menuItem(label='Mouse Right Frawn') cmds.menuItem(label='Mouse Left Centering') cmds.menuItem(label='Mouse Right Centering') cmds.menuItem(label='Cheek Left UP') cmds.menuItem(label='Cheek Right UP') cmds.text(label='') cmds.button(label='Add link', command='addlink()', backgroundColor=[0.3412, 0.8196, 0.7882]) cmds.text(label='') cmds.text(label='') cmds.text(label='') cmds.text(label='') cmds.text(label='') cmds.text(label='') cmds.text(label='') cmds.columnLayout('mytable', width=900, backgroundColor=[1, 0.9098, 0.4118]) table = cmds.scriptTable('scrtable', rows=0, columns=6, columnWidth=([1, 300], [2, 300], [3, 145], [4, 145], [5, 1], [6, 1]), label=[(1, "Target"), (2, "Link"), (3, "Receive val"), (4, "Strength"), (5, "ID(Target)"), (6, "ID(Link)")], width=900, cellChangedCmd=edit_cell) cmds.rowColumnLayout(numberOfColumns=3, columnWidth=[(1, 100), (2, 300), (3, 500)]) cmds.text(label='') cmds.text(label='') cmds.button(label='Delete select row', command=delete_sel_row, backgroundColor=[0.3412, 0.8196, 0.7882]) cmds.text(label='') cmds.text(label='') cmds.text(label='') cmds.columnLayout('temp2', width=900) cmds.rowColumnLayout(numberOfColumns=4, columnWidth=[(1, 100), (2, 300), (3, 300), (4, 200)], backgroundColor=[1, 0.9098, 0.4118]) cmds.text(label='') cmds.text(label='Head bone name') Headbonename = cmds.textField('HeadbonenameF') cmds.text(label='') cmds.text(label='') cmds.text(label='Head bone rotation compensation X') HeadbonenameX = cmds.textField('HeadbonenameXF', text='0') cmds.text(label='') cmds.text(label='') cmds.text(label='Head bone rotation compensation Y') HeadbonenameY = cmds.textField('HeadbonenameYF', text='0') cmds.text(label='') cmds.text(label='') cmds.text(label='Head bone rotation compensation Z') HeadbonenameZ = cmds.textField('HeadbonenameZF', text='0') cmds.text(label='') cmds.columnLayout('temp3', width=900) cmds.rowColumnLayout(numberOfColumns=5, columnWidth=[(1, 200), (2, 50), (3, 200), (4, 150), (5, 300)]) cmds.text(label='') cmds.text(label='') cmds.text(label='') cmds.text(label='') cmds.text(label='') cmds.button(label='Save preset', command=savepresetfile, backgroundColor=[0.3412, 0.8196, 0.7882]) cmds.text(label='') cmds.button(label='Load preset', command=loadpresetfile, backgroundColor=[0.3412, 0.8196, 0.7882]) cmds.text(label='') cmds.button('realtimecomm', label='Start Real Time Expression', command=startrealtimeexp, backgroundColor=[0.9294, 0.3294, 0.5216]) cmds.text(label='') cmds.text(label='') cmds.text(label='') cmds.text(label='') cmds.text(label='') cmds.showWindow('expTrackerWindow')
def createUI(self): # Create a formLayout under our parent. It will hold 3 controls, # the rules chain form, the separator, and the handler rule form. # Use 100 divisions as a convenience, so that divisions are # effectively a percentage. self._form = cmds.formLayout(numberOfDivisions=100) # Create a form layout for the rules chain section of the UI. self._chainForm = cmds.formLayout(numberOfDivisions=100) self._scrollList = cmds.textScrollList(allowMultiSelection=False, selectCommand=self.onSelect) self.updateScrollList() # Priority controls. self._priorityText = cmds.text( label=maya.stringTable['y_inputSpaceRulesUI.kPriorityLabel']) self._up = cmds.button( label=maya.stringTable['y_inputSpaceRulesUI.kUpLabel'], width=buttonWidth, command=self.onUp) self._down = cmds.button( label=maya.stringTable['y_inputSpaceRulesUI.kDownLabel'], width=buttonWidth, command=self.onDown) self._add = cmds.button( label=maya.stringTable['y_inputSpaceRulesUI.kAddLabel'], width=buttonWidth, command=self.onAddRule) self._delete = cmds.button( label=maya.stringTable['y_inputSpaceRulesUI.kDeleteLabel'], width=buttonWidth, command=self.onDeleteRule) # Reapply rules. self._reload = cmds.button( label=maya.stringTable['y_inputSpaceRulesUI.kReloadLabel'], command=self.onReapply) cmds.formLayout(self._chainForm, edit=True, attachForm=[(self._priorityText, 'top', vSpc), (self._up, 'left', hSpc), (self._down, 'right', hSpc), (self._add, 'left', hSpc), (self._delete, 'right', hSpc), (self._reload, 'left', hSpc), (self._reload, 'right', hSpc), (self._scrollList, 'left', hSpc), (self._scrollList, 'right', hSpc)], attachControl=[ (self._up, 'top', vSpc, self._priorityText), (self._down, 'top', vSpc, self._priorityText), (self._scrollList, 'top', vSpc, self._up), (self._add, 'top', vSpc, self._scrollList), (self._delete, 'top', vSpc, self._scrollList), (self._reload, 'top', vSpc, self._add) ]) cmds.setParent('..') self._separator = cmds.separator(horizontal=False, style='singleDash') # Give our chained handler rules a form layout of their own, and # populate it with the selected rule. self._handlerForm = cmds.formLayout(numberOfDivisions=100) selectedRule = self._rulesChain[self._selectedPos] selectedRule.createUI() cmds.setParent('..') cmds.formLayout(self._form, edit=True, attachForm=[(self._chainForm, 'top', 0), (self._chainForm, 'bottom', 0), (self._chainForm, 'left', 0), (self._separator, 'top', vSpc), (self._separator, 'bottom', vSpc), (self._handlerForm, 'top', 0), (self._handlerForm, 'bottom', 0), (self._handlerForm, 'right', 0)], attachPosition=[(self._chainForm, 'right', hSpc, 50)], attachControl=[ (self._separator, 'left', hSpc, self._chainForm), (self._handlerForm, 'left', hSpc, self._separator) ]) cmds.setParent('..') # Select the default rule, which is considered by SynColor to be at # position 0. self.selectRule(0)
def buildUI(self): """ Main UI just to confirm very basic info of production :return: """ w = 500 h = 30 # Production name by default prodName = "VoxelPicture" # Check if UI exists if cmds.window(self.winid, q=True, exists=True): cmds.deleteUI(self.winid) # Create UI cmds.window(self.winid, t=self.title, rtf=True, wh=(w, 25 * h)) # Main layout mainLayout = cmds.scrollLayout('main', hst=15, vst=15) # Title self.bts.makeSeparator(h=h / 6, w=w) cmds.text(l=self.label, h=h, w=w, align='center') self.bts.makeSeparator(h=h / 6, w=w) # Content nc = 9 adj1 = 5 w2 = (w - (5 * adj1)) / (nc - 5) cmds.rowColumnLayout(nc=nc, cw=self.bts.cwCustomize(nc, [adj1, w2, adj1, w2, adj1, w2, adj1, w2, adj1])) cmds.text(l="") cmds.text(l='Project Name', align='center') cmds.text(l="") self.prodName = cmds.textField(tx=prodName) cmds.text(l="") cmds.text(l="Abbreviated as", align='center') cmds.text(l="") self.prodShort = cmds.textField(tx='vxp') cmds.text(l="") cmds.setParent(mainLayout) cmds.text(l="") nc = 5 w1 = 100 cmds.rowColumnLayout(nc=nc, cw=self.bts.cwCustomize(nc, [adj1, w1, adj1, w - (3 * adj1 + w1), adj1])) cmds.text(l="") cmds.button(l='Set Path', c=self.setPth) cmds.text(l="") self.setPath = cmds.textField(tx="E:/") cmds.text(l="") cmds.setParent(mainLayout) cmds.text(l="") cmds.text(l="DUE TO THE POSSIBILITY TO USE ONLINE RENDER SERVICE\n" "SETTING PATH TO E DRIVE IS ALWAYS PREFERABLE\n" "IF YOU DO NOT USE THAT KIND OF SERVICE, NEVER MIND", align='center', w=w, h=2 * h, bgc=(0, .5, 1), fn="boldLabelFont") cmds.text(l="") nc = 9 cmds.rowColumnLayout(nc=nc, cw=self.bts.cwCustomize(nc, [adj1, w2, adj1, w2, adj1, w2, adj1, w2, adj1])) cmds.text(l="") cmds.text(l="Project Mode") cmds.text(l="") self.setMode = cmds.optionMenu() cmds.menuItem(l="Group Mode", p=self.setMode) cmds.menuItem(l="Studio Mode", p=self.setMode) cmds.text(l="") cmds.text(l="Sequences") cmds.text(l="") self.numShot = cmds.intField(v=1, min=1) cmds.text(l="") cmds.setParent(mainLayout) cmds.text(l="") nc = 13 w3 = (w - (7 * adj1)) / (nc - 7) cmds.rowColumnLayout(nc=nc, cw=self.bts.cwCustomize(nc, [adj1, w3, adj1, w3, adj1, w3, adj1, w3, adj1, w3, adj1, w3, adj1])) cmds.text(l="") cmds.text(l="Character:") cmds.text(l="") self.numChar = cmds.intField(v=1, min=1, cc=partial(self.charNameColumn, (w - (4 * adj1)) / 3)) cmds.text(l="") cmds.text(l="Environment:") cmds.text(l="") self.numEnv = cmds.intField(v=1, min=1, cc=partial(self.envNameColumn, (w - (4 * adj1)) / 3)) cmds.text(l="") cmds.text(l="Props:") cmds.text(l="") self.numProps = cmds.intField(v=1, min=1, cc=partial(self.propsNameColumn, (w - (4 * adj1)) / 3)) cmds.text(l="") cmds.setParent(mainLayout) cmds.text(l="") nc = 7 w4 = (w - (4 * adj1)) / (nc - 4) cmds.rowColumnLayout(nc=3, cw=[(1, w / 3), (2, w / 3), (3, w / 3)]) cmds.text(l="Characters Name") cmds.text(l="Envs Name") cmds.text(l="Props Name") cmds.setParent(mainLayout) cmds.text(l="") self.editableColumnsLayout = cmds.rowColumnLayout(nc=nc, cw=self.bts.cwCustomize(nc, [adj1, w4, adj1, w4, adj1, w4, adj1])) cmds.text(l="") self.charColumn = cmds.columnLayout(w=w4) self.firstCharColumn = cmds.columnLayout(w=w4) cmds.textField('char1', p=self.firstCharColumn, w=w4 - 10) cmds.setParent(self.editableColumnsLayout) cmds.text(l="") self.envColumn = cmds.columnLayout(w=w4) self.firstEnvColumn = cmds.columnLayout(w=w4) cmds.textField('env1', p=self.firstEnvColumn, w=w4 - 10) cmds.setParent(self.editableColumnsLayout) cmds.text(l="") self.propsColumn = cmds.columnLayout(w=w4) self.firstPropsColumn = cmds.columnLayout(w=w) cmds.textField('props1', p=self.firstPropsColumn, w=w4 - 10) cmds.setParent(self.editableColumnsLayout) cmds.text(l="") cmds.setParent(mainLayout) self.bts.makeSeparator(h=10, w=w) cmds.rowColumnLayout(nc=3, cw=[(1, w / 3), (2, w / 3), (3, w / 3)]) cmds.text(l="") cmds.button(l="CREATE PROJECT", c=self.createProject) cmds.text(l="") cmds.setParent(mainLayout) cmds.text(l="") cmds.showWindow(self.winid)
def __init__(self): if cmds.window('surchingSameName_window',exists=1): cmds.deleteUI('surchingSameName_window',wnd=1) cmds.window('surchingSameName_window', title='Surch Same Name Children',wh=[300,100]) cmds.showWindow('surchingSameName_window') self.topLayout = cmds.formLayout('ssn_top',nd=100) self.row1 = cmds.rowColumnLayout('row1',nc=1,w=170) self.findAll = cmds.button(h=26,l='Surch All',c=self.findAllCmd ); cmds.text(l='',h=5) self.findSelection = cmds.button(h=26, l='Surch Selection',c=self.findSelectionCmd ); cmds.text(l='',h=5) self.appendSelection = cmds.button(h=26, l='Append Selection', c=self.appendSelectionCmd ); cmds.text( l='',h=5) self.checkList = cmds.button(h=26, l='Check Selected Item In List', c=self.checkListCmd ); cmds.text( l='',h=5) self.checkListText = cmds.text( l ='' ,h=25,bgc=[.2,.2,.2]); cmds.text( l='',h=5) self.loadHierarchy = cmds.button(h=26, l='Load Hierarchy', c=self.loadHierCmd ) cmds.setParent(self.topLayout) cmds.scrollLayout('scroll1') cmds.rowColumnLayout( nc=1, w=140) cmds.text( l = ' Top Unique Name:', al = 'left' ,h=25) self.topParent = cmds.text( l ='', al = 'left' ,bgc = [.5,.5,.5] ) cmds.text( l = ' Current Name:' , al='left' ,h=25) self.cuSelection = cmds.text( l='', al = 'left' ,bgc = [.5,.5,.5] ) cmds.setParent(self.topLayout) self.rename = cmds.rowColumnLayout(nc=1,cw=[(1,170)], vis = 1, h = 80) cmds.text( l = ' rename:', al= 'left', h=24) self.rename_tf = cmds.textField( h=24 ) cmds.button(l = 'rename', c=self.renameButtonCmd, h=24) cmds.setParent(self.topLayout) self.textList = cmds.textScrollList('ssnc_scl',ams=1,sc=self.selectedCmd ); self.selectList = []#------리스트에서 선택한 순서대로 self.popup = cmds.popupMenu() # scene에서도 선택하기위한 리스트입니다. self.menuitem = cmds.menuItem( l = ' ', c= self.loadRename ) cmds.formLayout('ssn_top',e=1, af=[('row1','top',5),('row1','left',5),('ssnc_scl','right',5),('ssnc_scl','top',5),('ssnc_scl','bottom',5), ('scroll1','left',5),(self.rename,'left',5),(self.rename,'bottom',5)], ac=[('ssnc_scl','left',5,'row1'), ('scroll1','top',5,'row1'),('scroll1','right',5,'ssnc_scl'), ('scroll1','bottom',5,self.rename),(self.rename,'right',5,'ssnc_scl')] ) cmds.window('surchingSameName_window',e=1,wh=(470, 390))
def dpZipperUI(self, *args): """ Zipper UI layout and elements. """ zipper_winWidth = 380 zipper_winHeight = 300 cmds.window('dpZipperWindow', title=self.zipperName + " " + str(DPZIP_VERSION), widthHeight=(zipper_winWidth, zipper_winHeight), menuBar=False, sizeable=True, minimizeButton=True, maximizeButton=False) cmds.showWindow('dpZipperWindow') # create UI layout and elements: zipperLayout = cmds.columnLayout('zipperLayout', adjustableColumn=True, columnOffset=("left", 10)) cmds.text(label=self.langDic[self.langName]['i191_selectPoly'], align="left", height=30, font='boldLabelFont', parent=zipperLayout) # original model layout: zipperLayoutA = cmds.rowColumnLayout('zipperLayoutA', numberOfColumns=2, columnWidth=[(1, 160), (2, 210)], columnAlign=[(1, 'left'), (2, 'left')], columnAttach=[(1, 'both', 10), (2, 'both', 10)], parent=zipperLayout) self.origModel_BT = cmds.button( 'origModel_BT', label=self.langDic[self.langName]['i187_load'] + " " + self.langDic[self.langName]['m152_originalModel'] + " >>", command=self.dpLoadOrigModel, backgroundColor=(1.0, 0.9, 0.4), parent=zipperLayoutA) self.origModel_TF = cmds.textField('origModel_TF', editable=False, parent=zipperLayoutA) cmds.separator(style='in', height=15, width=100, parent=zipperLayout) # polygon edges to curves layout: cmds.text(label=self.langDic[self.langName]['i188_selectEdges'], align="left", height=30, font='boldLabelFont', parent=zipperLayout) zipperLayoutB = cmds.rowColumnLayout('zipperLayoutB', numberOfColumns=2, columnWidth=[(1, 160), (2, 210)], columnAlign=[(1, 'left'), (2, 'left')], columnAttach=[(1, 'both', 10), (2, 'both', 10)], rowSpacing=(1, 3), parent=zipperLayout) self.first_BT = cmds.button( 'first_BT', label=self.langDic[self.langName]['i187_load'] + " " + self.langDic[self.langName]['c114_first'] + " " + self.langDic[self.langName]['i189_curve'] + " >>", command=partial(self.dpCreateCurveFromEdge, "c114_first"), backgroundColor=(1.0, 0.9, 0.4), parent=zipperLayoutB) self.first_TF = cmds.textField('first_TF', editable=False, parent=zipperLayoutB) self.second_BT = cmds.button( 'second_BT', label=self.langDic[self.langName]['i187_load'] + " " + self.langDic[self.langName]['c115_second'] + " " + self.langDic[self.langName]['i189_curve'] + " >>", command=partial(self.dpCreateCurveFromEdge, "c115_second"), backgroundColor=(1.0, 0.9, 0.4), parent=zipperLayoutB) self.second_TF = cmds.textField('second_TF', editable=False, parent=zipperLayoutB) cmds.separator(style='in', height=15, width=100, parent=zipperLayout) # options layout: cmds.text(label=self.langDic[self.langName]["i002_options"] + ":", height=30, font='boldLabelFont', align='left', parent=zipperLayout) zipperLayoutC = cmds.columnLayout('zipperLayoutC', adjustableColumn=True, columnOffset=("left", 10), rowSpacing=3, parent=zipperLayout) self.curveDirectionRB = cmds.radioButtonGrp( 'curveDirectionRB', label=self.langDic[self.langName]['i189_curve'] + ' ' + self.langDic[self.langName]['i106_direction'], labelArray3=['X', 'Y', 'Z'], columnAlign=[(1, 'left'), (2, 'left')], columnWidth=[(1, 100), (2, 50), (3, 50), (4, 50)], adjustableColumn=4, numberOfRadioButtons=3, select=1, changeCommand=self.dpGetCurveDirection, vertical=False, parent=zipperLayoutC) self.goodToDPAR_CB = cmds.checkBox( "goodToDPAR_CB", label=self.langDic[self.langName]['i190_integrateDPAR'], value=1, align='left', parent=zipperLayoutC) cmds.separator(style='none', height=15, width=100, parent=zipperLayout) createLayout = cmds.columnLayout('createLayout', columnOffset=("left", 10), parent=zipperLayout) cmds.button(label=self.langDic[self.langName]["i158_create"] + " " + self.zipperName, annotation=self.langDic[self.langName]["i158_create"] + " " + self.zipperName, command=self.dpCreateZipper, width=350, backgroundColor=(0.3, 1, 0.7), parent=createLayout)
def __enter__(self): ''' Initialize the UI ''' if mc.window(self.name, exists=True): mc.deleteUI(self.name) mc.window(self.name, title='ml :: '+self.title, iconName=self.title, width=self.width, height=self.height, menuBar=self.menu) if self.menu: self.createMenu() self.form = mc.formLayout() self.column = mc.columnLayout(adj=True) mc.rowLayout( numberOfColumns=2, columnWidth2=(34, self.width-34), adjustableColumn=2, columnAlign2=('right','left'), columnAttach=[(1, 'both', 0), (2, 'both', 8)] ) #if we can find an icon, use that, otherwise do the text version if self.icon: mc.iconTextStaticLabel(style='iconOnly', image1=self.icon) else: mc.text(label=' _ _ |\n| | | |') if not self.menu: mc.popupMenu(button=1) mc.menuItem(label='Help', command=(_showHelpCommand(wikiURL+'#'+self.name))) mc.text(label=self.info) mc.setParent('..') mc.separator(height=8, style='single') return self