def refreshFloatField(self, *args ): timeControl = cmds.textScrollList( self._timeControl, q=1, si=1 ) if not timeControl: return None timeControl = timeControl[-1] weight = cmds.getAttr( timeControl+'.weight' ) offset = cmds.getAttr( timeControl+'.offset' ) mult = cmds.getAttr( timeControl+'.mult' ) limitAble = cmds.getAttr( timeControl+'.limitAble' ) minTime = cmds.getAttr( timeControl+'.minTime' ) maxTime = cmds.getAttr( timeControl+'.maxTime' ) cmds.floatField( self._weight, e=1, v=weight ) cmds.floatField( self._offset, e=1, v=offset ) cmds.floatField( self._mult, e=1, v=mult ) cmds.checkBox( self._limitAble, e=1, v=limitAble ) cmds.floatField( self._minTime, e=1, v=minTime ) cmds.floatField( self._maxTime, e=1, v=maxTime ) if cmds.checkBox( self._limitAble, q=1, v=1 ): cmds.rowColumnLayout( self._limitAbleLay, e=1, en=1 ) else: cmds.rowColumnLayout( self._limitAbleLay, e=1, en=0 ) for popup in self._popupList: popup.updateCondition()
def __init__(self): winName = "Size set" global typeMenu winTitle = winName if cmds.window(winName, exists=True): cmds.deleteUI(winName) # self.window = cmds.window(self.winName, title=self.winTitle, tbm=1, w=150, h=100 ) window = cmds.window(winName, title=winTitle, tbm=1, w=250, h=100 ) cmds.menuBarLayout(h=30) cmds.rowColumnLayout (' selectArrayRow ', nr=1, w=250) cmds.frameLayout('LrRow', label='', lv=0, nch=1, borderStyle='out', bv=1, p='selectArrayRow') cmds.rowLayout (' rMainRow ', w=300, numberOfColumns=6, p='selectArrayRow') cmds.columnLayout ('selectArrayColumn', parent = 'rMainRow') cmds.setParent ('selectArrayColumn') cmds.separator(h=10, p='selectArrayColumn') cmds.gridLayout('listBuildButtonLayout', p='selectArrayColumn', numberOfColumns=2, cellWidthHeight=(100, 20)) typeMenu=cmds.optionMenu( label='ctrl size') cmds.menuItem( label="Large" ) cmds.menuItem( label="Med" ) cmds.menuItem( label="Small" ) cmds.button (label='Change Selection', p='listBuildButtonLayout', command = lambda *args:self.controllerSize()) cmds.showWindow(window)
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 UI(): if cmds.window('FBXExport',ex=True): cmds.deleteUI('FBXExport',wnd=True) window = cmds.window('FBXExport',t='FBX Export Version 1.0.0',wh=(450,300),sizeable=False) mainLayout = cmds.columnLayout(w=450, h=300) cmds.menuBarLayout() # cmds.menu(label ='About Me',helpMenu=True) cmds.menu(label='File') cmds.menuItem(label='About Me',c=AboutMe) cmds.menuItem(label='Help',c=Help) cmds.separator(st='in') cmds.columnLayout(columnAlign='left', columnAttach=('both', 50), rowSpacing=30, columnWidth=420) cmds.text(l='') cmds.optionMenu(label ='ExportType:',changeCommand=printNewMenuItem) cmds.menuItem( label='Export Selection' ) cmds.menuItem( label='Export All' ) cmds.rowColumnLayout(numberOfColumns=2) cmds.textField("filepath",w=270,pht=configpath, bgc=(0.2,0.2,0.2)) cmds.button(l='path',w =50,h=20,c=browseFilePath) cmds.setParent( '..' ) cmds.rowColumnLayout(numberOfColumns=2) cmds.button(l='Name:',w =50,h=20,en=False) cmds.textField('FileName',pht='Enter a filename',ed =True,w=270,bgc=(0.2,0.2,0.2)) cmds.setParent( '..' ) cmds.button(l='Export',bgc=(0.3,0.7,0.7),c=ExportFBX) cmds.showWindow(window)
def separator( w=300, h=5 ): cmds.rowColumnLayout( nc=1, cw=( 1,w ) ) setSpace( h ) cmds.separator() setSpace( h ) cmds.setParent( '..' )
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 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 seqGUI(parent): frm = cmds.frameLayout( label="Sequence", cll=True, w=winWidth-5, collapseCommand=Callback(winExpand, -70), expandCommand=Callback(winExpand, 70)) frmCol = cmds.columnLayout(rs=3) cmds.checkBox( "mecRenSeqCB", label="On\Off", v=1) rowCol = cmds.rowColumnLayout("mecRenSeqRC", nc=2, cw=[[1,winWidth/2],[2,winWidth/2]], co=[[1,"right",5]]) ''' Older version. Used Callback instead with a function that will enable or disable any gui component. cmds.checkBox( "mecRenSeqCB", e=True, onc='%s.cmds.rowColumnLayout("mecRenSeqRC", e=True, en=True)' %scriptName) cmds.checkBox( "mecRenSeqCB", e=True, ofc='%s.cmds.rowColumnLayout("mecRenSeqRC", e=True, en=False)' %scriptName) ''' cmds.checkBox( "mecRenSeqCB", e=True, onc=Callback(enGUI,"rowColumnLayout", "mecRenSeqRC", 1 ) ) cmds.checkBox( "mecRenSeqCB", e=True, ofc=Callback(enGUI,"rowColumnLayout", "mecRenSeqRC", 0 )) cmds.textScrollList( "mecRenSeqTSL", h=40, ams=True ) cmds.setParent(rowCol) subCol = cmds.columnLayout() rowWidth = winWidth/2 cmds.rowColumnLayout(nc=2, w=rowWidth, cw=[[1,(rowWidth-70)], [2,60]]) cmds.textField("mecRenSeqName", w=rowWidth-70 ) cmds.button(label="Add", c=Callback(addTSL, "mecRenSeqTSL")) cmds.setParent(subCol) cmds.rowColumnLayout(nc=2, w=rowWidth, cw=[[1,rowWidth/2],[2,rowWidth/2-10]]) cmds.button(label="Rem All", c=Callback(remAllTSL, "mecRenSeqTSL")) cmds.button(label="Rem Sel", c=Callback(remSelTSL, "mecRenSeqTSL")) cmds.setParent(parent)
def renameGui(parent): renCol = cmds.columnLayout() colWidth = winWidth/4 cmds.rowColumnLayout(nc=4, cw=[[1,colWidth],[2,colWidth+40],[3,colWidth-40],[4,colWidth]], co=[[1,"both",3],[2,"both",3],[3,"both", 3],[4,"both",3]]) cmds.text( label="Prefix", al="center" ) cmds.text( label="Name", al="center" ) cmds.text( label="###", al="center" ) cmds.text( label="Suffix", al="center" ) cmds.textField( "mecRenPre" ) cmds.textField( "mecRenName" ) cmds.intField( "mecRenCount" ) cmds.textField( "mecRenSuf" ) cmds.setParent(renCol) cmds.rowColumnLayout( nc=3, cw=[[1,winWidth/3-20],[2,winWidth/3+40],[3,winWidth/3-20]], co=[[1,"both",3],[3,"both",3]]) cmds.button(label="Prefix", c=Callback(prefix)) cmds.button(label="Full Rename", c=Callback(fullRename)) cmds.button(label="Suffix", c=Callback(suffix)) cmds.setParent( parent )
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 installCopyRightInfo(self): """""" cmds.frameLayout(lv=False, bs='etchedIn', mh=6, mw=6, w=1) cmds.text(l="Soft Cluster EX", fn='boldLabelFont', align='center') cmds.rowColumnLayout( numberOfColumns=2, rowSpacing=[1, 8], columnAttach=[1, "right", 5], columnAlign=[1, "right"]) cmds.text(l="Version: ", fn='boldLabelFont') cmds.text(l=setup.getVersion(), align='left') cmds.text(l="Author: ", fn='boldLabelFont') cmds.text(l="Webber Huang", align='left') cmds.text(l="Contact: ", fn='boldLabelFont') cmds.text(l="*****@*****.**", align='left') cmds.text(l="Project Site: ", fn='boldLabelFont') cmds.iconTextButton( style='textOnly', l='http://riggingtd.com/downloads/soft-cluster-ex', ann="Click to open in brower.", c = lambda *args: setup.openBlog() ) cmds.setParent( ".." ) cmds.setParent( ".." )
def create(self): self.fields = [] if cmds.window( self.uiname, ex=1 ): cmds.deleteUI( self.uiname, wnd=1 ) cmds.window( self.uiname, title= self.title ) columnLayout = cmds.columnLayout() columnWidth = self.width - 2 self.rowColumnField = cmds.rowColumnLayout( nc=1, cw=[( 1, self.width ) ] ) cmds.button( l='Append', c= self.cmdAppend ) field = AttrAndValueField( columnLayout, columnWidth ) self.fields.append( field ) cmds.setParent( '..' ) firstWidth = (columnWidth-2) / 2 secondWidth = columnWidth - 2 - firstWidth cmds.rowColumnLayout( nc=2, cw=[(1, firstWidth),(2, secondWidth) ] ) cmds.button( l='Set', c= self.cmdSet ) cmds.button( l='Cancel', c= self.cmdCancel ) cmds.setParent( '..' ) cmds.window( self.uiname, e=1, width= self.width, height = self.height ) cmds.showWindow( self.uiname ) self.columnWidth = self.width -2
def displayInstructions(*pArgs): """Shows in an independent window a list of instructions for the user to set things up quickly""" if cmds.window( "instructions_window", exists=True ): cmds.deleteUI( "instructions_window" ) instructions_window = cmds.window( "instructions_window", title="Instructions", s=False, mnb=False, mxb=False ) instructionsLayout = cmds.frameLayout( l="Instructions", collapsable=False, cl=False, mw = 10, mh=10 ) cmds.rowColumnLayout( nc=3, cw=[(1,20),(2,480),(3,20)], cal=[(2,"left")], parent=instructionsLayout ) cmds.separator( st="none" ) cmds.text( l="1. Write an axiom (or initial word), depth and rules. If you don't know what it is put the mouse over the parameter and read the help line.\n2. Click Generate String. Then you will see the result in the text field below, this is just mere text. Now the string needs to be interpreted.\n3. Set all the 'Geometric Interpretation' attributes (Angle, Segment Length...). Remember to put the mouse over it if your are confused.\n4. Click Create Geometry. You will see the result in your scene. If you want to clean the last plant\n\tclick Clean Plant. If you click Create Geometry again you will get another plant.\n6. Always remember to pay attention to the help line and warnings field." ) cmds.separator( st="none" ) cmds.separator( st="none" ) cmds.text( l="\nThis is the meaning for each character you enter in the rules section:" ) cmds.separator( st="none" ) cmds.separator( st="none" ) cmds.text( l=""" F Move forward f Move forward L Leaf B Blossom + Rotate +X (yaw right) - Rotate -X (yaw left) ^ Rotate +Y (roll right) & Rotate -Y (roll left) < Rotate +Z (pitch down) > Rotate -Z (pitch up) * Turtle rotates 180 (as it was facing backwards) [ Push current turtle state on the stack ] Pop the current turtle state from the stack""" ) cmds.showWindow( instructions_window )
def meshListPart(self, width, height ): cmds.rowColumnLayout( nc=1, cw=[(1, width)] ) cmds.text( l='Mesh List', al='center' ) uifnc.setSpace( 10 ) self._meshList = cmds.textScrollList( height = height, ams=1, sc= self.meshListSelectCmd ) cmds.setParent( '..' )
def core(self): if cmds.window( self._winName, ex=1 ): cmds.deleteUI( self._winName ) cmds.window( self._winName, title= self._title ) cmds.columnLayout() uifnc.setSpace( 10 ) widthList = uifnc.setWidthByPerList( [3,60,30,3], self._width ) cmds.rowColumnLayout( nc=4, cw=[ (1,widthList[0]), (2,widthList[1]),(3,widthList[2]), (4,widthList[3]) ] ) uifnc.setSpace() self.driverRootPart( widthList[1] ) self.editMeshPart( widthList[1] ) uifnc.setSpace() self.setSpace( 4, 15 ) uifnc.setSpace() self.driverListPart( widthList[1], 150 ) self.meshListPart( widthList[2], 150 ) uifnc.setSpace() cmds.setParent( '..' ) cmds.window( self._winName, e=1, wh=[ self._width, self._height ] ) cmds.showWindow( self._winName ) self.scriptJob()
def update(self, *args ): self.repairString = '' cmds.scrollField( self.scrollField, e=1, text='' ) checkUIs = [] checkUIs.append( cmds.rowColumnLayout( self.assetCheck, q=1, ca=1 ) ) checkUIs.append( cmds.rowColumnLayout( self.layoutCheck, q=1, ca=1 ) ) checkUIs.append( cmds.rowColumnLayout( self.productionCheck, q=1, ca=1 ) ) for cuCheckUIs in checkUIs: repairTitle = cmds.frameLayout( cmds.rowColumnLayout( cmds.checkBox( cuCheckUIs[0], q=1, p=1 ), q=1, p=1 ), q=1, l=1 ) onCheckBoxEx = False for checkBox in cuCheckUIs: if not checkBox in self.checkBoxs: continue if cmds.checkBox( checkBox, q=1, v=1 ): if not onCheckBoxEx: self.repairString += repairTitle+' : ' onCheckBoxEx = True self.addRepairString( cmds.checkBox( checkBox, q=1, l=1 ) ) if onCheckBoxEx: self.repairString += u' 수정\n' self.editFieldString()
def driverRootPart( self, width ): widthList = uifnc.setWidthByPerList( [60,40], width ) cmds.rowColumnLayout( nc=2, cw=[(1,widthList[0]),(2,widthList[1])] ) self._driverRootField = cmds.textField() self._driverRootButton = cmds.button( l='Load', c = partial( self.loadCmd, self._driverRootField ), h=25 ) cmds.setParent( '..' )
def doIt( self, *args ): # Window settings. self.winWidth = 206 self.winHeight = 400 self.iconWidth = 32 self.iconHeight = 32 # Window colors self.rowColors = [[0.4,0.4,0.4],[0.5,0.5,0.5]] # Clean up old uis before opening a new one. try: cmds.deleteUI( self.winName ) except: pass # Setup the form layout. self.mainWindow = cmds.window( self.winName, title=self.winTitle, sizeable=False, resizeToFitChildren=False ) self.form = cmds.formLayout() self.column = cmds.rowColumnLayout( numberOfRows=2, rowSpacing=[(1,0),(2,10)] ) # ROW 1 self.updateScrolllist() # ROW 2 self.buttonRow = cmds.rowColumnLayout( numberOfColumns=2, columnSpacing=[(1,0),(2,10)], columnWidth=[(1,self.winWidth/2),(2,self.winWidth/2)] ) cmds.button( label='Delete', command=lambda b: self.deleteAttributes() ) cmds.button( label='Close', command=lambda b, a1=self.winName: cmds.deleteUI( a1 ) ) cmds.setParent( '..' )#self.buttonRow cmds.setParent( '..' )#self.column # Show the window. cmds.showWindow( self.winName )
def createUI( pWindowTitle): windowID = 'myWindowID' if cmds.window(windowID , exists = True): cmds.deleteUI(windowID) cmds.window(windowID , title = pWindowTitle , sizeable = False , resizeToFitChildren = True) cmds.rowColumnLayout( numberOfColumns = 3 , columnWidth =[(1,200) , (2,200) , (3,200)]) cmds.separator ( h = 30 , style = 'none') cmds.separator ( h = 30 , style = 'none') cmds.separator ( h = 30 , style = 'none') cmds.text(label = 'Enter the path of the code') cmds.textField('path') cmds.separator ( h = 30 , style = 'none') cmds.separator ( h = 30 , style = 'none') cmds.separator ( h = 30 , style = 'none') cmds.separator ( h = 30 , style = 'none') cmds.button(label = 'Generate' , command = generate) cmds.separator ( h = 30 , style = 'none') cmds.button(label = 'Build' , command = build) cmds.separator ( h = 30 , style = 'none') cmds.separator ( h = 30 , style = 'none') cmds.separator ( h = 30 , style = 'none') cmds.showWindow()
def gui(): ''' GUI for Image convert script. ''' win = "mecCVTWin" winWidth = 200 winHeight = 369 if( cmds.window(win, q=True, ex=True) ): cmds.deleteUI(win) cmds.window(win, title="Image Converter", w=winWidth, h=winHeight) cmds.columnLayout("mecCVTMC") cmds.button(label="Get Directory", w=200, c="mecConvert.pickFolder()") cmds.scrollField( "mecCVTDir", w=winWidth, editable=False, wordWrap=True, text='Choose Directory' ) # cmds.text("mecCVTDir", label="") cmds.textScrollList("mecCVTTSL", w=winWidth, h=200, allowMultiSelection=True) cmds.rowColumnLayout(nc=2, cw=[[1,100],[2,100]]) cmds.button(label="Remove ALL", c="mecConvert.cmds.textScrollList('mecCVTTSL', e=True, ra=True)") cmds.button(label="Remove Selected", c="mecConvert.tslRemSel()") cmds.setParent("..") cmds.button(label="Convert", w=200, c="mecConvert.convert()") cmds.picture(image="sbaLogo.xpm", w=210, h=20) cmds.showWindow(win)
def show(self): self.fields = [] if cmds.window( self.uiname, ex=1 ): cmds.deleteUI( self.uiname, wnd=1 ) cmds.window( self.uiname, title= self.title ) cmds.columnLayout() columnWidth = self.width - 2 firstWidth = ( columnWidth -2 ) / 2 secondWidth = ( columnWidth -2 ) - firstWidth cmds.rowColumnLayout( nc=1, cw=[(1,columnWidth)] ) self.sourceField.create() self.destField.create() self.meshField.create() cmds.setParent( '..' ) cmds.rowColumnLayout( nc=2, cw=[(1,firstWidth),(2,secondWidth)]) cmds.button( l='Create', c= self.cmdSet ) cmds.button( l='Close', c= self.cmdClose ) cmds.window( self.uiname, e=1, width= self.width, height = self.height ) cmds.showWindow( self.uiname )
def audioUI(): """UI for the whole thing""" if (cmds.window("audioWin", exists=True)): cmds.deleteUI("audioWin") widgets["win"] = cmds.window("audioWin", t="zbw_audioManager", w=300, h=260) widgets["mainCLO"] = cmds.columnLayout() widgets["getAudioBut"] = cmds.button(l="Get All Audio In Scene", w=300, h=30, bgc=(.6, .6, .8), c=getAudio) cmds.text("Double-click item in list to enable sound and select it", al="left") widgets["audioTSL"] = cmds.textScrollList(h=100, w=300, dcc=selectAudio) widgets["buttonRCLO"] = cmds.rowColumnLayout(nc=2) widgets["deleteSelBut"] = cmds.button(l="Delete Selected", w=150, h=20, bgc=(.8,.6,.6), c=deleteSelected) widgets["deleteAllBut"] = cmds.button(l="Delete All Audio", w=150, h=20, bgc=(.8,.4,.4), c=deleteAll) cmds.setParent(widgets["mainCLO"]) cmds.separator(h=20) widgets["newAudioBut"] = cmds.button(l="Import New Audio File!", w=300, h=30, bgc=(.6,.8,.6), c=importAudio) cmds.separator(h=20) widgets["offsetRCLO"] = cmds.rowColumnLayout(nc=2, cw=([1,175], [2, 125]), cal=([1,"left"], [2,"left"])) widgets["offsetIFG"] = cmds.intFieldGrp(l="Offset Selected By ", v1=1, cal=([1,"left"], [2,"left"]), cw=([1,100],[2,50])) widgets["offsetBut"] = cmds.button(l="Offset!", w=100, h=30, bgc=(.6,.8,.8), c=offsetAudio) cmds.showWindow(widgets["win"]) cmds.window(widgets["win"], e=True, w=300, h=260)
def create(self, *args ): top, left = cmds.window( WindowInfo._window, q=1, topLeftCorner=1 ) top += 70 left +=19 itemIndex = cmds.textScrollList( FolderUIInfo._scrollListUI, q=1, sii=1 ) if not itemIndex: return None selItem = cmds.textScrollList( FolderUIInfo._scrollListUI, q=1, si=1 )[0].split('.')[0] top += itemIndex[0]*13 if cmds.window( FolderSubRenameUiInfo._winName, ex=1 ): cmds.deleteUI( FolderSubRenameUiInfo._winName ) cmds.window( FolderSubRenameUiInfo._winName, titleBar=0 ) cmds.columnLayout() cmds.rowColumnLayout( nc=3, cw=[(1,120),(2,52),(3,25)] ) textField = cmds.textField( tx=selItem ) cmds.button( l='Rename', c=FolderSubRenameUiInfo.cmdRename ) cmds.button( l='X' , c=self.cmdDeleteWindow, bgc=[0.9,0.35,0.35] ) cmds.windowPref( FolderSubRenameUiInfo._winName, e=1, widthHeight = [ FolderSubRenameUiInfo._width, FolderSubRenameUiInfo._height ], topLeftCorner = [ top, left ] ) cmds.showWindow( FolderSubRenameUiInfo._winName ) FolderSubRenameUiInfo._renameTextField = textField
def buildGUI(self): if cmds.window(self.name, q=True, exists=True): cmds.deleteUI(self.name) cmds.window(self.name, title=self.title, sizeable=False, mxb=False, mnb=False, toolbox=False, w=100, h=30) cmds.columnLayout("mainLayout", adj=True, parent=self.name, co=("left", 5)) # Add onClose Event cmds.scriptJob(uiDeleted=(self.name, self.onClose)) # Help Menu cmds.menuBarLayout("menuBar") cmds.menu(label="Show Help", helpMenu =True, pmc=self.showHelp) # Import paths cmds.textFieldButtonGrp("tfbDBPath", label="Links: ", bl="Set Link Path", cw=(1,50), parent="mainLayout", bc=self.setDBPath) cmds.textFieldButtonGrp("tfbShaderPath", label="Shaders: ", bl="Set Shader Path", cw=(1,50), parent="mainLayout", bc=self.setShaderPath) cmds.checkBox("cbSelection", label="Use Selection", parent="mainLayout") cmds.checkBox("cbSubstring", label="Substring prefix", parent="mainLayout", value=True) cmds.textField("tfSubstring", parent="mainLayout", text="s100_char") cmds.separator(h=10, style="none", parent="mainLayout") # Buttons cmds.rowColumnLayout("buttonsLayout", numberOfColumns=2, parent="mainLayout") cmds.button("bExportLinks", label = "Export Links", w=200, h=30, parent="buttonsLayout", c=self.exportLinks) cmds.button("bImportShader", label="Link Shaders", w=200, h=30, parent="buttonsLayout", c=self.linkShaders) cmds.showWindow(self.name)
def assignCustomMateColorUI( self, colorMat = 'RL_SOMECOLOR', col = (1,1,1)): mc.columnLayout() mc.colorSliderGrp( 'customColorColorSlider', rgb = col ) mc.checkBox( 'customAlpha_chb', l = 'With Alpha', v = True ) mc.rowColumnLayout( nc = 2 ) mc.button( l = 'Create', w = 120, c = self.assignNewMateColorUi ) mc.button( l = 'Cancel', w = 120, c = self.dismissCustomColorUI )
def gui(): if (cmds.window(win, q=True, ex=True)): cmds.deleteUI(win) global prefix, name, inc, suffix cmds.window(win, t='Rename Tool', w=width, h=300) main_layout = cmds.columnLayout(nch=2) cmds.rowColumnLayout(w=width, nc=4) cmds.text(w=(width/4), l='Prefix') cmds.text(w=(width/4), l='Name') cmds.text(w=(width/4), l='Instance') cmds.text(w=(width/4), l='Suffix') prefix = cmds.textField(w=(width/4), tx='') name = cmds.textField(w=(width/4), tx='') inc = cmds.intField(w=(width/4), v=0) suffix = cmds.textField(w=(width/4), tx='') cmds.setParent(main_layout) cmds.columnLayout(w=width, adj=True) cmds.button(l='Run Rename', c=scriptname + '.rn()') cmds.showWindow()
def rgb_base_gui(*args): if cmds.window('rgb_gui', q=1, ex=1): cmds.deleteUI('rgb_gui') cmds.window('rgb_gui', t="Object to Render layer") cmds.columnLayout(adjustableColumn = True) cmds.rowColumnLayout(numberOfColumns=3) cmds.text("Render Layer", h= 20, bgc= (0.3,0.6,0.8)) cmds.text("Added Object", h= 20, bgc= (0.7,0.6,0.6)) cmds.button("Selected Object", h = 20, bgc =(0.7,0.3,0.3),c = sel_objs) sels = cmds.ls(sl=1) rls = cmds.ls(typ="renderLayer") rl = filter(lambda x:x !="defaultRenderLayer", rls) rls = cmds.textScrollList('rls', append=rl,ams=True, sc = rl_obj_list) objs = cmds.textScrollList('objs', append=sels,ams=True,height = 450,bgc = (0.3,0.3,0.5)) sels = cmds.textScrollList('sels', append=sels,ams=True,height = 450) cmds.button("REFRESH", c= rgb_base_gui) cmds.button("REMOVE", c=remove_objs,bgc = (0.7,0.6,0.6)) cmds.button("ASSIGN", c= put_obj, bgc = (0.7,0.3,0.3)) cmds.rowColumnLayout(numberOfRows=2) cmds.window('rgb_gui', e=1, width=450, height = 250) cmds.showWindow('rgb_gui')
def create(self, *args ): top, left = cmds.window( WindowInfo._window, q=1, topLeftCorner=1 ) top +=70 left +=19 itemIndex = cmds.textScrollList( FolderUIInfo._scrollListUI, q=1, sii=1 ) if not itemIndex: return None top += itemIndex[0]*13 if cmds.window( FolderSubDeleteUiInfo._winName, ex=1 ): cmds.deleteUI( FolderSubDeleteUiInfo._winName ) cmds.window( FolderSubDeleteUiInfo._winName, titleBar=0 ) cmds.columnLayout() cmds.rowColumnLayout( nc=1, cw=[(1,200)] ) cmds.text( l='Are You Sure?', al='center', h=22 ) cmds.setParent( '..' ) cmds.rowColumnLayout( nc=2, cw=[(1,100),(2,100)]) cmds.button( l='Delete', c=FolderSubDeleteUiInfo.cmdDelete, h=22 ) cmds.button( l='Cancel', c=self.cmdDeleteWindow, h=22 ) cmds.setParent( '..' ) cmds.windowPref( FolderSubDeleteUiInfo._winName, e=1, widthHeight = [ FolderSubDeleteUiInfo._width, FolderSubDeleteUiInfo._height ], topLeftCorner = [ top, left ] ) cmds.showWindow( FolderSubDeleteUiInfo._winName )
def createLayout(self): tweenMachine = TweenMachine() cmds.rowColumnLayout(numberOfColumns=100, parent=self.parentLayout) #linear cmds.text( label=' ', h=1 ) cmds.iconTextButton(style='iconOnly', marginWidth=0, w=self.ws, h=self.hs, image= uiMod.getImagePath("tweenMachine_left"), highlightImage= uiMod.getImagePath("tweenMachine_left copy"), command=lambda *args: tweenMachine.setTween("linear_prev"), annotation="Overshoot linear tween") cmds.iconTextButton(style='iconOnly', marginWidth=0, w=self.ws, h=self.hb, image= uiMod.getImagePath("tweenMachine_L"), highlightImage= uiMod.getImagePath("tweenMachine_L copy"), command=lambda *args: tweenMachine.setTween("linear"), annotation="Linear tween") cmds.iconTextButton(style='iconOnly', marginWidth=0, w=self.ws, h=self.hs, image= uiMod.getImagePath("tweenMachine_right"), highlightImage= uiMod.getImagePath("tweenMachine_right copy"), command=lambda *args: tweenMachine.setTween("linear_next"), annotation="Overshoot linear tween") #tween cmds.text( label=' ', h=1 ) cmds.iconTextButton(style='iconOnly', marginWidth=0, w=self.ws, h=self.hs, image= uiMod.getImagePath("tweenMachine_left"), highlightImage= uiMod.getImagePath("tweenMachine_left copy"), command=lambda *args: tweenMachine.setTween(-50), annotation="Overshoot 50% with previous key"); tweenMachine.popUpColor() cmds.iconTextButton(style='iconOnly', marginWidth=0, w=self.ws, h=self.hs, image= uiMod.getImagePath("tweenMachine_mid"), highlightImage= uiMod.getImagePath("tweenMachine_mid copy"), command=lambda *args: tweenMachine.setTween(-30), annotation="Overshoot 30% with previous key"); tweenMachine.popUpColor() cmds.iconTextButton(style='iconOnly', marginWidth=0, w=self.ws, h=self.hs, image= uiMod.getImagePath("tweenMachine_mid"), highlightImage= uiMod.getImagePath("tweenMachine_mid copy"), command=lambda *args: tweenMachine.setTween(-10), annotation="Overshoot 10% with previous key"); tweenMachine.popUpColor() cmds.iconTextButton(style='iconOnly', marginWidth=0, w=self.ws, h=self.hb, image= uiMod.getImagePath("tweenMachine_key"), highlightImage= uiMod.getImagePath("tweenMachine_key copy"), command=lambda *args: tweenMachine.setTween(0), annotation="Copy previous key"); tweenMachine.popUpColor() cmds.iconTextButton(style='iconOnly', marginWidth=0, w=self.ws, h=self.hs, image= uiMod.getImagePath("tweenMachine_mid"), highlightImage= uiMod.getImagePath("tweenMachine_mid copy"), command=lambda *args: tweenMachine.setTween(10), annotation="Tween 90% with previous key"); tweenMachine.popUpColor() cmds.iconTextButton(style='iconOnly', marginWidth=0, w=self.ws, h=self.hs, image= uiMod.getImagePath("tweenMachine_mid"), highlightImage= uiMod.getImagePath("tweenMachine_mid copy"), command=lambda *args: tweenMachine.setTween(20), annotation="Tween 80% with previous key"); tweenMachine.popUpColor() cmds.iconTextButton(style='iconOnly', marginWidth=0, w=self.ws, h=self.hs, image= uiMod.getImagePath("tweenMachine_mid"), highlightImage= uiMod.getImagePath("tweenMachine_mid copy"), command=lambda *args: tweenMachine.setTween(33), annotation="Tween 66% with previous key"); tweenMachine.popUpColor() cmds.iconTextButton(style='iconOnly', marginWidth=0, w=self.ws, h=self.hb, image= uiMod.getImagePath("tweenMachine_T"), highlightImage= uiMod.getImagePath("tweenMachine_T copy"), command=lambda *args: tweenMachine.setTween(50), annotation="Tween 50%"); tweenMachine.popUpColor() cmds.iconTextButton(style='iconOnly', marginWidth=0, w=self.ws, h=self.hs, image= uiMod.getImagePath("tweenMachine_mid"), highlightImage= uiMod.getImagePath("tweenMachine_mid copy"), command=lambda *args: tweenMachine.setTween(66), annotation="Tween 66% with next key"); tweenMachine.popUpColor() cmds.iconTextButton(style='iconOnly', marginWidth=0, w=self.ws, h=self.hs, image= uiMod.getImagePath("tweenMachine_mid"), highlightImage= uiMod.getImagePath("tweenMachine_mid copy"), command=lambda *args: tweenMachine.setTween(80), annotation="Tween 80% with next key"); tweenMachine.popUpColor() cmds.iconTextButton(style='iconOnly', marginWidth=0, w=self.ws, h=self.hs, image= uiMod.getImagePath("tweenMachine_mid"), highlightImage= uiMod.getImagePath("tweenMachine_mid copy"), command=lambda *args: tweenMachine.setTween(90), annotation="Tween 90% with next key"); tweenMachine.popUpColor() cmds.iconTextButton(style='iconOnly', marginWidth=0, w=self.ws, h=self.hb, image= uiMod.getImagePath("tweenMachine_key"), highlightImage= uiMod.getImagePath("tweenMachine_key copy"), command=lambda *args: tweenMachine.setTween(100), annotation="Copy next key"); tweenMachine.popUpColor() cmds.iconTextButton(style='iconOnly', marginWidth=0, w=self.ws, h=self.hs, image= uiMod.getImagePath("tweenMachine_mid"), highlightImage= uiMod.getImagePath("tweenMachine_mid copy"), command=lambda *args: tweenMachine.setTween(110), annotation="Overshoot 10% with next key"); tweenMachine.popUpColor() cmds.iconTextButton(style='iconOnly', marginWidth=0, w=self.ws, h=self.hs, image= uiMod.getImagePath("tweenMachine_mid"), highlightImage= uiMod.getImagePath("tweenMachine_mid copy"), command=lambda *args: tweenMachine.setTween(130), annotation="Overshoot 30% with next key"); tweenMachine.popUpColor() cmds.iconTextButton(style='iconOnly', marginWidth=0, w=self.ws, h=self.hs, image= uiMod.getImagePath("tweenMachine_right"),highlightImage= uiMod.getImagePath("tweenMachine_right copy"), command=lambda *args: tweenMachine.setTween(150), annotation="Overshoot 50% with next key"); tweenMachine.popUpColor()
def createUI (pWindowTitle, pApplyCallback): windowID = 'MyWindowID' if cmds.window(windowID, exists=True): cmds.deleteUI(windowID) cmds.window(windowID, title=pWindowTitle, sizeable=False, resizeToFitChildren=True) cmds.rowColumnLayout(numberOfColumns=3, columnWidth=[(1,75),(2,60),(3,60)], columnOffset=[(1,'right',3)]) cmds.text(label='Time Range:') startTimeField = cmds.intField() endTimeField = cmds.intField() cmds.text(label='Attribute:') targetAttributeField = cmds.textField() cmds.separator(h=10, style='none') cmds.separator(h=10, style='none') cmds.separator(h=10, style='none') cmds.separator(h=10, style='none') cmds.separator(h=10, style='none') cmds.button(label='Apply', command=pApplyCallback) def cancelCallback(*pArgs): if cmds.window(windowID, exists=True): cmds.deleteUI(windowID) cmds.button(label='Cancel', command=cancelCallback) cmds.showWindow()
def gui(): if(cmds.window('tjmToolSetMain',ex=True)): cmds.deleteUI('tjmToolSetMain', window=True) if(cmds.windowPref('tjmToolSetMain', ex=True, )): cmds.windowPref('tjmToolSetMain', r=True) cmds.window('tjmToolSetMain', t="RBA ToolSet", w=305, h=600, s=True, tlc=[107,58]) cmds.scrollLayout(w=305) main = cmds.columnLayout(adjustableColumn=1) #Modeling global normalSize, borderEdgeSize cmds.frameLayout('Modeling',l='Modeling', cl=True, cll=True, width=275) cmds.columnLayout(adj=1) cmds.button(l='Normals',c=normals) normalSize=cmds.floatSliderGrp(min=0.0, max=1.0, s=0.01, f=True,dc=normalResize) cmds.button(l='Border Edges', c=borderEdge) borderEdgeSize=cmds.floatSliderGrp(min=1.0, max=10, s=0.5, f=True, dc=borderEdgeResize) cmds.separator( h=5, st='singleDash') cmds.text(l='Normals') cmds.button(l='Conform', c=conformNormals) cmds.button(l='Reverse',c=reverseNormals) cmds.button(l='Soften', c=softenNormals) cmds.button(l='Harden', c=hardenNormals) cmds.setParent(main) #Control Icons cmds.frameLayout('ControlIcons',l='Control Icons', cl=True, cll=True, width=275) cmds.columnLayout(adj=1) cmds.button(l='Circle', c=createCircle) cmds.button(l='Square', c=createSquare) cmds.button(l='Cube',c=createCube) cmds.button(l='Pointer', c=createPointer) cmds.button(l='COG', c=createCOG) cmds.rowColumnLayout(numberOfColumns=2, width=275) global colorIndexValue cmds.button(bgc=[1,0,0], c=colorRed, l='') cmds.button(bgc=[0,0,1], c=colorBlue, l='') cmds.button(bgc=[1,1,0], c=colorYellow, l='') cmds.button(bgc=[1,0,1], c=colorPurple, l='') cmds.setParent('..') cmds.rowColumnLayout(nc=1) colorIndexValue=cmds.colorIndexSliderGrp(l=' ', min=0, max=20, value=10,dc=applyColor) #cmds.button(l='Apply', c=applyColor) cmds.setParent(main) #Rigging global pointCheckBox, orientCheckBox, parentCheckBox cmds.frameLayout('Rigging',l='Rigging', cl=True, cll=True, width=275) cmds.columnLayout(adj=1) cmds.text(l='Constraints') pointCheckBox=cmds.checkBox( l='Offset') cmds.button(l='Point', c=constraintPoint) orientCheckBox=cmds.checkBox( l='Offset') cmds.button(l='Orient', c=constraintOrient) parentCheckBox=cmds.checkBox( l='Offset') cmds.button(l='Parent',c=constraintParent) cmds.button(l='Pole Vector', c=constraintPoleVector) cmds.separator( height=5, style='singleDash') cmds.setParent(main) #Attribute Creator global separatorText, intText, floatText cmds.frameLayout('AttributeCreator',l='Attribute Creator',cl=True,cll=True,width=275,) cmds.columnLayout(adj=1) cmds.rowColumnLayout(nc=2) cmds.button(l='Separator',c=createSeparator) separatorText=cmds.textField(ed=True) cmds.button(l='Int',c=createInt) intText=cmds.textField(ed=True) cmds.button(l='Float',c=createFloat) floatText=cmds.textField(ed=True) cmds.setParent('..') #Intermediate Attribute Creator WIP cmds.text(l='Custom Attribute', al='center') global attributeLongName, radioSelection, minValue, maxValue cmds.columnLayout('radioMenu',cal='left', w=275) attributeLongName=cmds.textFieldGrp(l='LongName',ed=True, w=250) radioSelection=cmds.radioButtonGrp(la2=['Integer', 'Float'], nrb=2,sl=1) minValue=cmds.floatFieldGrp(nf=1,l='Min',v1=0) maxValue=cmds.floatFieldGrp(nf=1,l='Max',v1=1) cmds.setParent('..') cmds.button(l='Create Attribute',c=createAttribute) cmds.setParent(main) #Clean-Up cmds.frameLayout('CleanUp',l='Clean Up', cl=True, cll=True, width=275) cmds.columnLayout(adj=1) cmds.text(l='Geo') cmds.separator( h=5, st='singleDash') cmds.button(l='Delete History', c=deleteHistory) cmds.button(l='Freeze Transforms', c=freezeTransforms) cmds.button(l='Center Pivot', c=centerPivot) cmds.showWindow('tjmToolSetMain')
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 Palm Root: ") mc.text(l="") mc.separator(st="in", h=17, w=500) mc.setParent("..") mc.rowColumnLayout(nc=3, cw=[(1, 125), (2, 150), (3, 150)], cs=[1, 5], rs=[1, 3], cal=( [1, "left"], [2, "left"], [3, "left"], )) mc.text(l="Mirror Arm As Well?") # mc.setParent("..") mc.radioButtonGrp( "selArmMirrorType_rbg", la2=["No", "Yes"], nrb=2, sl=2, cw2=[50, 50], ) mc.text(l="") mc.setParent("..") mc.separator(st="in", h=17, w=500) mc.rowColumnLayout(nc=3, cw=[(1, 100), (2, 200), (3, 150)], cs=[1, 5], rs=[1, 3], cal=( [1, "left"], [2, "left"], [3, "left"], )) mc.text(l="Initial Limb: ") mc.radioButtonGrp( "selArmType_rbg", la2=["Left", "Right"], nrb=2, sl=1, cw2=[50, 50], ) mc.setParent("..") 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="Hand Joint: ") mc.textFieldButtonGrp("jointLoad_tfbg", cw=(1, 322), bl=" Load ") mc.text(bgc=(0.85, 0.65, 0.25), l="Arm: ") mc.textFieldButtonGrp("armLoad_tfbg", cw=(1, 322), bl=" Load ", tx="JNT_l_armEnd") mc.text(bgc=(0.85, 0.65, 0.25), l="FKIK Ctrl: ") mc.textFieldButtonGrp("ctrlFKIKSwitch_tfbg", cw=(1, 322), bl=" Load ", tx="CTRL_fkikSwitch") mc.setParent("..") mc.separator(st="in", h=17, w=500) mc.rowColumnLayout(nc=2, cw=[(1, 100), (2, 370)], cs=[1, 5], rs=[1, 3]) mc.checkBox("selGeo_cb", l="Affect Geometry", en=True, v=True) mc.setParent("..") # load buttons # mc.textFieldButtonGrp("jointLoad_tfbg", e=True, bc=self.loadSrc1Btn) mc.textFieldButtonGrp("armLoad_tfbg", e=True, bc=self.loadSrc2Btn) mc.textFieldButtonGrp("ctrlFKIKSwitch_tfbg", e=True, bc=self.loadSrc3Btn) self.selLoad = [] self.jointArray = [] mc.showWindow(self.window)
cmds.copyAttr(controlx[0],grp,v=True,at=['tx','ty','tz']) #center piviot of grp cmds.xform(cp=True) #freeze transformations of grp cmds.makeIdentity(apply=True, t=1, r=1, s=1, n=0) #return #grab selected joints #selectedFK=cmds.ls(selection=True) #run makeCtrls() #for each in selectedFK: #makeCtrls(each) win = cmds.window(title ='Biped Auto Rig') layout = cmds.rowColumnLayout(adjustableColumn=True) cmds.text(label ='Create Joints and Place Where Desired') cmds.button(label='Create Drive Chain', command ='CreateDriveChain()') cmds.text(label ='Please orient leaf joints') cmds.button(label='Complete Skelton', command='MirrorParent()') cmds.text(label ='Select Joints to Add controls') cmds.button(label='Create Controls', command='makeCtrls()') #cmds.button(label='Create Left Hand', command='CreateLeftHandChain()') #cmds.button(label='Create Left Leg', command='CreateLeftLegChain()') #colors = mc.floatFieldGrp(nf=3) cmds.showWindow()
def innerLayout(): return cmds.rowColumnLayout(numberOfColumns=2, columnWidth=[(1, 100), (2, 100)])
def ui(cls): cmds.window(cls.winName, title='Create Range Of Motion', mnb=False, mxb=False) cls.widgets['mainColLo'] = cmds.columnLayout(adj=True) cls.widgets['txRowColLo'] = cmds.rowColumnLayout(numberOfColumns=4, columnOffset=[ (1, 'left', 5), (2, 'left', 5), (4, 'right', 5) ], columnWidth=[(3, 40), (4, 40)]) cls.widgets['txChkBox'] = cmds.checkBox(label='') cmds.text(label='TranslateX Min/Max: ') cls.widgets['txMinIntFld'] = cmds.intField(v=-10) cls.widgets['txMaxIntFld'] = cmds.intField(v=10) cmds.setParent('..') cls.widgets['tyRowColLo'] = cmds.rowColumnLayout(numberOfColumns=4, columnOffset=[ (1, 'left', 5), (2, 'left', 5), (4, 'right', 5) ], columnWidth=[(3, 40), (4, 40)]) cls.widgets['tyChkBox'] = cmds.checkBox(label='') cmds.text(label='TranslateY Min/Max: ') cls.widgets['tyMinIntFld'] = cmds.intField(v=-10) cls.widgets['tyMaxIntFld'] = cmds.intField(v=10) cmds.setParent('..') cls.widgets['tzRowColLo'] = cmds.rowColumnLayout(numberOfColumns=4, columnOffset=[ (1, 'left', 5), (2, 'left', 5), (4, 'right', 5) ], columnWidth=[(3, 40), (4, 40)]) cls.widgets['tzChkBox'] = cmds.checkBox(label='') cmds.text(label='TranslateZ Min/Max: ') cls.widgets['tzMinIntFld'] = cmds.intField(v=-10) cls.widgets['tzMaxIntFld'] = cmds.intField(v=10) cmds.setParent('..') cmds.separator(style='in', h=5) cls.widgets['rxRowColLo'] = cmds.rowColumnLayout(numberOfColumns=4, columnOffset=[ (1, 'left', 5), (2, 'left', 5), (4, 'right', 5) ], columnWidth=[(3, 40), (4, 40)]) cls.widgets['rxChkBox'] = cmds.checkBox(label='') cmds.text(label='RotateX Min/Max: ') cls.widgets['rxMinIntFld'] = cmds.intField(v=-60) cls.widgets['rxMaxIntFld'] = cmds.intField(v=60) cmds.setParent('..') cls.widgets['ryRowColLo'] = cmds.rowColumnLayout(numberOfColumns=4, columnOffset=[ (1, 'left', 5), (2, 'left', 5), (4, 'right', 5) ], columnWidth=[(3, 40), (4, 40)]) cls.widgets['ryChkBox'] = cmds.checkBox(label='', v=True) cmds.text(label='RotateY Min/Max: ') cls.widgets['ryMinIntFld'] = cmds.intField(v=-60) cls.widgets['ryMaxIntFld'] = cmds.intField(v=60) cmds.setParent('..') cls.widgets['rzRowColLo'] = cmds.rowColumnLayout(numberOfColumns=4, columnOffset=[ (1, 'left', 5), (2, 'left', 5), (4, 'right', 5) ], columnWidth=[(3, 40), (4, 40)]) cls.widgets['rzChkBox'] = cmds.checkBox(label='', v=True) cmds.text(label='RotateZ Min/Max: ') cls.widgets['rzMinIntFld'] = cmds.intField(v=-60) cls.widgets['rzMaxIntFld'] = cmds.intField(v=60) cmds.setParent('..') cmds.separator(style='in', h=5) # cls.widgets['sFrmRowColLo'] = cmds.rowColumnLayout(numberOfColumns = 2, columnOffset = [(1, 'left', 5), (2, 'left', 5)], columnWidth = [(2, 40)]) # cmds.text(label = 'Start Frame: ') # cls.widgets['sFrmIntFld'] = cmds.intField(v = 1) # cmds.setParent('..') # cmds.separator(style = 'in', h = 5) cmds.button(label='Apply', h=50, c=Functions.apply) cmds.window(cls.winName, e=True, w=150, h=150) cmds.showWindow(cls.winName)
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 Leg Root: ") mc.text(l="") mc.separator(st="in", h=17, w=500) mc.setParent("..") mc.rowColumnLayout(nc=3, cw=[(1, 125), (2, 150), (3, 150)], cs=[1, 5], rs=[1, 3], cal=( [1, "left"], [2, "left"], [3, "left"], )) mc.text(l="Mirror Leg As Well?") # mc.setParent("..") mc.radioButtonGrp( "selLegMirrorType_rbg", la2=["No", "Yes"], nrb=2, sl=2, cw2=[50, 50], ) mc.text(l="") mc.checkBox("selCreateTwists_cb", l="Create Twists", en=True, v=True) mc.checkBox("selSpineEnd_cb", l="Connect To Hip", en=True, v=True) mc.checkBox("selFKSwitch_cb", l="Create FK Switch", en=True, v=True) mc.setParent("..") mc.separator(st="in", h=17, w=500) mc.rowColumnLayout(nc=3, cw=[(1, 100), (2, 200), (3, 150)], cs=[1, 5], rs=[1, 3], cal=( [1, "left"], [2, "left"], [3, "left"], )) mc.text(l="Initial Limb: ") mc.radioButtonGrp( "selLegType_rbg", la2=["Left", "Right"], nrb=2, sl=1, cw2=[50, 50], ) mc.setParent("..") 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="Leg: ") mc.textFieldButtonGrp("jointLoad_tfbg", cw=(1, 322), bl=" Load ") mc.text(bgc=(0.85, 0.65, 0.25), l="FKIK Ctrl: ") mc.textFieldButtonGrp("ctrlFKIKSwitch_tfbg", cw=(1, 322), bl=" Load ", tx="CTRL_fkikSwitch") mc.text(bgc=(0.85, 0.65, 0.25), l="FK Hip CTRL: ") mc.textFieldButtonGrp("ctrlFKHipLoad_tf", cw=(1, 322), bl=" Load ", tx="CTRL_FK_hip") mc.setParent("..") mc.separator(st="in", h=17, w=500) 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="IK Hip CTRL: ") mc.textFieldButtonGrp("ctrlIKHip_tfbg", cw=(1, 322), bl=" Load ", tx="CTRL_IK_hip") mc.text(bgc=(0.85, 0.65, 0.25), l="COG CTRL: ") mc.textFieldButtonGrp("ctrlCOG_tfbg", cw=(1, 322), bl=" Load ", tx="CTRL_COG") mc.text(bgc=(0.85, 0.65, 0.25), l="Group LOC Follow: ") mc.textFieldButtonGrp("grpLOCFollow_tfbg", cw=(1, 322), bl=" Load ", tx="GRP_LOC_follow") mc.setParent("..") mc.separator(st="in", h=10, w=500) mc.rowColumnLayout(nc=2, cw=[(1, 100), (2, 370)], cs=[1, 5], rs=[1, 3]) mc.checkBox("selGeo_cb", l="Affect Geometry", en=True, v=True) mc.setParent("..") # load buttons # mc.textFieldButtonGrp("jointLoad_tfbg", e=True, bc=self.loadSrc1Btn) mc.textFieldButtonGrp("ctrlFKHipLoad_tf", e=True, bc=self.loadSrc2Btn) mc.textFieldButtonGrp("ctrlFKIKSwitch_tfbg", e=True, bc=self.loadSrc3Btn) mc.textFieldButtonGrp("ctrlIKHip_tfbg", e=True, bc=self.loadSrc4Btn) mc.textFieldButtonGrp("ctrlCOG_tfbg", e=True, bc=self.loadSrc5Btn) mc.textFieldButtonGrp("grpLOCFollow_tfbg", e=True, bc=self.loadSrc6Btn) self.selLoad = [] self.jointArray = [] mc.showWindow(self.window)
def create_ui(self, pWindowTitle, pApplyCallBack, pSavePreset, pLoadPreset): windowID = 'miniTree' if cmds.window(windowID, exists=True): cmds.deleteUI(windowID) cmds.window(windowID, title=pWindowTitle, sizeable=False, resizeToFitChildren=True, w = 100) cmds.rowColumnLayout(numberOfColumns=1) logopath = cmds.internalVar(upd=True) + "icons/mini_tree_logo.png" cmds.image(image=logopath) cmds.separator(h=10, style='none') cmds.setParent('..') form = cmds.formLayout() tabs = cmds.tabLayout(innerMarginWidth=5, innerMarginHeight=5) cmds.formLayout(form, edit=True, attachForm=((tabs, 'top', 0), (tabs, 'left', 0), (tabs, 'bottom', 0), (tabs, 'right', 0))) child1 = cmds.rowColumnLayout(numberOfColumns=1) cmds.separator(h=10, style='in') cmds.text(label='General', align='center') cmds.separator(h=10, style='in') polyNumberField = cmds.intSliderGrp("polyNumberField", label='Polygons:', min=3, max=20, value=4, step=1, field=True, annotation='Changes number of polygons in each tree segment') treeDepthField = cmds.intSliderGrp("treeDepthField", label='Levels (tree size):', min=1, max=8, value=3, step=1, field=True, annotation='Changes number of branching levels') treeFirstSegmentLength = cmds.floatSliderGrp("treeFirstSegmentLength", label='Base length:', min=0.1, max=5, value=1, step=0.1, field=True, annotation='Increases/decreases the length of the first tree segment') cmds.separator(h=10, style='in') cmds.text(label='Branch length', align='center') cmds.separator(h=10, style='in') treeSegmentLength = cmds.floatSliderGrp("treeSegmentLength", label='Length:', min=0.2, max=20, value=5, step=0.1, field=True, annotation='Changes the initial length of each branch') treeLengthDecrease = cmds.floatSliderGrp("treeLengthDecrease", label='Decrease:', min=0.0, max=1, value=0.8, step=0.01, field=True, annotation='Affects how the length of each branch decreases as the tree grows') cmds.separator(h=10, style='in') cmds.text(label='Trunk/branch radius', align='center') cmds.separator(h=10, style='in') trunkRadius = cmds.floatSliderGrp("trunkRadius", label='Radius:', min=0.1, max=10, value=1, step=0.1, field=True, annotation='Changes the initial radius of the tree trunk') radiusDecrease = cmds.floatSliderGrp("radiusDecrease", label='Decrease:', min=0.0, max=1, value=0.45, step=0.01, field=True, annotation='Affects how the radius of the branches decreases as the tree grows') cmds.separator(h=10, style='in') cmds.text(label='Branching', align='center') cmds.separator(h=10, style='in') treeBranches = cmds.intSliderGrp("treeBranches", label='Max branches:', min=1, max=8, value=2, step=1, field=True, annotation='Changes the maximum number of branches that may occur when branching') treeBranches_a = cmds.floatSliderGrp("treeBranches_a", label='Branches angle:', min=0, max=math.pi, value=0.5, step=0.01, field=True, annotation='Manipulates the angle of braches') cmds.separator(h=10, style='in') cmds.text(label='Randomness', align='center') cmds.separator(h=10, style='in') branchingChance = cmds.floatSliderGrp("branchingChance", label='Branching chance:', min=0, max=1, value=0.9, step=0.01, field=True, annotation='Lower values increase a chance of a branch not appearing') cmds.separator(h=10, style='in') branchAngleChance = cmds.floatSliderGrp("branchAngleChance", label='Angle shift shance:', min=0, max=1, value=0.9, step=0.01, field=True, annotation='Chance of a branch angle deviating from the angle of all other branches') branchAngleRAmount = cmds.floatSliderGrp("branchAngleRAmount", label='Angle random amount:', min=0, max=math.pi, value=math.pi / 6, step=0.01, field=True, annotation='Angle of how much a branch angle can change randomly') cmds.separator(h=10, style='in') branchTurnChance = cmds.floatSliderGrp("branchTurnChance", label='Turn shift chance:', min=0, max=1, value=0.9, step=0.01, field=True, annotation='Chance of a branch turn deviating from the turn of all other branches') branchTurnRAmount = cmds.floatSliderGrp("branchTurnRAmount", label='Turn random amount:', min=0, max=math.pi, value=math.pi / 2, step=0.01, field=True, annotation='Angle of how much a branch can turn randomly') cmds.separator(h=10, style='in') cmds.text(label='Colour', align='center') cmds.separator(h=10, style='in') treeColor = cmds.colorSliderGrp("treeColor", label='Tree colour:', rgb=(0.4, 0.3, 0.3), annotation='Double click the colour to open the palette, changes tree colour') cmds.separator(h=10, style='none') cmds.setParent('..') child2 = cmds.rowColumnLayout(numberOfColumns=1) cmds.separator(h=10, style='in') cmds.text(label='General', align='center') cmds.separator(h=10, style='in') treeFoliageSze = cmds.floatSliderGrp("treeFoliageSze", label='Size:', min=0.1, max=6, value=1, step=0.01, field=True, annotation='Size of each foliage sphere') treeFoliageRes = cmds.intSliderGrp("treeFoliageRes", label='Resolution:', min=0, max=4, value=1, step=1, field=True, annotation='Subdivides each of the foliage spheres') cmds.separator(h=10, style='in') cmds.text(label='More foliage', align='center') cmds.separator(h=10, style='in') treeFoliageNumber = cmds.intSliderGrp("treeFoliageNumber", label='Spheres number:', min=1, max=20, value=1, step=1, field=True, annotation='Number of foliage spheres per branch') treeFoliageSpread = cmds.floatSliderGrp("treeFoliageSpread", label='Randomise positions:', min=0, max=5, value=0, step=0.01, field=True, annotation='Randomise the foliage spheres position (necessary when changing foliage number)') cmds.separator(h=10, style='in') cmds.text(label='Colour', align='center') cmds.separator(h=10, style='in') foliageColor = cmds.colorSliderGrp("foliageColor", label='Foliage colour:', rgb=(0.30, 0.7, 0.40), annotation='Double click the colour to open the palette, changes foliage colour') cmds.separator(h=10, style='none') cmds.setParent('..') cmds.tabLayout(tabs, edit=True, tabLabel=((child1, 'Tree'), (child2, 'Foliage'))) cmds.setParent('..') cmds.setParent('..') cmds.rowColumnLayout(numberOfColumns=1) treeTypeSelect = cmds.radioButtonGrp("treeTypeSelect", label='Tree type', sl=1, labelArray2=['Normal', 'Pine'], numberOfRadioButtons=2) cmds.separator(h=10, style='none') def changeTextFld(*args): cmds.intFieldGrp("randomSeed", edit=True, v1=random.randint(0, 9999)) cmds.separator(h=10, style='none') cmds.separator(h=10, style='none') cmds.rowColumnLayout(numberOfColumns=2) cmds.button(label='Randomize seed', command=changeTextFld, annotation='Changes seed value to a random value') randomSeed = cmds.intFieldGrp("randomSeed", label='Seed:', numberOfFields=1, value1=9981, annotation='Number affecting random generation of the tree') #cmds.separator(h=10, style='none') cmds.setParent('..') cmds.separator(h=10, style='none') cmds.separator(h=10, style='in') cmds.separator(h=10, style='none') cmds.rowColumnLayout(numberOfColumns=3, columnWidth=[(1, 300),(2, 20), (3, 100)]) cmds.button(label='Create tree', h = 60, align='center', annotation='Create a tree using the above settings', command=functools.partial(pApplyCallBack, polyNumberField, treeDepthField, treeSegmentLength, treeLengthDecrease, trunkRadius, radiusDecrease, treeBranches, treeBranches_a, treeFoliageSze, treeFoliageRes, randomSeed, foliageColor, treeColor, treeFoliageNumber, treeFoliageSpread, treeFirstSegmentLength, treeTypeSelect, branchingChance, branchAngleChance, branchTurnChance, branchTurnRAmount, branchAngleRAmount )) cmds.separator(h=10, style='none') cmds.rowColumnLayout(numberOfColumns=1, columnWidth=[(1, 90)]) cmds.button(label='Save preset', annotation='Saves current settings as a preset', command=functools.partial(pSavePreset, polyNumberField, treeDepthField, treeSegmentLength, treeLengthDecrease, trunkRadius, radiusDecrease, treeBranches, treeBranches_a, treeFoliageSze, treeFoliageRes, randomSeed, foliageColor, treeColor, treeFoliageNumber, treeFoliageSpread, treeFirstSegmentLength, treeTypeSelect, branchingChance, branchAngleChance, branchTurnChance, branchTurnRAmount, branchAngleRAmount )) cmds.separator(h=10, style='none') cmds.button(label='Load preset', annotation='Loads current settings as a preset', command=functools.partial(pLoadPreset)) cmds.separator(h=10, style='in') cmds.text('preset_text', label='default', align='center') cmds.setParent('..') cmds.setParent('..') cmds.helpLine() def cancelCallBack(*pArgs): if cmds.window(windowID, exists=True): cmds.deleteUI(windowID) # cmds.button(label='Cancel', command=cancelCallBack) cmds.showWindow()
def build_gui_gt_check_for_updates(): ''' Build a GUI to show current and latest versions ''' window_name = "build_gui_gt_check_for_updates" if cmds.window(window_name, exists=True): cmds.deleteUI(window_name, window=True) cmds.window(window_name, title= 'GT Check for Updates - (v' + script_version + ')', 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 title_bgc_color = (.4, .4, .4) cmds.separator(h=12, style='none') # Empty Space cmds.rowColumnLayout(nc=1, cw=[(1, 410)], cs=[(1, 10)], p="main_column") # Window Size Adjustment cmds.rowColumnLayout(nc=1, cw=[(1, 400)], cs=[(1, 10)], p="main_column") # Title Column cmds.text("GT Check for Updates", bgc=title_bgc_color, fn="boldLabelFont", align="center") cmds.separator(h=10, style='none', p="main_column") # Empty Space # Body ==================== checklist_spacing = 4 cmds.text(l='\ngithub.com/TrevisanGMW/gt-tools', align="center") cmds.separator(h=7, style='none') # Empty Space general_column_width = [(1, 210),(2, 110),(4, 37)] cmds.rowColumnLayout(nc=3, cw=general_column_width, cs=[(1, 18),(2, 0),(3, 0),(4, 0)], p="main_column") cmds.text(l='Status:', align="center", fn="boldLabelFont") update_status = cmds.text(l='...', align="center") cmds.separator(h=7, style='none') # Empty Space cmds.separator(h=7, style='none') # Empty Space cmds.rowColumnLayout(nc=3, cw=general_column_width, cs=[(1, 18),(2, 0),(3, 0),(4, 0)], p="main_column") cmds.text(l='Web Response:', align="center", fn="boldLabelFont") web_response_text = cmds.text(l='...', align="center", fn="tinyBoldLabelFont", bgc=(1, 1, 0)) cmds.separator(h=7, style='none') # Empty Space cmds.separator(h=7, style='none') # Empty Space cmds.rowColumnLayout(nc=3, cw=general_column_width, cs=[(1, 18),(2, 0),(3, 0),(4, 0)], p="main_column") cmds.text(l='Installed Version:', align="center", fn="boldLabelFont") installed_version_text = cmds.text(l='...', align="center") cmds.separator(h=7, style='none') # Empty Space cmds.separator(h=7, style='none') # Empty Space cmds.rowColumnLayout(nc=3, cw=general_column_width, cs=[(1, 18),(2, 0),(3, 0),(4, 0)], p="main_column") cmds.text(l='Latest Release:', align="center", fn="boldLabelFont") latest_version_text = cmds.text(l='...', align="center") cmds.separator(h=7, style='none') # Empty Space cmds.separator(h=15, style='none') # Empty Space # Changelog ============= cmds.rowColumnLayout(nc=1, cw=[(1, 400)], cs=[(1, 10)], p="main_column") cmds.text(l='Latest Release Changelog:', align="center", fn="boldLabelFont") cmds.text(l='Use the refresh button to check again:', align="center", fn="smallPlainLabelFont") cmds.separator(h=checklist_spacing, style='none') # Empty Space output_scroll_field = cmds.scrollField(editable=False, wordWrap=True, fn="obliqueLabelFont") cmds.separator(h=10, style='none') # Empty Space # Refresh Button cmds.rowColumnLayout(nc=2, cw=[(1, 280),(2, 115)], cs=[(1,10),(2,5)], p="main_column") auto_update_btn = cmds.button(l='Auto Check For Updates: Activated', h=30, c=lambda args: toggle_auto_updater()) auto_updater_interval_btn = cmds.button(l='Interval: 15 days', h=30, c=lambda args: change_auto_update_interval()) cmds.rowColumnLayout(nc=1, cw=[(1, 400)], cs=[(1,10)], p="main_column") cmds.separator(h=5, style='none') cmds.button(l='Refresh', h=30, c=lambda args: reroute_errors('check_for_updates')) cmds.separator(h=8, style='none') update_btn = cmds.button(l='Update', h=30, en=False, c=lambda args: reroute_errors('open_releases_page')) 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) if python_version == 3: widget = wrapInstance(int(qw), QWidget) else: widget = wrapInstance(long(qw), QWidget) icon = QIcon(':/SP_FileDialogToParent_Disabled.png') widget.setWindowIcon(icon) def toggle_auto_updater(refresh_only=False): ''' Toggle the auto check for updates button while updating an optionVar that controls this behaviour Parameters: refresh_only (bool): Is it only refreshing or toggling? ''' persistent_auto_updater_exists = cmds.optionVar(exists=('gt_check_for_updates_auto_active')) if persistent_auto_updater_exists: current_status = bool(cmds.optionVar(q=("gt_check_for_updates_auto_active"))) else: current_status = gt_check_for_updates.get('def_auto_updater_status') if refresh_only: if current_status: cmds.button(auto_update_btn, e=True, label='Auto Check For Updates: Activated') cmds.button(auto_updater_interval_btn, e=True, en=True) else: cmds.button(auto_update_btn, e=True, label='Auto Check For Updates: Deactivated') cmds.button(auto_updater_interval_btn, e=True, en=False) if not refresh_only: if current_status: cmds.button(auto_update_btn, e=True, label='Auto Check For Updates: Deactivated') cmds.optionVar( iv=('gt_check_for_updates_auto_active', int(False))) cmds.button(auto_updater_interval_btn, e=True, en=False) else: cmds.button(auto_update_btn, e=True, label='Auto Check For Updates: Activated') cmds.optionVar( iv=('gt_check_for_updates_auto_active', int(True))) cmds.button(auto_updater_interval_btn, e=True, en=True) def change_auto_update_interval(refresh_only=False): ''' Toggle the auto check for updates button while updating an optionVar that controls this behaviour Parameters: refresh_only (bool): Is it only refreshing or toggling? ''' check_interval = gt_check_for_updates.get('def_auto_updater_interval') persistent_check_interval_exists = cmds.optionVar(exists=('gt_check_for_updates_interval_days')) if persistent_check_interval_exists: check_interval = int(cmds.optionVar(q=("gt_check_for_updates_interval_days"))) interval_list = {'five_days' : 5, 'half_month' : 15, 'one_month' : 30, 'three_months' : 91, 'six_months': 182, 'one_year': 365} if not refresh_only: if check_interval == interval_list.get('five_days'): check_interval = interval_list.get('half_month') cmds.optionVar( iv=('gt_check_for_updates_interval_days', int(check_interval))) elif check_interval == interval_list.get('half_month'): check_interval = interval_list.get('one_month') cmds.optionVar( iv=('gt_check_for_updates_interval_days', int(check_interval))) elif check_interval == interval_list.get('one_month'): check_interval = interval_list.get('three_months') cmds.optionVar( iv=('gt_check_for_updates_interval_days', int(check_interval))) elif check_interval == interval_list.get('three_months'): check_interval = interval_list.get('six_months') cmds.optionVar( iv=('gt_check_for_updates_interval_days', int(check_interval))) elif check_interval == interval_list.get('six_months'): check_interval = interval_list.get('one_year') cmds.optionVar( iv=('gt_check_for_updates_interval_days', int(check_interval))) elif check_interval == interval_list.get('one_year'): check_interval = interval_list.get('five_days') # Restart cmds.optionVar( iv=('gt_check_for_updates_interval_days', int(check_interval))) new_interval = '' if check_interval == interval_list.get('half_month') or check_interval == interval_list.get('one_month') or check_interval == interval_list.get('five_days'): new_interval = str(check_interval) + ' days' elif check_interval == interval_list.get('three_months'): new_interval = '3 months' elif check_interval == interval_list.get('six_months'): new_interval = '6 months' elif check_interval == interval_list.get('one_year'): new_interval = '1 year' cmds.button(auto_updater_interval_btn, e=True, label='Interval: ' + new_interval) def reroute_errors(operation): ''' Wrap functions around a try and catch to avoid big crashes during runtime ''' try: if operation == 'open_releases_page': open_releases_page() else: check_for_updates() except Exception as exception: cmds.scrollField(output_scroll_field, e=True, clear=True) cmds.scrollField(output_scroll_field, e=True, ip=0, it=str(exception) + '\n') def open_releases_page(): ''' Opens a web browser with the latest release ''' cmds.showHelp ('https://github.com/TrevisanGMW/gt-tools/releases/latest', absolute=True) def check_for_updates(): ''' Compare versions and update text accordingly It uses "get_github_release" to check for updates ''' def execute_operation(): # Define Current Version stored_gt_tools_version_exists = cmds.optionVar(exists=("gt_tools_version")) if stored_gt_tools_version_exists: gt_check_for_updates['current_version'] = "v" + str(cmds.optionVar(q=("gt_tools_version"))) else: gt_check_for_updates['current_version'] = 'v0.0.0' # Retrive Latest Version response_list = get_github_release(gt_tools_latest_release_api) gt_check_for_updates['latest_version'] = response_list[0].get('tag_name') or "v0.0.0" success_codes = [200, 201, 202, 203, 204, 205, 206] web_response_color = (0, 1, 0) if response_list[1] not in success_codes: web_response_color = (1, .5, .5) cmds.text(web_response_text, e=True, l=response_list[2], bgc=web_response_color) cmds.text(installed_version_text, e=True, l=gt_check_for_updates.get('current_version')) cmds.text(latest_version_text, e=True, l=gt_check_for_updates.get('latest_version')) current_version_int = int(re.sub("[^0-9]", "", str(gt_check_for_updates.get('current_version')))) latest_version_int = int(re.sub("[^0-9]", "", str(gt_check_for_updates.get('latest_version')))) current_version_major = int(re.sub("[^0-9]", "", str(gt_check_for_updates.get('current_version')).split('.')[0])) current_version_minor = int(re.sub("[^0-9]", "", str(gt_check_for_updates.get('current_version')).split('.')[1])) current_version_patch = int(re.sub("[^0-9]", "", str(gt_check_for_updates.get('current_version')).split('.')[2])) latest_version_major = int(re.sub("[^0-9]", "", str(gt_check_for_updates.get('latest_version')).split('.')[0])) latest_version_minor = int(re.sub("[^0-9]", "", str(gt_check_for_updates.get('latest_version')).split('.')[1])) latest_version_patch = int(re.sub("[^0-9]", "", str(gt_check_for_updates.get('latest_version')).split('.')[2])) current_state = 'unknown' # Check Major if current_version_major < latest_version_major: current_state = 'update' elif current_version_major > latest_version_major: current_state = 'unreleased' else: current_state = 'same' # Check Minor if current_state == 'same': if current_version_minor < latest_version_minor: current_state = 'update' elif current_version_minor > latest_version_minor: current_state = 'unreleased' else: current_state = 'same' # Check Patch if current_state == 'same': if current_version_patch < latest_version_patch: current_state = 'update' elif current_version_patch > latest_version_patch: current_state = 'unreleased' if current_state == 'update': cmds.button(update_btn, e=True, en=True, bgc=(.6, .6, .6)) cmds.text(update_status, e=True, l="New Update Available!", fn="tinyBoldLabelFont", bgc=(1, .5, .5)) elif current_state == 'unreleased': cmds.text(update_status, e=True, l="Unreleased update!", fn="tinyBoldLabelFont", bgc=(.7, 0 , 1)) cmds.button(update_btn, e=True, en=False) elif current_state == 'same': cmds.text(update_status, e=True, l="You're up to date!", fn="tinyBoldLabelFont", bgc=(0, 1, 0)) cmds.button(update_btn, e=True, en=False) else: cmds.text(update_status, e=True, l="Unknown!", fn="tinyBoldLabelFont", bgc=(0, 0, 0)) cmds.button(update_btn, e=True, en=False) published_at = '' try: published_at = response_list[0].get('published_at').split('T')[0] except: pass cmds.scrollField(output_scroll_field, e=True, clear=True) cmds.scrollField(output_scroll_field, e=True, ip=0, it=(response_list[0].get('tag_name') + (' ' * 80) + '(' + published_at + ')\n')) cmds.scrollField(output_scroll_field, e=True, ip=0, it=response_list[0].get('body')) if latest_version_int != 0: try: previous_version = '' if latest_version_patch != 0: previous_version = 'v' + str(latest_version_major) + '.' + str(latest_version_minor) + '.' + str(latest_version_patch-1) else: if latest_version_minor != 0: previous_version = 'v' + str(latest_version_major) + '.' + str(latest_version_minor-1) + '.' + str(latest_version_patch) else: if latest_version_major != 0: previous_version = 'v' + str(latest_version_major-1) + '.' + str(latest_version_minor) + '.' + str(latest_version_patch) previous_version_major = int(re.sub("[^0-9]", "", str(previous_version.split('.')[0]))) previous_version_minor = int(re.sub("[^0-9]", "", str(previous_version.split('.')[1]))) previous_version_patch = int(re.sub("[^0-9]", "", str(previous_version.split('.')[2]))) before_previous_version = '' if previous_version_patch != 0: before_previous_version = 'v' + str(previous_version_major) + '.' + str(previous_version_minor) + '.' + str(previous_version_patch-1) else: if previous_version_minor != 0: before_previous_version = 'v' + str(previous_version_major) + '.' + str(previous_version_minor-1) + '.' + str(previous_version_patch) else: if previous_version_major != 0: before_previous_version = 'v' + str(previous_version_major-1) + '.' + str(previous_version_minor) + '.' + str(previous_version_patch) previous_version_response = get_github_release(gt_tools_tag_release_api + previous_version) before_previous_version_response = get_github_release(gt_tools_tag_release_api + before_previous_version) if previous_version_response[1] in success_codes: published_at = '' try: published_at = previous_version_response[0].get('published_at').split('T')[0] except: pass cmds.scrollField(output_scroll_field, e=True, ip=0, it='\n\n' + (previous_version_response[0].get('tag_name') + (' ' * 80) + '(' + published_at + ')\n')) cmds.scrollField(output_scroll_field, e=True, ip=0, it=previous_version_response[0].get('body')) if before_previous_version_response[1] in success_codes: published_at = '' try: published_at = before_previous_version_response[0].get('published_at').split('T')[0] except: pass cmds.scrollField(output_scroll_field, e=True, ip=0, it='\n\n' + (before_previous_version_response[0].get('tag_name') + (' ' * 80) + '(' + published_at + ')\n')) cmds.scrollField(output_scroll_field, e=True, ip=0, it=before_previous_version_response[0].get('body')) except: pass if response_list[1] not in success_codes: cmds.text(update_status, e=True, l="Unknown", fn="tinyBoldLabelFont", bgc=(1, .5, .5)) cmds.scrollField(output_scroll_field, e=True, ip=1, it='') # Bring Back to the Top # Threaded Operation def threaded_operation(): try: utils.executeDeferred(execute_operation) except Exception as e: print(e) thread = threading.Thread(None, target = threaded_operation) thread.start() # Refresh When Opening reroute_errors('') # Refresh Buttons toggle_auto_updater(refresh_only=True) change_auto_update_interval(refresh_only=True)
def run(self, title_ui): if cmds.window(self.name, exists=True): cmds.deleteUI(self.name) #create the main window main_window = cmds.window(self.name, title=title_ui, sizeable=True) # create first main buttons main_layout = cmds.rowColumnLayout(numberOfRows=2) main_buttons = cmds.rowColumnLayout(numberOfColumns=3, parent=main_layout) cmds.button(label='Check Directory', backgroundColor=[0.243, 0.8, 0.792], parent=main_buttons) cmds.button(label='Directory Path', backgroundColor=[0.235, 0.709, 0.188], parent=main_buttons) cmds.button(label='Create Directory', backgroundColor=[0.972, 0.478, 0.086], parent=main_buttons) cmds.setParent( '..' ) #tab layout form = cmds.formLayout() tabs = cmds.tabLayout(innerMarginWidth=20, innerMarginHeight=20) cmds.formLayout( form, edit=True, attachForm=((tabs, 'top', 0), (tabs, 'left', 0), (tabs, 'bottom', 0), (tabs, 'right', 0)), parent=main_layout ) import_layout = cmds.rowColumnLayout(numberOfColumns=2) cmds.button(label='Import', parent=import_layout) cmds.setParent( '..' ) export_layout = cmds.rowColumnLayout(numberOfRows=4) # type of export type_export_layout = cmds.rowColumnLayout(numberOfColumns=3, columnSpacing=((2, 10), (3, 20))) cmds.text(label='Type of Export:', align='right', parent=type_export_layout) cmds.radioCollection(parent=type_export_layout) cmds.radioButton(label='Latest') cmds.radioButton(label='Custom') cmds.setParent( '..' ) # textfield for file file_export_layout = cmds.rowColumnLayout(numberOfColumns=2, columnSpacing=(2, 10)) file_label = cmds.text(label='File:', align='right', parent=file_export_layout) file_txt_field = cmds.textField(parent=file_export_layout) cmds.setParent( '..' ) # type of selection type_sel_export_layout = cmds.rowColumnLayout(numberOfColumns=3, columnSpacing=(2, 10)) cmds.text(label='Hierarchy:', align='right', parent=type_sel_export_layout) cmds.radioCollection(parent=type_sel_export_layout) cmds.radioButton(label='All') cmds.radioButton(label='Selected') cmds.setParent( '..' ) # operation tab button button_export_layout = cmds.rowColumnLayout(numberOfColumns=1, columnSpacing=(2, 10)) cmds.button(label='Export', parent=button_export_layout) # build the tabs layout cmds.tabLayout( tabs, edit=True, tabLabel=((import_layout, 'import'), (export_layout, 'export'))) #tabs import Export # Display the window cmds.showWindow() return 0
("pink", 9, (.8, .2, .8)), ("light pink", 20, ( 1, .8, 1)) ) wv = 25 winID = 'setNurbOverrideColorPanel' #Create Window with buttons for each color override if cmds.window(winID, exists=True): cmds.deleteUI(winID) cmds.window(winID, title='Override NURB Color') cmds.columnLayout(adjustableColumn=True, rowSpacing=5, width=200) cmds.frameLayout(label='NURBS Colours', labelAlign='top') cmds.rowColumnLayout(numberOfRows=1 ) for button in buttons_one: cmds.button(label='', annotation=button[0], width=wv, command=partial(setNurbOverrideColor, button[1]), backgroundColor=button[2]) cmds.setParent('..') cmds.rowColumnLayout(numberOfRows=1 ) for button in buttons_two: cmds.button(label='', annotation=button[0], width=wv, command=partial(setNurbOverrideColor, button[1]), backgroundColor=button[2]) cmds.setParent('..') cmds.showWindow()
def __init__(self, parent): MelForm.__init__(self, parent) self.sortBySrcs = True #otherwise it sorts by tgts when doing traces self._clipPreset = None self.UI_mapping = mappingEditor.MappingForm(self) self.UI_options = MelFrame( self, l="xfer options", labelVisible=True, collapsable=False, collapse=False, h=115, borderStyle='etchedIn' ) #need to specify the height for 2011 coz its ghey! cmd.columnLayout(adjustableColumn=True, rowSpacing=5) cmd.rowLayout(numberOfColumns=2, columnWidth2=(175, 165), columnAttach=((1, "both", 5), (2, "both", 5))) cmd.columnLayout(adjustableColumn=True) self.UI_radios = cmd.radioCollection() self.RAD_dupe = cmd.radioButton(l="duplicate nodes", align='left', sl=True, cc=self.on_update) self.RAD_copy = cmd.radioButton(l="copy/paste keys", align='left', cc=self.on_update) self.RAD_trace = cmd.radioButton(l="trace objects", align='left', cc=self.on_update) setParent('..') cmd.columnLayout(adjustableColumn=True) self.UI_check1 = cmd.checkBox(l="instance animation") self.UI_check2 = cmd.checkBox(l="match rotate order", v=1) self.UI_check3 = cmd.checkBox(l="", vis=0, v=0) self.UI_check4 = cmd.checkBox(l="", vis=0, v=1) setParent('..') setParent('..') cmd.rowColumnLayout(numberOfColumns=7, columnWidth=((1, 75), (2, 95), (3, 35), (4, 45), (5, 35), (6, 45)), columnAttach=((1, "both", 1), (2, "both", 1), (3, "both", 1), (4, "both", 1), (5, "both", 5), (6, "both", 1), (7, "both", 5))) self.UI_keysOnly = cmd.checkBox(l="keys only", v=0, cc=self.on_update) self.UI_withinRange = cmd.checkBox(l="within range:", v=0, cc=self.on_update) cmd.text(l="start ->") self.UI_start = cmd.textField(en=0, tx='!') cmd.popupMenu(p=self.UI_start, b=3, pmc=self.buildTimeMenu) cmd.text(l="end ->") self.UI_end = cmd.textField(en=0, tx='!') cmd.popupMenu(p=self.UI_end, b=3, pmc=self.buildTimeMenu) cmd.setParent(self) UI_button = cmd.button(l='Xfer Animation', c=self.on_xfer) self(e=True, af=((self.UI_mapping, 'top', 0), (self.UI_mapping, 'left', 0), (self.UI_mapping, 'right', 0), (self.UI_options, 'left', 0), (self.UI_options, 'right', 0), (UI_button, 'left', 0), (UI_button, 'right', 0), (UI_button, 'bottom', 0)), ac=((self.UI_mapping, 'bottom', 0, self.UI_options), (self.UI_options, 'bottom', 0, UI_button))) self.on_update() #set initial state
def showUI(self, checkOffList=[]): if cmds.window('udimConvertWindow', q=1, exists=1): cmds.deleteUI('udimConvertWindow') cmds.window('udimConvertWindow', title='Convert UDIM Textures') self.mainScroll = cmds.scrollLayout() mainCol = cmds.rowColumnLayout(nc=1) cmds.rowColumnLayout(nc=4) cmds.button(l='Extract UDIM to Chain', h=30, c=lambda *args: self.convertNodes()) self.createContainerCB = cmds.checkBox(l='Create Container', v=0) #~ cmds.button(l='Convert back to UDIM',visible=0) cmds.button(l='Delete The Trash', c=lambda *args: self.deleteSuperfluousTextures()) cmds.button(l='Refresh', c=lambda *args: self.refresh()) cmds.setParent('..') self.checkDict = {} self.getTextures() # get self.udimTextures, self.bigTextures cmds.frameLayout(collapsable=1, label='Udim Textures') udimRC = cmds.rowColumnLayout(nc=1) for i in sorted(self.udimTextures.keys(), key=lambda x: os.path.basename(x).lower()): texPath = self.udimTextures[i][0] numList = self.udimTextures[i][1] fileNodes = self.udimTextures[i][2:] cmds.text(l='', h=5, bgc=[0.2] * 3) tmpFL = cmds.formLayout() tmpBtn = cmds.iconTextButton(l=' ' + os.path.basename(texPath) + u' (%i节点, %i纹理)' % (len(fileNodes), len(numList)), ann=texPath.replace('/', '\\'), w=350, h=20, flat=0, st='iconAndTextHorizontal') tmpCB = cmds.checkBox(l='', h=20, v=1) cmds.setParent(udimRC) tmpFrm = cmds.frameLayout(labelVisible=0, collapsable=1, collapse=1) cmds.rowColumnLayout(nc=2) cmds.text(l='', w=15) cmds.textField(text=texPath.replace('/', '\\'), editable=0, w=310) cmds.text(l='', w=15) cmds.textField(text=util().intsToStrExpr( [x % 1000 for x in numList]), editable=0, w=310) cbList = [] for j in fileNodes: cmds.text(l='', w=15) if j in checkOffList: cmds.checkBox(tmpCB, e=1, v=0) cbList.append( cmds.checkBox(l=j, ann=j, v=(j not in checkOffList), ofc=lambda a=1, b=tmpCB, c=1: cmds.checkBox( b, e=1, v=0))) self.checkDict[texPath] = cbList for j in cbList: cmds.checkBox( j, e=1, onc=lambda a=1, b=cbList, c=tmpCB, d=1: cmds.checkBox( c, e=1, v=min([1] + [int(cmds.checkBox(x, q=1, v=1)) for x in b]))) cmds.setParent(udimRC) cmds.iconTextButton( tmpBtn, e=1, c=lambda a=1, b=tmpFrm, c=1: cmds.frameLayout( b, e=1, collapse=not cmds.frameLayout(b, q=1, collapse=1))) cmds.checkBox( tmpCB, e=1, onc=lambda a=1, b=cbList, c=1: [cmds.checkBox(x, e=1, v=1) for x in b], ofc=lambda a=1, b=cbList, c=1: [cmds.checkBox(x, e=1, v=0) for x in b], ) cmds.setParent(mainCol) cmds.text(l='', h=8) cmds.frameLayout(collapsable=1, label='Big Textures', visible=0) cmds.setParent('..') cmds.showWindow('udimConvertWindow')
def uiCreation(): if cmds.window( "main", exists = True ): cmds.deleteUI( "main" ) overUI = cmds.window( "main", title=windowName, mxb=False, s=False ) cmds.window( "main", e=True, wh=( 10, 10 ) , rtf=True ) cmds.columnLayout( 'layout1', rs=4, adj=True ) #|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| cmds.frameLayout( 'testestes', l=posScriptLabel, cll=1, bgc=frameColor1, p="main", sbm="Translation script", cc=('cmds.window( "main", e=True, h=10, rtf=True )') ) cmds.floatSliderGrp( "s1", l='Smooth', f=True, min=0.0, max=s1Max, fmx=10, v=goalSmooth, cc=('goalSmooth=printSmoothV()'), pre=2, w=slWidth, ann=goalSmoothAnn, cal=(1, "left"), cw3=( 45, 50, 10 ) ) cmds.floatSliderGrp( "s2", l='Scale', f=True, min=0.0, max=s2Max, fmx=10, v=timeScale, cc=('timeScale=printScaleV()'), pre=2, w=slWidth, ann=timeScaleAnn, cal=(1, "left"), cw3=( 45, 50, 10 ) ) cmds.floatSliderGrp( "s3", l='Weight', f=True, min=0.0, max=s3Max, v=goalW, cc=('goalW=printWeightV()'), pre=2, w=slWidth, ann=goalWeightAnn, cal=(1, "left"), cw3=( 45, 50, 10 ) ) cmds.rowColumnLayout( numberOfColumns=3, columnWidth=[ (1, rW1), (2, rW2), (3, rW3) ] ) cmds.button( label="RESET VALUES", command=( 'resetTranslation()' ), bgc=resValColor1 , h=buttonHeight, ann='Reset all translation values' ) cmds.separator( h=buttonHeight/1.25 , style='none' ) cmds.button( label="RUN TRANSLATION BAKING", command=( 'translationStart()' ), bgc=simColor1 , h=buttonHeight ) #|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| cmds.frameLayout( "rotLayout", l=rotScriptLabel, cll=1, bgc=frameColor1, p="main", sbm="Rotation script", cc=('cmds.window( "main", e=True, h=10, rtf=True )') ) cmds.floatSliderGrp( "s4", l='Smooth', f=True, min=0.0, max=s4Max, fmx=10, v=goalSmoothRot, cc=('goalSmoothRot=printRotSmoothV()'), pre=2, w=slWidth, ann=goalSmoothAnn, cal=(1, "left"), cw3=( 45, 50, 10 ) ) cmds.floatSliderGrp( "s5", l='Scale', f=True, min=0.0, max=s5Max, fmx=10, v=timeScaleRot, cc=('timeScaleRot=printRotScaleV()'), pre=2, w=slWidth, ann=timeScaleAnn, cal=(1, "left"), cw3=( 45, 50, 10 ) ) cmds.floatSliderGrp( "s6", l='Weight', f=True, min=0.0, max=s6Max, v=goalWRot, cc=('goalWRot=printRotWeightV()'), pre=2, w=slWidth, ann=goalWeightAnn, cal=(1, "left"), cw3=( 45, 50, 10 ) ) cmds.rowColumnLayout( numberOfColumns=3, columnWidth=[ (1, rW1), (2, rW2), (3, rW3) ] ) cmds.button( label="RESET VALUES", command=( 'resetRotation()' ), bgc=resValColor2 , h=buttonHeight, ann='Reset all rotation values' ) cmds.separator( h=buttonHeight/1.25 , style='none' ) cmds.button( label="RUN ROTATION BAKING", command=( 'rotationStart()' ), bgc=simColor2 , h=buttonHeight ) #|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| cmds.frameLayout( "buttonLayout", l='OPTIONS', cll=1, bgc=frameColor1, p="main", sbm="Options", cc=('cmds.window( "main", e=True, h=10, rtf=True )') ) cmds.rowColumnLayout( numberOfColumns=3, columnWidth=[ (1, rW1), (2, rW2), (3, rW3) ] ) cmds.separator( h=buttonHeight/4 , style='none' ) cmds.separator( h=buttonHeight/4 , style='none' ) cmds.separator( h=buttonHeight/4 , style='none' ) # checkbox ¹1 cmds.checkBox( "checkCycle", label="Looping animation", v=cycle, cc=( 'cycle=FuncCheckCycle(); cycleInfinity = cycle;' ), bgc=(Bg1, Bg1, Bg1), ann= '''USE 60 FPS Strong recomended to use animation minimum with 1 phase before and after animation cycle. Simple way to do it just use pre and post infinity with "Cycle" option in graph editor. After baking loop animation on layer will be set cycle infinity''' ) cmds.separator( h=buttonHeight/1.25 , style='none' ) # checkbox ¹2 cmds.checkBox( "checkVectorReverse", label="Aim reverse", v=aimVectorReverse, cc=( 'aimVectorReverse=FuncCheckVector()' ), bgc=(Bg1, Bg1, Bg1), ann= '''For reorientation aim for rotation script. May be useful when rotation simulation bake animation with incorrect rotations.''' ) # checkbox ¹3 cmds.checkBox( "checkInfinity", label="Switch to 60 fps", v=False, en=False, cc=( 'print "Work in progress"' ), bgc=(Bg2, Bg2, Bg2), ann="Work in progress" ) cmds.separator( h=buttonHeight/1.25 , style='none' ) # checkbox ¹4 cmds.checkBox( "test1", label="Merge layers after baking", v=False, en=False, bgc=(Bg2, Bg2, Bg2), ann="Work in progress" ) #cmds.checkBox( "test2", label="Additive layer", v=False, en=False, bgc=(Bg2, Bg2, Bg2), ann="Work in progress" ) #cmds.separator( h=buttonHeight/1.25 , style='none' ) #cmds.checkBox( "test3", label="Baking without layers", v=False, en=False, bgc=(Bg2, Bg2, Bg2), ann="Work in progress" ) cmds.separator( h=1 , style='none' ) #|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| cmds.rowColumnLayout( numberOfColumns=3, columnWidth=[ (1, 115), (2, 80), (3, 135) ], p="buttonLayout" ) cmds.button( label="RESET OPTIONS", command=( 'resetCheckbox()' ), bgc=resCheckColor1 , h=buttonHeight, ann='Reset all options' ) cmds.button( label="RESET ALL", command=( 'resetAllButton()' ), bgc=resAllColor1 , h=buttonHeight, ann='Reset all values and options in script window' ) cmds.button( label="!!! DELETE ALL LAYERS !!!", command=( 'deleteMainLayer()' ), bgc=deleteColor1 , h=buttonHeight, ann='Delete main layer "OVERLAPPY" with all layers inside' ) cmds.separator( h=4 , style='none' ) cmds.columnLayout( 'endColumn', rs=4, adj=True, p="main", bgc=endColor1 ) cmds.frameLayout( "informLayout", l='ABOUT', cll=1, bgc=frameColor2, cl=1, p="endColumn", sbm="Options", cc=('cmds.window( "main", e=True, h=10, rtf=True )') ) cmds.text( "Report bugs and leave rewiew please", h=20 ) cmds.text( "vk.com/geneugene3d", hl=True, h=20, bgc=linkColor1 ) cmds.text( "www.artstation.com/geneugene", hl=True, h=20, bgc=linkColor1 ) cmds.text( "www.highend3d.com/users/geneugene", hl=True, h=20, bgc=linkColor2 ) cmds.text( "www.highend3d.com/maya/script/overlappy-for-maya-105076", hl=True, h=20, bgc=linkColor2 ) #|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| cmds.showWindow( overUI )
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 Heel Locator: ") mc.text(l="") mc.separator(st="in", h=17, w=500) mc.setParent("..") mc.rowColumnLayout(nc=3, cw=[(1, 125), (2, 150), (3, 150)], cs=[1, 5], rs=[1, 3], cal=( [1, "left"], [2, "left"], [3, "left"], )) mc.text(l="Mirror Foot As Well?") # mc.setParent("..") mc.radioButtonGrp( "selLegMirrorType_rbg", la2=["No", "Yes"], nrb=2, sl=2, cw2=[50, 50], ) mc.text(l="") mc.setParent("..") mc.separator(st="in", h=20, w=500) mc.rowColumnLayout(nc=3, cw=[(1, 100), (2, 200), (3, 150)], cs=[1, 5], rs=[1, 3], cal=( [1, "left"], [2, "left"], [3, "left"], )) mc.text(l="Initial Limb: ") mc.radioButtonGrp( "selLegType_rbg", la2=["Left", "Right"], nrb=2, sl=1, cw2=[50, 50], ) mc.setParent("..") mc.separator(st="in", h=20, 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="Heel Locator: ") mc.textFieldButtonGrp("locLoad_tfbg", cw=(1, 322), bl=" Load ", tx="LOC_l_heel") mc.text(bgc=(0.85, 0.65, 0.25), l="IK Foot CTRL: ") mc.textFieldButtonGrp("ctrlIKFootLoad_tf", cw=(1, 322), bl=" Load ", tx="CTRL_l_foot") mc.setParent("..") mc.separator(st="in", h=20, w=500) # load buttons # mc.textFieldButtonGrp("locLoad_tfbg", e=True, bc=self.loadSrc1Btn) mc.textFieldButtonGrp("ctrlIKFootLoad_tf", e=True, bc=self.loadSrc2Btn) # mc.textFieldButtonGrp("jntLegLoad_tf", e=True, bc=self.loadSrc3Btn) self.selLoad = [] self.locArray = [] mc.showWindow(self.window)
def showWindows(self): if cmds.window('ArnoldSettingUI', q=1, exists=1): cmds.deleteUI('ArnoldSettingUI') Mytool = cmds.window('ArnoldSettingUI',title='Mili Arnold Setting',widthHeight=(420,600),sizeable=False) cmds.rowColumnLayout( numberOfColumns=1, columnWidth=[(1, 420)]) cmds.text(label='Arnold Global Setting',height=30, backgroundColor=[0.5, 0.5, 0.6]) cmds.separator(style='out') tabs = cmds.tabLayout('tabsNameSpace') ################################# #Common child1 = cmds.rowColumnLayout(numberOfColumns=1, columnWidth=[(1, 420)]) cmds.scrollLayout('scrollLayoutUnique1', height=600) #File Output cmds.frameLayout(label='File Output', collapsable=True, collapse=False,width=410,borderStyle='etchedIn') cmds.columnLayout(adjustableColumn=True) cmds.separator(style='in') cmds.attrControlGrp('defaultResolutionWidth',attribute="defaultRenderGlobals.imageFilePrefix ",label='File name prefix:') cmds.separator(style='in') cmds.attrControlGrp(attribute="defaultRenderGlobals.animation",label='Frame/Animation ext') cmds.attrControlGrp(attribute="defaultRenderGlobals.outFormatControl",label='Out Format Control:') cmds.attrControlGrp(attribute="defaultRenderGlobals.extensionPadding",label='Frame padding:') cmds.setParent('..') cmds.setParent('..') #Image Size cmds.frameLayout(label='Image Size', collapsable=True, collapse=False,width=410,borderStyle='etchedIn') cmds.columnLayout(adjustableColumn=True) cmds.separator(style='in') cmds.attrControlGrp('defaultResolutionWidth',attribute="defaultResolution.width",label='Width in pixels:') cmds.attrControlGrp('defaultResolutionHeight',attribute="defaultResolution.height",label='Height in pixels:') cmds.attrControlGrp(attribute="defaultResolution.imageSizeUnits",label='Size units:') cmds.attrControlGrp(attribute="defaultResolution.dpi",label='Resolution:') cmds.attrControlGrp(attribute="defaultResolution.pixelDensityUnits",label='Resolution units:') cmds.separator(style='in') cmds.attrControlGrp(attribute="defaultResolution.deviceAspectRatio",label='Device aspect ratio:') cmds.attrControlGrp(attribute="defaultResolution.pixelAspect",label='Pixel aspect ratio:') cmds.setParent('..') cmds.setParent('..') #Render Option cmds.frameLayout(label='Render Option', collapsable=True, collapse=False,width=410,borderStyle='etchedIn') cmds.columnLayout(adjustableColumn=True) cmds.attrControlGrp(attribute="defaultRenderGlobals.preMel",label='Pre render MEL:') cmds.attrControlGrp(attribute="defaultRenderGlobals.postMel",label='Post render MEL') cmds.attrControlGrp(attribute="defaultRenderGlobals.prlm",label='Pre render layer MEL') cmds.attrControlGrp(attribute="defaultRenderGlobals.polm",label='Post render layer MEL') cmds.attrControlGrp(attribute="defaultRenderGlobals.prm",label='Post render frame MEL') cmds.attrControlGrp(attribute="defaultRenderGlobals.pom",label='Post render frame MEL') cmds.setParent('..') cmds.setParent('..') cmds.setParent('..') cmds.setParent('..') ################################# #Arnold Renderer child2 = cmds.rowColumnLayout(numberOfColumns=1, columnWidth=[(1, 420)]) cmds.scrollLayout('scrollLayoutUnique2', height=600) #Sampling cmds.frameLayout(label='Sampling', collapsable=True, collapse=False,borderStyle='etchedIn',width=410) cmds.columnLayout(adjustableColumn=True) cmds.attrControlGrp( attribute='defaultArnoldRenderOptions.AASamples',label='Camera(AA)') cmds.attrControlGrp( attribute='defaultArnoldRenderOptions.GIDiffuseSamples',label='Diffuse') cmds.attrControlGrp( attribute='defaultArnoldRenderOptions.GIGlossySamples',label='Glossy') cmds.attrControlGrp( attribute='defaultArnoldRenderOptions.GIRefractionSamples',label='Refraction') cmds.attrControlGrp( attribute='defaultArnoldRenderOptions.sssBssrdfSamples',label='SSS') cmds.attrControlGrp( attribute='defaultArnoldRenderOptions.volumeIndirectSamples',label='Volume Indirect') cmds.separator(style='in') cmds.attrControlGrp( attribute="defaultArnoldRenderOptions.lock_sampling_noise",label='Lock Sampling Pattern') cmds.attrControlGrp( attribute="defaultArnoldRenderOptions.sssUseAutobump",label='Use Autobump in SSS') cmds.setParent('..') cmds.columnLayout(adjustableColumn=True) cmds.frameLayout(label='Clamping', collapsable=True, collapse=True,borderStyle='out') cmds.rowColumnLayout(numberOfColumns=2, columnWidth=[(1, 145),(2,200)]) cmds.text('Clamp Sample Values ',align='right',height=25) cmds.checkBox('Clamp_Sample_Values',value=cmds.getAttr("defaultArnoldRenderOptions.use_sample_clamp"),label='',onCommand=lambda *arg:self.Clamp_Sample_Values_On(),offCommand=lambda *arg:self.Clamp_Sample_Values_Off()) cmds.text('Affect_AOVs_text',enable=cmds.getAttr("defaultArnoldRenderOptions.use_sample_clamp"),label='Affect AOVs ',align='right') cmds.checkBox('Affect_AOVs',enable=cmds.getAttr("defaultArnoldRenderOptions.use_sample_clamp"),value=cmds.getAttr("defaultArnoldRenderOptions.use_sample_clamp_AOVs"),label='',onCommand=lambda *arg:cmds.setAttr("defaultArnoldRenderOptions.use_sample_clamp_AOVs",1),offCommand=lambda *arg:cmds.setAttr("defaultArnoldRenderOptions.use_sample_clamp_AOVs",0)) cmds.setParent('..') cmds.attrControlGrp('Max_Value',attribute="defaultArnoldRenderOptions.AASampleClamp",label='Max Value',enable=cmds.getAttr("defaultArnoldRenderOptions.use_sample_clamp")) cmds.setParent('..') cmds.frameLayout(label='Filter', collapsable=True, collapse=True,borderStyle='out') cmds.columnLayout(adjustableColumn=True) cmds.text(label=u'很抱歉,这项功能暂不支持。如有需要请联系RnD!',align='center',backgroundColor=(0.6,0.5,0.5),height=40) ''' cmds.rowColumnLayout(numberOfColumns=2, columnWidth=[(1, 115),(2,120)]) cmds.text(' ') cmds.optionMenu('Filter_optionMenu',label='Type') cmds.menuItem(label='gaussian') cmds.menuItem(label='blackman_harris') cmds.menuItem(label='box') cmds.menuItem(label='catrom') cmds.menuItem(label='catrom2d') cmds.menuItem(label='closest') cmds.menuItem(label='cone') cmds.menuItem(label='cook') cmds.menuItem(label='cubic') cmds.menuItem(label='disk') cmds.menuItem(label='farthest') cmds.menuItem(label='heatmap') cmds.menuItem(label='mitnet') cmds.menuItem(label='sinc') cmds.menuItem(label='triangle') cmds.menuItem(label='variance') cmds.menuItem(label='video') cmds.optionMenu('Filter_optionMenu',value='gaussian',e=True) cmds.columnLayout(adjustableColumn=True) cmds.attrControlGrp(attribute="defaultArnoldFilter.width",label='Width') cmds.setParent('..') ''' cmds.setParent('..') cmds.setParent('..') cmds.setParent('..') cmds.setParent('..') #Ray Depth cmds.frameLayout(label='Ray Depth', collapsable=True, collapse=True,width=410,borderStyle='etchedIn') cmds.columnLayout(adjustableColumn=True) cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.GITotalDepth",label='Total') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.GIDiffuseDepth",label='Diffuse') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.GIGlossyDepth",label='Glossy') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.GIReflectionDepth",label='Reflection') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.GIRefractionDepth",label='Refraction') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.GIVolumeDepth",label='Volume') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.autoTransparencyDepth",label='Transparency Depth') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.autoTransparencyThreshold",label='Transparency Threshold') cmds.setParent('..') cmds.setParent('..') #Environment cmds.frameLayout(label='Environment', collapsable=True, collapse=True,width=410,borderStyle='etchedIn') cmds.columnLayout(adjustableColumn=True) cmds.text(label=u'很抱歉,这项功能暂不支持。如有需要请联系RnD!',align='center',backgroundColor=(0.6,0.5,0.5),height=80) cmds.setParent('..') cmds.setParent('..') #Motion Blur cmds.frameLayout(label='Motion Blur', collapsable=True, collapse=True,width=410,borderStyle='etchedIn') cmds.columnLayout(adjustableColumn=True) cmds.rowColumnLayout(numberOfColumns=2, columnWidth=[(1, 145),(2,255)]) cmds.text('Enable ',height=18,align='right') cmds.checkBox('Enable_MB',value=cmds.getAttr("defaultArnoldRenderOptions.motion_blur_enable"),label='',onCommand=lambda *args:self.Enable_MB_On(),offCommand=lambda *args:self.Enable_MB_Off()) cmds.text('Deformation_Text', enable=cmds.getAttr("defaultArnoldRenderOptions.motion_blur_enable"),label='Deformation ',height=18,align='right') cmds.checkBox('Deformation_MB',value=cmds.getAttr("defaultArnoldRenderOptions.mb_object_deform_enable"),label='',enable=cmds.getAttr("defaultArnoldRenderOptions.motion_blur_enable"),onCommand=lambda *args:self.Deformation_MB_On(),offCommand=lambda *args:self.Deformation_MB_Off()) cmds.text('Camera_MB',label='Camera ',height=18,align='right',enable=cmds.getAttr("defaultArnoldRenderOptions.motion_blur_enable")) cmds.checkBox('Camera_MB',value=cmds.getAttr("defaultArnoldRenderOptions.mb_camera_enable"),label='',enable=cmds.getAttr("defaultArnoldRenderOptions.motion_blur_enable"),onCommand=lambda *args:self.Camera_MB_On(),offCommand=lambda *args:self.Camera_MB_Off()) cmds.setParent('..') cmds.attrControlGrp('Keys_MB',attribute="defaultArnoldRenderOptions.motion_steps",label='Keys',enable=cmds.getAttr("defaultArnoldRenderOptions.motion_blur_enable")) cmds.separator(style='in') cmds.rowColumnLayout(numberOfColumns=2, columnWidth=[(1, 145),(2,100)]) cmds.text('Position_MB',label='Position ',align='right',enable=cmds.getAttr("defaultArnoldRenderOptions.motion_blur_enable")) flag_MB = cmds.getAttr("defaultArnoldRenderOptions.range_type") if flag_MB == 0: optionValue = 'Start On Frame' enableFlag1 = True enableFlag2 = False elif flag_MB == 1: optionValue = 'Center On Frame' enableFlag1 = True enableFlag2 = False elif flag_MB == 2: optionValue = 'End On Frame' enableFlag1 = True enableFlag2 = False else: optionValue = 'Custom' enableFlag1 = False enableFlag2 = True cmds.optionMenu('Position_optionMenu_MB',label='',enable=cmds.getAttr("defaultArnoldRenderOptions.motion_blur_enable"),changeCommand=lambda *args:self.Position_optionMenu_MB()) cmds.menuItem(label='Start On Frame') cmds.menuItem(label='Center On Frame') cmds.menuItem(label='End On Frame') cmds.menuItem(label='Custom') cmds.optionMenu('Position_optionMenu_MB',value=optionValue,e=True) cmds.setParent('..') cmds.columnLayout(adjustableColumn=True) cmds.attrControlGrp('Length_MB',attribute="defaultArnoldRenderOptions.motion_frames",label='Length ',enable=enableFlag1) cmds.attrControlGrp('Start_MB',attribute="defaultArnoldRenderOptions.motion_start",label='Start ',enable=enableFlag2) cmds.attrControlGrp('End_MB',attribute="defaultArnoldRenderOptions.motion_end",label='End ',enable=enableFlag2) cmds.setParent('..') cmds.setParent('..') cmds.setParent('..') #Lights cmds.frameLayout(label='Lights', collapsable=True, collapse=True,width=410,borderStyle='etchedIn') cmds.columnLayout(adjustableColumn=True) cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.lowLightThreshold",label='Low Light Threshold') cmds.separator(style='in') cmds.columnLayout(adjustableColumn=True) cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.lightLinking",label='Light Linking') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.shadowLinking" ,label='Shadow Linking') cmds.setParent('..') cmds.setParent('..') cmds.setParent('..') #Gamma Correction cmds.frameLayout(label='Gamma Correction', collapsable=True, collapse=True,width=410,borderStyle='etchedIn') cmds.columnLayout(adjustableColumn=True) cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.display_gamma",label='Display Driver Gamma') cmds.separator(style='in') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.light_gamma",label='Lights') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.shader_gamma",label='Shaders') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.texture_gamma",label='Textures') cmds.setParent('..') cmds.setParent('..') #Textures cmds.frameLayout(label='Textures', collapsable=True, collapse=True,width=410,borderStyle='etchedIn') cmds.columnLayout(adjustableColumn=True) cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.textureAutomip",label='Auto-mipmap') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.textureAcceptUnmipped",label='Accept Unmipped') cmds.separator(style='in') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.autotile",label='Auto-tile',changeCommand=lambda *args:self.Auto_tile()) cmds.attrControlGrp('Tile_Size_T',attribute="defaultArnoldRenderOptions.textureAutotile",label='Tile Size',enable=cmds.getAttr("defaultArnoldRenderOptions.autotile")) cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.textureAcceptUntiled",label='Accept Untiled') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.use_existing_tiled_textures",label='Use Existing .tx Textures') cmds.separator(style='in') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.textureMaxMemoryMB",label='Max Cache Size(MB)') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.textureMaxOpenFiles",label='Max Open Files') cmds.separator(style='in') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.textureDiffuseBlur",label='Diffuse Blur') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.textureGlossyBlur",label='Glossy Blur') cmds.setParent('..') cmds.setParent('..') cmds.setParent('..') cmds.setParent('..') ################################# #Systrm child3 = cmds.rowColumnLayout(numberOfColumns=1, columnWidth=[(1, 420)]) cmds.scrollLayout('scrollLayoutUnique3', height=600) #Maya Integration cmds.frameLayout(label='Maya Integration', collapsable=True, collapse=False,width=410,borderStyle='etchedIn') cmds.columnLayout(adjustableColumn=True) cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.progressive_rendering",label='Progressive Refinement') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.progressive_initial_level",label='Initial Sampling Level') cmds.separator(style='in') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.clear_before_render",label='Clear Before Render') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.force_scene_update_before_IPR_refresh",label='Force Scene Update On IPR Refresh') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.force_texture_cache_flush_after_render",label='Force Texture Cache Flush After Render') cmds.separator(style='in') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.enable_swatch_render",label='Enable Swatch Render') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.standinDrawOverride",label='StandIn Viewport Override') cmds.setParent('..') cmds.setParent('..') #Render Settings cmds.frameLayout(label='Render Settings', collapsable=True, collapse=False,width=410,borderStyle='etchedIn') cmds.columnLayout(adjustableColumn=True) cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.renderType",label='Render Type') cmds.separator(style='in') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.bucketScanning",label='Bucket Scanning') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.bucketSize",label='Bucket Size') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.outputOverscan",label='Overscan') cmds.separator(style='in') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.threads_autodetect",label='Autodetect Threads',changeCommand=lambda *args:self.Autodetect_Threads()) key = cmds.getAttr("defaultArnoldRenderOptions.threads_autodetect") if key == True: flag = False else: flag = True cmds.attrControlGrp('Threads_S',attribute="defaultArnoldRenderOptions.threads",label='Threads',enable=flag) cmds.separator(style='in') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.binaryAss",label='Binary-encode ASS Files') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.outputAssBoundingBox",label='Export Bounding Box(.asstoc)') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.expandProcedurals",label='Expand Procedurals') cmds.separator(style='in') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.kickRenderFlags",label='Kick Render Flags') cmds.setParent('..') cmds.setParent('..') #Search Paths cmds.frameLayout(label='Search Paths', collapsable=True, collapse=False,width=410,borderStyle='etchedIn') cmds.columnLayout(adjustableColumn=True) cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.absoluteTexturePaths",label='Absolute Texture Paths') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.absoluteProceduralPaths",label='Absolute Procedural Paths') cmds.separator(style='in') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.procedural_searchpath",label='Procedural Search Path') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.shader_searchpath",label='Shader Search Path') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.texture_searchpath",label='Texture Search Path') cmds.setParent('..') cmds.setParent('..') #Licensing cmds.frameLayout(label='Licensing', collapsable=True, collapse=False,width=410,borderStyle='etchedIn') cmds.columnLayout(adjustableColumn=True) cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.abortOnLicenseFail",label='About On License Fail') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.skipLicenseCheck",label='Skip License Check') cmds.setParent('..') cmds.setParent('..') cmds.setParent('..') cmds.setParent('..') ################################# #AOVs child4 = cmds.rowColumnLayout(numberOfColumns=1, columnWidth=[(1, 420)]) cmds.rowColumnLayout(numberOfColumns=1, columnWidth=[(1, 420)]) cmds.columnLayout(adjustableColumn=True) cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.aovMode",label='Mode',changeCommand=lambda *args:self.Mode_A()) cmds.rowColumnLayout(numberOfColumns=3, columnWidth=[(1, 143),(2,200),(3,50)]) cmds.text('Render View AOV ',align='right') cmds.optionMenu('RenderViewAOVs_optionMenu',label='',changeCommand=lambda *args:self.renderViewAov()) aiAOVs = cmds.listConnections('defaultArnoldRenderOptions.aovList') cmds.menuItem(label='beauty') if aiAOVs != None: for aiAOV in aiAOVs: name = cmds.getAttr('%s.name'%aiAOV) cmds.menuItem(label=name) cmds.text(' ') cmds.setParent('..') cmds.setParent('..') cmds.setParent('..') key = cmds.getAttr("defaultArnoldRenderOptions.aovMode") if key == 0: flag = False else: flag = True cmds.rowColumnLayout(numberOfColumns=1, columnWidth=[(1, 420)]) cmds.scrollLayout('scrollLayoutUnique', height=550) #Default Drivers cmds.frameLayout('Default_Drivers_frameLayout',label='Default Drivers', collapsable=True, collapse=True,width=410,borderStyle='etchedIn',enable=flag) cmds.columnLayout(adjustableColumn=True) cmds.rowColumnLayout(numberOfColumns=3, columnWidth=[(1, 140),(2,100),(3,50)]) cmds.text('Default Arnold Display Driver ',align='right') cmds.optionMenu(label='') cmds.menuItem(label='exr') cmds.text(' ') cmds.setParent('..') cmds.frameLayout(collapsable=False, labelVisible=False,collapse=True,width=410,borderStyle='etchedIn') cmds.columnLayout(adjustableColumn=True) cmds.attrControlGrp(attribute="defaultArnoldDisplayDriver.exrCompression",label='Compression') cmds.attrControlGrp(attribute="defaultArnoldDisplayDriver.halfPrecision",label='Half Precision') cmds.attrControlGrp(attribute="defaultArnoldDisplayDriver.preserveLayerName",label='Preserve Layer Name') cmds.attrControlGrp(attribute="defaultArnoldDisplayDriver.tiled",label='Tiled') cmds.attrControlGrp(attribute="defaultArnoldDisplayDriver.autocrop",label='Autocrop') cmds.attrControlGrp(attribute="defaultArnoldDisplayDriver.append",label='Append') cmds.frameLayout(label='Default Drivers', collapsable=True, collapse=True,width=410,borderStyle='etchedIn') cmds.columnLayout(adjustableColumn=True) cmds.text(label=u'很抱歉,这项功能暂不支持。如有需要请联系RnD!',align='center',backgroundColor=(0.6,0.5,0.5),height=40) cmds.setParent('..') cmds.setParent('..') cmds.setParent('..') cmds.setParent('..') cmds.setParent('..') cmds.setParent('..') #AOV Browser cmds.frameLayout('AOV_Browser_frameLayout',label='AOV Browser', collapsable=True, collapse=False,width=410,borderStyle='etchedIn',height=200,enable=flag) cmds.columnLayout(adjustableColumn=True) cmds.text(label=u'很抱歉,这项功能正在开发,请耐心等待。',align='center',backgroundColor=(0.6,0.5,0.5),height=30) cmds.rowColumnLayout(numberOfColumns=3, columnWidth=[(1, 135),(2,135),(3,135)]) cmds.columnLayout(adjustableColumn=True) cmds.text('AOV Groups',align='center') cmds.textScrollList('AOV_Groups_A', numberOfRows=8, allowMultiSelection=True, append=['<builtin>', 'aiHair', 'aiSkin', 'aiStandard', 'alCel', 'alHair','alHairX','alLayer','alSurface','alSurfaceX'],height=160) cmds.setParent('..') cmds.columnLayout(adjustableColumn=True) cmds.text('Available AOVs',align='center') cmds.textScrollList('Available_AOVs_A', numberOfRows=8, allowMultiSelection=True,append=[],height=135) cmds.button(label='>>') cmds.setParent('..') cmds.columnLayout(adjustableColumn=True) cmds.text('Active AOVs',align='center') cmds.textScrollList('Active_AOVs_A', numberOfRows=8, allowMultiSelection=True, append=[],height=135) cmds.button(label='<<') cmds.setParent('..') cmds.setParent('..') cmds.setParent('..') cmds.setParent('..') #AOVs cmds.frameLayout('AOVs_frameLayout',label='AOVs', collapsable=True, collapse=False,width=410,borderStyle='in') cmds.columnLayout(adjustableColumn=True) cmds.rowColumnLayout(numberOfColumns=4, columnWidth=[(1, 140),(2,100),(3,100),(4,80)]) cmds.text(' ') cmds.button(label='Add Custom',command=lambda *args:self.addCustom_AOVS()) cmds.button(label='Delete All',command=lambda *args:self.deleteAll_AOVs()) cmds.text(' ') cmds.setParent('..') cmds.separator(style='in') cmds.rowColumnLayout(numberOfColumns=4, columnWidth=[(1, 140),(2,60),(3,60),(4,80)]) cmds.text(label='name',align='center') cmds.text(label='data',align='center') cmds.text(label='driver',align='center') cmds.text(label='filter',align='center') cmds.setParent('..') cmds.frameLayout('aiAOV_nodeList',labelVisible=False,width=420,borderStyle='in') aiAOVs = cmds.listConnections('defaultArnoldRenderOptions.aovList') if aiAOVs != None: for aiAOV in aiAOVs: self.cmdsGuiGroup(aiAOV) cmds.setParent('..') cmds.setParent('..') cmds.setParent('..') cmds.setParent('..') cmds.setParent('..') cmds.setParent('..') ################################# #Diagnostics child5 = cmds.rowColumnLayout(numberOfColumns=1, columnWidth=[(1, 420)]) cmds.scrollLayout('scrollLayoutUnique5', height=600) #Log cmds.frameLayout(label='Log', collapsable=True, collapse=False,width=410,borderStyle='etchedIn') cmds.columnLayout(adjustableColumn=True) cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.log_verbosity",label='Verbosity Level') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.log_to_console",label='Console') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.log_to_file",label='File',changeCommand=lambda *args:self.File_D()) cmds.attrControlGrp('Filename_D',attribute="defaultArnoldRenderOptions.log_filename",label='Filename',enable=cmds.getAttr("defaultArnoldRenderOptions.log_to_file")) cmds.attrControlGrp('Max_Warnings_D',attribute="defaultArnoldRenderOptions.log_max_warnings",label='Max.Warnings',enable=cmds.getAttr("defaultArnoldRenderOptions.log_to_file")) cmds.setParent('..') cmds.setParent('..') #Error Handing cmds.frameLayout(label='Error Handing', collapsable=True, collapse=False,width=410,borderStyle='etchedIn') cmds.columnLayout(adjustableColumn=True) cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.abortOnError",label='About On Error') cmds.separator(style='in') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.errorColorBadTexture",label='Texture Error Color') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.errorColorBadPixel",label='NaN Error Color') cmds.setParent('..') cmds.setParent('..') cmds.setParent('..') cmds.setParent('..') ################################# #Override child6 = cmds.rowColumnLayout(numberOfColumns=1, columnWidth=[(1, 420)]) cmds.scrollLayout('scrollLayoutUnique6', height=600) #User Options cmds.frameLayout(label='User Options', collapsable=True, collapse=False,width=410,borderStyle='out') cmds.columnLayout(adjustableColumn=True) cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.aiUserOptions",label='Option') cmds.setParent('..') cmds.setParent('..') #Feature Overrides cmds.frameLayout(label='Feature Overrides', collapsable=True, collapse=False,width=410,borderStyle='out') cmds.columnLayout(adjustableColumn=True) cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.ignoreTextures",label='Ignore Textures') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.ignoreShaders",label='Ignore Shaders') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.ignoreAtmosphere",label='Ignore Atmosphere') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.ignoreLights",label='Ignore Lights') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.ignoreShadows",label='Ignore Shadows') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.ignoreSubdivision",label='Ignore Subdivision') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.ignoreDisplacement",label='Ignore Displacement') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.ignoreBump",label='Ignore Bump') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.ignoreSmoothing",label='Ignore Normal Smoothing') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.ignoreMotionBlur",label='Ignore Motion Blur') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.ignoreDof",label='Ignore Depth of Field') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.ignoreSss",label='Ignore Sub-Surface-Scattering') cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.forceTranslateShadingEngines",label='Force Translation of Shading Engines') cmds.setParent('..') cmds.setParent('..') #Subdivision cmds.frameLayout(label='Subdivision', collapsable=True, collapse=False,width=410,borderStyle='out') cmds.columnLayout(adjustableColumn=True) cmds.attrControlGrp(attribute="defaultArnoldRenderOptions.maxSubdivisions",label='Max.Subdvisions') cmds.setParent('..') cmds.setParent('..') cmds.setParent('..') cmds.setParent('..') cmds.tabLayout(tabs, edit=True, tabLabel=((child1, 'Common'),(child2,'Arnold Renderer'),(child3,'Systrm'),(child4,'AOVs'),(child5,'Diagnosics'),(child6,'Override')) ) cmds.setParent('..') cmds.button(label='Close',height=30,command=lambda *args:cmds.deleteUI('ArnoldSettingUI')) cmds.showWindow(Mytool)
def createUI(pWindowTitle, pApplyCallBack): windowID = 'miniTree' # unique id to make sure only one is open at a time if cmds.window(windowID, exists=True): cmds.deleteUI(windowID) cmds.window(windowID, title=pWindowTitle, sizeable=False, resizeToFitChildren=True) cmds.rowColumnLayout(numberOfColumns=3, columnWidth=[(1, 50), (2, 400), (3, 50)], columnOffset=[(1, 'right', 2)]) cmds.separator(h=10, style='none') cmds.separator(h=10, style='none') cmds.separator(h=10, style='none') cmds.separator(h=10, style='none') polyNumberField = cmds.intSliderGrp(label='Polygons:', min=3, max=20, value=4, step=1, field=True) cmds.separator(h=10, style='none') cmds.separator(h=10, style='none') treeDepthField = cmds.intSliderGrp(label='Tree depth:', min=1, max=8, value=3, step=1, field=True) cmds.separator(h=10, style='none') # last column last row is blank cmds.separator(h=10, style='none') treeSegmentLength = cmds.floatSliderGrp(label='Segment length:', min=0.2, max=20, value=5, step=0.1, field=True) cmds.separator(h=10, style='none') # last column last row is blank cmds.separator(h=10, style='none') treeLengthDecrease = cmds.floatSliderGrp(label='Length decrease:', min=0.0, max=1, value=0.8, step=0.01, field=True) cmds.separator(h=10, style='none') # last column last row is blank cmds.separator(h=10, style='none') trunkRadius = cmds.floatSliderGrp(label='Trunk radius:', min=0.1, max=10, value=1, step=0.1, field=True) cmds.separator(h=10, style='none') # last column last row is blank cmds.separator(h=10, style='none') radiusDecrease = cmds.floatSliderGrp(label='Radius decrease:', min=0.0, max=1, value=0.8, step=0.01, field=True) cmds.separator(h=10, style='none') # last column last row is blank cmds.separator(h=10, style='none') treeBranches = cmds.intSliderGrp(label='Branches:', min=1, max=8, value=2, step=1, field=True) cmds.separator(h=10, style='none') # last column last row is blank cmds.separator(h=10, style='none') treeBranches_a = cmds.floatSliderGrp(label='Branches angle:', min=0, max=math.pi * 2, value=math.pi / 2, step=0.01, field=True) cmds.separator(h=10, style='none') # last column last row is blank cmds.separator(h=10, style='none') treeFoliageSze = cmds.floatSliderGrp(label='Foliage size:', min=0.1, max=20, value=1, step=0.01, field=True) cmds.separator(h=10, style='none') # last column last row is blank cmds.separator(h=10, style='none') treeFoliageRes = cmds.intSliderGrp(label='Foliage resolution:', min=3, max=30, value=5, step=0.01, field=True) cmds.separator(h=10, style='none') # last column last row is blank cmds.separator(h=10, style='none') # empty row cmds.separator(h=10, style='none') cmds.separator(h=10, style='none') cmds.separator(h=10, style='none') cmds.button(label='Create tree', command=functools.partial(pApplyCallBack, polyNumberField, treeDepthField, treeSegmentLength, treeLengthDecrease, trunkRadius, radiusDecrease, treeBranches, treeBranches_a, treeFoliageSze, treeFoliageRes)) # when the button is pressed, callback function is called cmds.separator(h=10, style='none') cmds.separator(h=10, style='none') cmds.separator(h=10, style='none') cmds.separator(h=10, style='none') cmds.separator(h=10, style='none') def cancelCallBack(*pArgs): if cmds.window(windowID, exists=True): cmds.deleteUI(windowID) cmds.button(label='Cancel', command=cancelCallBack) cmds.showWindow()
def gui(self): ''' Generates the interface for the AttrGUISingle object. ''' btnWidth = 30 btnSep = 2 # textWidth = 70 # fieldWidth # if( cmds.about( os=True ) == "mac" ): self.mainLayout = cmds.rowColumnLayout(parent=self.parent, nc=7, h=20, rat=[[1,"both", btnSep ],[2,"both", btnSep ],[3,"both", btnSep ],[4,"both", btnSep ],[5,"both", btnSep ],[6,"both", btnSep ],[7,"both", btnSep ]], cw=[[1,100],[2,70],[3,125],[4, btnWidth ],[5,btnWidth ],[6,btnWidth ],[7,btnWidth ]]) cmds.text(label=self.text, w=70, al="center") self.fieldGui = cmds.floatField( w=100, pre=2 ) pop = cmds.popupMenu(parent=self.fieldGui) cmds.menuItem(parent=pop, label="0 - 1", c=Callback( self.setMinMax, 0, 1)) cmds.menuItem(parent=pop, label="0 - 10", c=Callback( self.setMinMax, 0, 10)) cmds.menuItem(parent=pop, label="-10 - 10", c=Callback( self.setMinMax, -10, 10)) cmds.menuItem(parent=pop, label="Set Min/Max") cmds.menuItem( divider=1) cmds.menuItem(label="Step 1", c=Callback( self.setStep, 1 )) cmds.menuItem(label="Step .1", c=Callback( self.setStep, .1 )) cmds.menuItem(label="Step .01", c=Callback( self.setStep, .01 )) self.sliderGui = cmds.floatSlider( w=100, h=20) cmds.popupMenu(parent=self.sliderGui) cmds.menuItem(label="0 - 1", c=Callback( self.setMinMax, 0, 1)) cmds.menuItem(label="0 - 10", c=Callback( self.setMinMax, 0, 10)) cmds.menuItem(label="-10 - 10", c=Callback( self.setMinMax, -10, 10)) cmds.menuItem(label="Set Min/Max") cmds.menuItem( divider=1) cmds.menuItem(label="Step 1", c=Callback( self.setStep, 1 )) cmds.menuItem(label="Step .1", c=Callback( self.setStep, .1 )) cmds.menuItem(label="Step .01", c=Callback( self.setStep, .01 )) print("Min Value: " + str(self.attrs.min)) print("Max Value: " + str(self.attrs.max)) if( self.attrs.min != None ): cmds.floatField( self.fieldGui, e=1, min=self.attrs.min ) cmds.floatSlider( self.sliderGui, e=1, min=self.attrs.min ) if( self.attrs.max != None ): cmds.floatField( self.fieldGui, e=1, max=self.attrs.max ) cmds.floatSlider( self.sliderGui, e=1, max=self.attrs.max ) cmds.connectControl( self.fieldGui, self.attrNames ) cmds.connectControl( self.sliderGui, self.attrNames ) cmds.symbolButton(image='MENUICONKEYS.XPM', h=20, ann="Keyframe", command=Callback(self.key)) cmds.symbolButton(image='REDRAWPAINTEFFECTS.XPM', h=20, ann="Reset to Default", command=Callback(self.reset)) self.symGUI = cmds.symbolCheckBox( image='ONRADIOBTNICON.XPM', h=20, oni='ONRADIOBTNICON.XPM', ofi='OFFRADIOBTNICON.XPM', ann="Set Offset", onc=Callback(self.setOffset)) self.resOffName = cmds.symbolButton(image='AUTOLOAD.XPM', h=20, ann="Reset Offset", command=Callback( self.resetOffset ) ) cmds.setParent(self.parent)
def __init__( self, winName= 'colorWin' ): ''' colorWinUI is all part of __init__ constructor.''' self.winName= winName self.winHeight = 290 self.winWidth = 420 self.fieldTexts=[ 'controlName',] self.checkBoxes=[ 'SingleController','SnapConnect' ] self.menuItems=[ 'None','Hierarchy','TweakHierarchy' ] self.connectBoxes=[ 'parent','point','rotate','scale' ] self.radioBoxes=[ 'parentCon','pointCon','rotateCon','scaleCon' ] self.locCheckBoxes=[ 'parentSelection', 'additionalGroups', 'selectionName' ] self.locTexts=[ 'locName' ] if cmds.windowPref( self.winName, query=True, exists=True, ): cmds.windowPref( self.winName, wh= ( self.winWidth, self.winHeight ), ) cmds.windowPref( self.winName, remove=True ) if cmds.window( self.winName, q=1, ex= 1 ) == True: cmds.deleteUI( self.winName ) cmds.window( self.winName, tlb=1, wh=( self.winWidth, self.winHeight ), t= "Curve Controller Utility" ) tabs = cmds.tabLayout() cmds.setParent( tabs ) child1 = cmds.rowColumnLayout( nr=3, rh= [(1, 100),( 2, 60 ),( 3, 20)]) # Tab1 cmds.frameLayout( label= 'Choose Colour :', width= 412, h=30, parent= child1 ) cmds.rowColumnLayout( nc=3, cw= [(1, 135),( 2, 135 ),( 3, 135 )] ) # Color buttons. cmds.button( 'purple', l= 'Purple ', w= 60, h=25, bgc=(0.846000000089406967,0.03,0.7839999794960022 ), aop=1, c= "cmds.color(ud=7 )" ) cmds.button( 'red', l= 'Red ', w= 60, h=25, bgc=(0.85699999332427979,0.14800000190734863,0.3190000057220459 ), aop=1,c= "cmds.color(ud=8 )" ) cmds.button( 'brown', l= 'Brown ', w= 60, h=25, bgc=(0.602,0.452,0.173 ), aop=1, c= "cmds.color(ud=1)" ) cmds.button( 'green', l= 'Green ', w= 60, h=25, bgc=(0.5311,0.662,0.1 ), aop=1,c= "cmds.color(ud=3)" ) cmds.button( 'beige', l= 'Beige ', w= 60, h=25, bgc=(0.225,0.415,0.1 ), aop=1,c= "cmds.color(ud=2)" ) cmds.button( 'lightGreen', l= 'LightGreen ', w= 60, h=25, bgc=(0.0,0.668,0.268 ), aop=1,c= "cmds.color(ud=4)" ) cmds.button( 'cyan', l= 'Cyan ', w= 60, h=25, bgc=(0.1, 0.4, 0.5 ), aop=1,c= "cmds.color(ud=5)" ) cmds.button( 'skyBlue', l= 'SkyBlue ', w= 60, h=25, bgc=(0.36,0.49,0.811 ), aop=1,c= "cmds.color(ud=6 )" ) # Create controllers. nameFrame= cmds.frameLayout( label= 'Name Controllers: ', width= 412, h=50, parent=child1 ) cmds.text( "Put down 'Name' and it will result in: Name#_ctl ", parent= nameFrame ) for i in self.fieldTexts: cmds.textField( i, text= 'defaultControlName', parent= nameFrame ) funcFrame= cmds.frameLayout( l= "Choose Function:", w=412, h= 100, parent= child1 ) funcLabel = cmds.rowColumnLayout( numberOfColumns=4, columnWidth=[(1, 120), (2, 100), (3, 100)] ) for i in self.checkBoxes: cmds.checkBox( i, parent= funcLabel ) self.featureOptions = cmds.optionMenu( label='Features:' ) for eachItem in self.menuItems: cmds.menuItem( label= eachItem ) cmds.button( label= "Create Controller(s)", bgc= ( 0.05, 0.4, 0.5 ), height=30, command= self.function, parent = funcFrame ) cmds.button( label= "Close", height=20, command= self.deleteUI, parent=funcFrame ) cmds.setParent( tabs ) # Tab2 child2= cmds.rowColumnLayout( numberOfColumns= 2, cw= [(1, 250),( 2, 100 )], parent=tabs ) # Constraint boxes. constraintBox= cmds.frameLayout( l= "Choice Connections:", w=206, h= 150, parent=child2 ) cmds.radioButtonGrp( self.connectBoxes[0], numberOfRadioButtons=2, labelArray2=['parentConstraint', 'parentConnect'], sl=1 ) cmds.radioButtonGrp( self.connectBoxes[1], numberOfRadioButtons=2, labelArray2=['pointConstraint', 'normallateConnect'], sl=1 ) cmds.radioButtonGrp( self.connectBoxes[2], numberOfRadioButtons=2, labelArray2=['rotateConstraint', 'rotateConnect'], sl=1 ) cmds.radioButtonGrp( self.connectBoxes[3], numberOfRadioButtons=2, labelArray2=['scaleConstraint', 'scaleConnect'], sl=1 ) # Connection boxes. connectBox= cmds.frameLayout( l= "ApplyConnections:", w=206, h= 150, parent=child2 ) for eachConnect in self.radioBoxes: cmds.checkBox( eachConnect,label=eachConnect, parent = connectBox ) cmds.checkBox( self.radioBoxes[0], e=1, value=1 ) cmds.checkBox( self.radioBoxes[3], e=1, value=1 ) # Tab3 child3= cmds.rowColumnLayout( numberOfColumns= 1, cw= [(1, 50)], parent=tabs ) locFuncFrame= cmds.frameLayout( l= "Choose Name :", w=412, h= 80, parent= child3 ) for i in self.locTexts: cmds.text( "Put down 'name' and you'll get 'name#_grp; " ) cmds.text( "With selectionName: 'geo_name_grp'; Text field will be void." ) cmds.textField( i, text='defaultGroupName', parent= locFuncFrame ) locFrame= cmds.frameLayout( l= "Create Locator(s) with function(s):", w=412, h= 120, parent= child3 ) locFuncLabel = cmds.rowColumnLayout( numberOfColumns=3, columnWidth=[(1, 150), (2, 150), (2, 150) ] ) for i in self.locCheckBoxes: cmds.checkBox( i, parent= locFuncLabel ) cmds.text( "Choose normalforms or vertices, click button to create a locator.", parent=locFrame ) cmds.button( label= "Create Locator(s)", bgc= ( 0.5, 0.4, 0.5 ), height=40, command= self.locators, parent = locFrame ) cmds.tabLayout( tabs, edit=True, tabLabel=((child1, 'Controllers'), (child2, 'snapConnections'), (child3, 'Locators') ) ) cmds.tabLayout( tabs, edit=True, selectTabIndex=1 ) cmds.showWindow(self.winName) cmds.window(self.winName, edit= True, wh=[self.winWidth,self.winHeight])
def __init__(self): sceneName = cmds.file(q=True, sn=True, shn=True).rsplit('.', 1)[0] wName = 'w13A_ExportASS' if cmds.window(wName, exists=True): cmds.deleteUI(wName) cmds.window(wName, title=wName, sizeable=False) cmds.columnLayout('w13A_L00', p=wName, adj=True, rs=10) #cmds.button(l='Save Materials', p='w13A_L00', rs=True, h=50) #cmds.separator( p='w13A_L00', st="out") #-------------------------------------------------- cmds.columnLayout('w13A_cl01', p='w13A_L00', adj=True) cmds.rowColumnLayout('w13A_cl01_01', p='w13A_cl01', nc=4, h=30, columnWidth=[(1, 30), (2, 175), (3, 175)]) cmds.intField('w13A_count', v=0, en=False, h=30) cmds.button(l='Rename Hairs', p='w13A_cl01_01', align='left', c=self.self.renameHair) cmds.button(l='Assign aiHair shader', p='w13A_cl01_01', align='right', c='assignAiHairShader()', en=False) cmds.button(l='unspecified shaveHair', p='w13A_cl01_01', c=self.w13b_unspecefiedAiHair) cmds.separator(p='w13A_cl01', h=15, st='in') #-------------------------------------------------- cmds.rowColumnLayout('w13A_cl01_02', p='w13A_L00', nc=6, columnWidth=[(1, 40), (2, 140), (3, 90), (4, 90), (5, 90), (6, 320)], rs=([1, 10])) index = 1 self.w13A_addItem(index) #cmds.separator(p='w13A_L00', st='in') #cmds.checkBoxGrp( 'w13A_uiObjFilter', numberOfCheckBoxes=2, p='w13A_cl01', h=30, labelArray2=['nurbsCurve', 'Locator'], v1=True, v2=True ) cmds.frameLayout('w13A_uiAssOptions', p='w13A_L00', label="ASS Export Options", collapsable=True, borderStyle="in", collapse=True) #cmds.columnLayout( 'w13A_uiAssOptions', p='w13A_uiAss')#, cw=[(1,200),(2,80), (3,180),(4,150)] ) cmds.checkBox(l='Use gzip Compression(.ass.gz)', p='w13A_uiAssOptions', en=False, v=True) cmds.checkBox(l='Export Bounding Box', p='w13A_uiAssOptions', en=False, v=True) cmds.checkBox(l='Use Binary Encoding', p='w13A_uiAssOptions', en=False, v=True) cmds.separator(p='w13A_uiAssOptions', st='in') cmds.checkBox(l='Options', p='w13A_uiAssOptions', en=False, v=True) cmds.checkBox(l='Cameras', p='w13A_uiAssOptions', en=False) cmds.checkBox(l='Lights', p='w13A_uiAssOptions', en=False) cmds.checkBox(l='Shapes', p='w13A_uiAssOptions', en=False, v=True) cmds.checkBox(l='Shaders', p='w13A_uiAssOptions', en=False, v=True) cmds.checkBox(l='Override Nodes', p='w13A_uiAssOptions', en=False, v=True) cmds.checkBox(l='Drivers', p='w13A_uiAssOptions', en=False) cmds.checkBox(l='Filters', p='w13A_uiAssOptions', en=False) #--------------------------------------------------- cmds.rowColumnLayout('w13A_cl01_03', p='w13A_L00', nc=2) #cmds.checkBox('w13A_uiExportAll', l='All', p='w13A_cl01_03', h=30, cc='w13A_uiExportAll_cmd()') #cmds.button('w13A_uiExportMat', l='Export Materials', p='w13A_cl01_03', rs=True, c='w13A_uiExportMat_cmd()', en=False) cmds.button('self.w13A_uiExportAss', l='Export ASS Files', p='w13A_cl01_03', h=30, c=self.w13A_uiExportAss) assDir = cmds.workspace( q=True, rootDirectory=True) + 'data/' + sceneName + '/ass_hair' cmds.textFieldGrp('w13A_uiAssDirectory', p='w13A_cl01_03', l='Directory', h=30, cw2=(100, 550), tx=assDir, ed=True) #cmds.button('w13A_uiShowExp', l='Open Directory', p='w13A_cl01_03', c='w13A_uiShowExp_cmd()', en=False ) cmds.showWindow(wName)
def __init__(self): self.title = 'QuadrupedRigWin' if cmds.window(self.title, q=True, ex=True): cmds.deleteUI(self.title) cmds.window(self.title, t='Quad Rig Tool', s=0) cmds.columnLayout('maincolumn') cmds.separator() cmds.rowColumnLayout(nc=2, cw=[(1, 130), (2, 30)]) cmds.text(l=' Set Tail Number : ') cmds.textField('tailConNum', tx='7') cmds.setParent('..') cmds.rowColumnLayout() cmds.button(l='Import Templete Joint', h=35, w=200, c=self.importTemplateJoint) cmds.separator() cmds.setParent('..') cmds.rowColumnLayout() cmds.button(l='Neck Rig', h=30, c=self.neckRigOP) cmds.button(l='Spine Rig', h=30, c=self.spineRigOP) cmds.button(l='Tail Rig', h=30, c=self.tailOP) cmds.separator() cmds.rowColumnLayout(nc=2, cw=[(1, 100), (2, 100)]) cmds.button(l='ForeLeg Rig (L)', h=30, c=self.L_foreLegOP) cmds.button(l='ForeLeg Rig (R)', h=30, c=self.R_foreLegOP) cmds.setParent('..') cmds.rowColumnLayout(nc=2, cw=[(1, 100), (2, 100)]) cmds.button(l='HindLeg Rig (L)', h=30, c=self.L_hindLegOP) cmds.button(l='HindLeg Rig (R)', h=30, c=self.R_hindLegOP) cmds.setParent('..') cmds.separator() cmds.rowColumnLayout() cmds.button(l='Finish Setting', h=35, w=200, c=self.finishOP) cmds.showWindow(self.title)
def displayUI(self): IDMTRigGUI = 'WDFaceUI' if rig.window(IDMTRigGUI, exists=True): rig.deleteUI(IDMTRigGUI) self.CurveSign = 'OFF' self.mainUI = rig.window(IDMTRigGUI, title=u'当前项目:' + self.project, menuBar=True, minimizeButton=True, maximizeButton=True) self.mainFLY = rig.formLayout() self.mainSRL = rig.scrollLayout(cr=True) self.mainCLM = rig.columnLayout(adj=True) #------------------------------------------------------------------ 部件选择 rig.rowColumnLayout(nc=6, columnWidth=[(1, 60), (2, 60), (3, 60), (4, 60), (5, 60), (6, 60)]) self.mainCB = rig.checkBox( l=u'主体', v=True, changeCommand=lambda i: self.changeOptionVars()) self.eyeCB = rig.checkBox( l=u'眼睛', v=True, changeCommand=lambda i: self.changeOptionVars()) self.tongueCB = rig.checkBox( l=u'舌头', v=True, changeCommand=lambda i: self.changeOptionVars()) self.earCB = rig.checkBox( l=u'耳朵', v=True, changeCommand=lambda i: self.changeOptionVars()) self.eyebrowCB = rig.checkBox( l=u'眉毛', v=True, changeCommand=lambda i: self.changeOptionVars()) self.toothCB = rig.checkBox( l=u'牙床', v=True, changeCommand=lambda i: self.changeOptionVars()) self.jointCB = rig.checkBox( l=u'骨骼', v=True, changeCommand=lambda i: self.changeOptionVars()) # self.eyeCB = rig.checkBox(l = u'眼睛',v = True,changeCommand = lambda i:self.changeOptionVars()) # self.tongueCB = rig.checkBox(l = u'舌头',v = True,changeCommand = lambda i:self.changeOptionVars()) # self.earCB = rig.checkBox(l = u'耳朵',v = True,changeCommand = lambda i:self.changeOptionVars()) # self.eyebrowCB = rig.checkBox(l = u'眉毛',v = True,changeCommand = lambda i:self.changeOptionVars()) # self.toothCB = rig.checkBox(l = u'牙床',v = True,changeCommand = lambda i:self.changeOptionVars()) self.allCB = [ 'mainCB', 'eyeCB', 'tongueCB', 'earCB', 'eyebrowCB', 'toothCB', 'jointCB' ] self.allBt = [ 'SkinBT', 'BlendShapeBT', 'LfEyeBT', 'RtEyeBT', 'LfToothBT', 'RtToothBT', 'LfEyebrowBT', 'RtEyebrowBT', 'TongueBT' ] self.dictData = { 'mainCB': ['SkinBT', 'BlendShapeBT'], 'eyeCB': ['LfEyeBT', 'RtEyeBT'], 'tongueCB': ['TongueBT'], 'earCB': [], 'eyebrowCB': ['LfEyebrowBT', 'RtEyebrowBT'], 'toothCB': ['LfToothBT', 'RtToothBT'], 'jointCB': [] } rig.setParent(self.mainCLM) #------------------------------------------------------------------ 参数设置 self.eyebrowISG = rig.intSliderGrp(field=True, label=u'眉弓控制器个数:', minValue=3, maxValue=20, fieldMinValue=3, fieldMaxValue=10000, value=17, columnAttach=[(1, 'left', 5), (2, 'left', 0), (3, 'both', 0)], columnWidth3=(100, 30, 150)) self.mouthISG = rig.intSliderGrp(field=True, label=u'嘴巴控制器个数:', minValue=3, maxValue=20, fieldMinValue=3, fieldMaxValue=10000, value=7, columnAttach=[(1, 'left', 5), (2, 'left', 0), (3, 'both', 0)], columnWidth3=(100, 30, 150)) self.cheefISG = rig.intSliderGrp(field=True, label=u'鼻唇沟控制器个数:', minValue=3, maxValue=20, fieldMinValue=3, fieldMaxValue=10000, value=6, columnAttach=[(1, 'left', 5), (2, 'left', 0), (3, 'both', 0)], columnWidth3=(100, 30, 150)) rig.button(l=u'生成定位控制器', c=lambda x: self.buildPosController()) #生成控制器 rig.button(l=u'刷新模版', c=lambda x: self.refreshTemplate()) #刷新模版 self.sizeFSG = rig.floatSliderGrp( field=True, label=u'调整控制器大小:', minValue=0.0001, maxValue=2, fieldMinValue=0.0001, fieldMaxValue=10000, value=1, columnAttach=[(1, 'left', 5), (2, 'left', 0), (3, 'both', 0)], columnWidth3=(100, 30, 150), cc=lambda x: self.changeConSize()) #调整控制器大小 rig.separator(st='out') #------------------------------------------------------------------ 载入模型 rig.text(u'头部模型:') rig.rowColumnLayout(nc=2, cal=[(1, 'left'), (2, 'right')]) self.SkinBT = rig.button(l=u'载入头部模型', c=lambda x: self.loadObj('SkinBT')) self.BlendShapeBT = rig.button( l=u'载入蒙皮头部模型', c=lambda x: self.loadObj('BlendShapeBT')) rig.setParent(self.mainCLM) rig.rowColumnLayout(nc=2) self.SkinTF = rig.textField(enable=False) self.BlendShapeTF = rig.textField(enable=False) rig.setParent(self.mainCLM) rig.text(u'眼睛模型:') rig.rowColumnLayout(nc=2) self.LfEyeBT = rig.button(l=u'载入左眼', c=lambda x: self.loadObj('LfEyeBT')) self.RtEyeBT = rig.button(l=u'载入右眼', c=lambda x: self.loadObj('RtEyeBT')) rig.setParent(self.mainCLM) rig.rowColumnLayout(nc=2) self.LfEyeTF = rig.textField(enable=False) self.RtEyeTF = rig.textField(enable=False) rig.setParent(self.mainCLM) rig.text(u'牙床模型:') rig.rowColumnLayout(nc=2) self.LfToothBT = rig.button(l=u'载入上牙床', c=lambda x: self.loadObj('LfToothBT')) self.RtToothBT = rig.button(l=u'载入下牙床', c=lambda x: self.loadObj('RtToothBT')) rig.setParent('..') rig.rowColumnLayout(nc=2) self.LfToothTF = rig.textField(enable=False) self.RtToothTF = rig.textField(enable=False) rig.setParent(self.mainCLM) rig.text(u'眉毛模型:') rig.rowColumnLayout(nc=2) self.LfEyebrowBT = rig.button(l=u'载入左边眉毛', c=lambda x: self.loadObj('LfEyebrowBT')) self.RtEyebrowBT = rig.button(l=u'载入右边眉毛', c=lambda x: self.loadObj('RtEyebrowBT')) rig.setParent('..') rig.rowColumnLayout(nc=2) self.LfEyebrowTF = rig.textField(enable=False) self.RtEyebrowTF = rig.textField(enable=False) rig.setParent(self.mainCLM) rig.text(u'舌头模型:') self.TongueBT = rig.button(l=u'载入舌头', w=300, c=lambda x: self.loadObj('TongueBT')) self.TongueTF = rig.textField(w=300, enable=False) rig.setParent(self.mainCLM) rig.separator(st='out') #----------------------------------------------------------------- 镜像控制器 rig.rowColumnLayout(nc=3, cw=(1, 100)) rig.text(l=u'镜像控制器:') rig.button(l=u'左 ——>右', c=lambda x: self.mirrorCon('X', True)) rig.button(l=u'右——>左 ', c=lambda x: self.mirrorCon('X', False)) rig.setParent(self.mainCLM) rig.button(l=u'生成设置', c=lambda x: self.startSetup()) #生成控制器 rig.separator(st='out') #----------------------------------------------------------------- 镜像blendShape曲线 rig.rowColumnLayout(nc=3) rig.button(l=u'修改blendShape', c=lambda x: self.mirrorBlendShape('X', True, False)) rig.button(l=u'镜像到右', c=lambda x: self.mirrorBlendShape('X', True, True)) rig.button(l=u'镜像到左', c=lambda x: self.mirrorBlendShape('X', False, True)) rig.setParent(self.mainCLM) # #----------------------------------------------------------------- 调整范围 # rig.rowColumnLayout(nc = 3,cw = (1,100)) # rig.text(l = u'调整范围:') # rig.button(l = u'限定位移范围', c = lambda x:rig.setToolTo(self.limitTransformMP)) # rig.button(l = u'限定旋转范围', c = lambda x:rig.setToolTo(self.move)) # rig.setParent(self.mainCLM) # # #----------------------------------------------------------------- 恢复blendShape曲线 # rig.rowColumnLayout(nc = 3,cw = (1,100)) # rig.text(l = u'恢复BS曲线:') # rig.button(l = u'恢复Belndshape曲线') # rig.button(l = u'恢复所有Belndshape曲线') # rig.setParent(self.mainCLM) #----------------------------------------------------------------- 隐藏控制器 rig.rowColumnLayout(nc=4) rig.button(l=u'隐藏small控制器', c=lambda x: self.displayConntroller('small', 'hide')) rig.button(l=u'隐藏macro控制器', c=lambda x: self.displayConntroller('macro', 'hide')) rig.button(l=u'隐藏main控制器', c=lambda x: self.displayConntroller('main', 'hide')) rig.button(l=u'隐藏十字控制器', c=lambda x: self.displayConntroller('cross', 'hide')) rig.setParent(self.mainCLM) #----------------------------------------------------------------- 显示控制器 rig.rowColumnLayout(nc=4) rig.button(l=u'显示small控制器', c=lambda x: self.displayConntroller('small', 'show')) rig.button(l=u'显示macro控制器', c=lambda x: self.displayConntroller('macro', 'show')) rig.button(l=u'显示main控制器', c=lambda x: self.displayConntroller('main', 'show')) rig.button(l=u'显示十字控制器', c=lambda x: self.displayConntroller('cross', 'show')) rig.setParent(self.mainCLM) #----------------------------------------------------------------- 导入导出曲线 rig.separator(st='out') rig.separator(st='out') rig.rowColumnLayout(nc=3) rig.button(l=u'导入导出blendShape曲线', c=lambda x: self.importExportBlendShapeCurve()) rig.button(l=u'导入导出控制器形状', c=lambda x: self.importExportControlCurve()) rig.button(l=u'导入导出模版信息', c=lambda x: self.importExportTemplateInfo()) rig.setParent(self.mainCLM) rig.button(l=u'恢复选择的控制器到初始POSE', c=lambda x: self.restorySelectCon()) rig.button(l=u'恢复模版', c=lambda x: self.restoryTemplate()) rig.setParent(self.mainFLY) rig.formLayout(self.mainFLY, e=True, attachForm=(self.mainSRL, 'top', 2)) rig.formLayout(self.mainFLY, e=True, attachForm=(self.mainSRL, 'left', 2)) rig.formLayout(self.mainFLY, e=True, attachForm=(self.mainSRL, 'bottom', 2)) rig.formLayout(self.mainFLY, e=True, attachForm=(self.mainSRL, 'right', 2)) #设置OptionVars self.getOptionVars() self.setOptionVars() self.getSkinObj() #得到蒙皮物体 rig.showWindow(IDMTRigGUI) #显示界面 rig.window(self.mainUI, e=True, wh=(400, 800))
def gui(): ''' Creats the gui ''' bw = 500 sw = 200 win = 'win3DFGrade' if (cmds.window(win, ex=True)): cmds.deleteUI(win) if (cmds.windowPref(win, ex=True)): cmds.windowPref(win, r=1) cmds.window(win, w=bw, h=400) ''' Main section of tool Displays scene name with button for opening new scene files ''' top_main = cmds.columnLayout(w=500) cmds.rowColumnLayout(w=500, nc=3) cmds.text(l='Scene Name', w=133) cmds.textField(w=133, tx=(cmds.file(q=True, sn=True))) cmds.button(l='Open Scene', w=133, c=open_scene) cmds.setParent(top_main) ''' Dislays grading options such as professionalism and late turnin decutions ''' cmds.rowColumnLayout(w=500, nc=6) cmds.text('Professional', w=66) cmds.floatField(v=0.00, w=66) cmds.text('Late Turnin', w=66) cmds.floatField(v=0.00, w=66) cmds.text('Total Grade', w=66) cmds.floatField(v=0.00, w=66) cmds.setParent(top_main) ''' Creats Export button ''' cmds.columnLayout(w=bw, cat=['left', 200]) cmds.button(l='Export', w=100, c=excel_export) cmds.setParent(top_main) ''' Subsection of tool ''' cmds.columnLayout(w=500) cmds.scrollLayout(w=500) bottom_main = cmds.columnLayout(w=bw) ''' Creates the 'Joint' grading sections ''' joint_frame = cmds.frameLayout('Joints', cll=True, w=bw - 10) joint_col = cmds.columnLayout() main_widget1 = Main_Widget('Joint Naming - Invalid', check_joint_naming(cmds.ls(typ='joint')), joint_naming, pf=0) cmds.setParent(joint_col) main_widget2 = Main_Widget('Joint Rotations - Invalid', check_joint_rotates(cmds.ls(typ='joint')), joint_rotates, pf=1) cmds.setParent(joint_col) main_widget3 = Main_Widget('Joint Translates - Warning', check_joint_translates(cmds.ls(typ='joint')), joint_naming, pf=0) cmds.setParent(joint_col) #main_widget4 = Main_Widget('Joint Orientaiton - Invalid', check_joint_orient(cmds.ls(typ='joint')), joint_naming, pf=0) cmds.setParent(bottom_main) ''' Creates the 'Curve' grading sections ''' cmds.frameLayout(l='Curves', cll=True, w=bw - 10) curve_col = cmds.columnLayout() main_widget5 = Main_Widget('Curve Naming - Invalid', check_curve_naming(cmds.ls(typ='nurbsCurve')), joint_naming, pf=1) cmds.setParent(curve_col) main_widget6 = Main_Widget('Curve Transforms - Invalid', check_transforms(cmds.ls(typ='nurbsCurve')), joint_rotates, pf=1) cmds.setParent(curve_col) main_widget7 = Main_Widget('Curve History - Invalid', check_curve_hist(cmds.ls(typ='nurbsCurve')), joint_rotates, pf=1) cmds.setParent(bottom_main) ''' Creates the 'Geometry' grading sections ''' cmds.frameLayout(l='Geometry', cll=True, w=bw - 10) geo_col = cmds.columnLayout() main_widget8 = Main_Widget('Geo Naming - Invalid', check_geo_naming(cmds.ls(typ='mesh')), joint_naming, pf=0) cmds.setParent(geo_col) main_widget9 = Main_Widget('Geo Transforms - Invalid', check_transforms(cmds.ls(typ='mesh')), joint_naming, pf=0) cmds.setParent(geo_col) main_widget10 = Main_Widget('Geo History - Invalid', check_geo_hist(cmds.ls(typ='mesh')), joint_naming, pf=0) cmds.setParent(bottom_main) cmds.showWindow(win)
def propRigWindow(): propRig_Window = 'propRig_v01' # if cmds.window(propRig_Window, q=1, ex=1): # cmds.deleteUI(propRig_Window) cmds.window(propRig_Window, h=50) #__________ 1. Model Check __________# cmds.columnLayout(adj=1, bgc=([0.2, 0.2, 0.2]), parent=propRig_Window) cmds.frameLayout(l='Model Check', collapsable=1, collapse=1, bgc=[0.7, 0.3, 0.3]) cmds.separator(st='single') cmds.text('1. MODEL CHECK', font='obliqueLabelFont', h=15) cmds.separator(st='single') cmds.rowColumnLayout(numberOfColumns=3, columnWidth=[(1, 50), (2, 180), (3, 50)]) cmds.text(" ") cmds.button(l='Run Checker Tool ', w=150, h=30, bgc=([1, 0.8, 0.8]), c='CK.checker()') cmds.text(" ") cmds.separator(st='none', h=15) cmds.setParent('..') #__________ 2. dxRig setting __________# cmds.columnLayout(adj=1, bgc=([0.2, 0.2, 0.2]), parent=propRig_Window) cmds.frameLayout(l='Create dxRig Node', collapsable=1, collapse=1, bgc=[0.75, 0.6, 0.15]) cmds.separator(st='single', bgc=([0.5, 0.5, 0.1])) cmds.text('2. CREATE dxRig NODE', font='obliqueLabelFont', h=20) cmds.separator(st='single', bgc=([0.5, 0.5, 0.1])) cmds.rowColumnLayout(numberOfColumns=3, columnWidth=[(1, 50), (2, 180), (3, 50)]) cmds.text(" ") cmds.button(l='Create !', w=150, h=30, bgc=([1, 0.87, 0.76]), c='DX.Create_propRig_group()') cmds.text(" ") cmds.separator(st='none', h=20) cmds.setParent('..') #__________ 3. Controller Setting __________# cmds.columnLayout(adj=1, bgc=([0.2, 0.2, 0.2]), parent=propRig_Window) conSet_frameLayout = cmds.frameLayout(l='Create Controller', collapsable=1, collapse=1, bgc=[0.4, 0.55, 0.3]) cmds.separator(st='none') cmds.separator(st='single', bgc=([0.5, 0.5, 0.25])) cmds.text('3. CON SETTING', font='obliqueLabelFont', h=20, bgc=([0.7, 0.9, 0.7])) cmds.separator(st='single', bgc=([0.5, 0.5, 0.25])) # subCON # #cmds.rowColumnLayout (numberOfColumns=3, columnWidth=[(1,90), (2,90), (3,90)]) #cmds.text('sub CON :', h=40, font='obliqueLabelFont') #cmds.radioCollection() #RButton_SUBCon_no = cmds.radioButton ('createWith', l='Create with') #RButton_SUBCon = cmds.radioButton ('add', l='Add') # NodeType # cmds.rowColumnLayout(numberOfColumns=4, columnWidth=[(1, 70), (2, 75), (3, 85), (4, 50)]) cmds.text('Node Type :', font='obliqueLabelFont') cmds.separator(st='none') cmds.separator(st='none') cmds.separator(st='none') cmds.setParent('..') cmds.rowColumnLayout(numberOfColumns=4, columnWidth=[(1, 20), (2, 85), (3, 100), (4, 70)]) cmds.separator(st='none') cmds.radioCollection() global RButton_Constraints, RButton_JointBinding, RButton_None RButton_Constraints = cmds.radioButton(l='Constraint') RButton_JointBinding = cmds.radioButton(l='Joint Binding') RButton_None = cmds.radioButton(l='None') cmds.separator(st='none', h=10) # COLOR # color_frameLayout = cmds.frameLayout(l=" ", p=conSet_frameLayout) cmds.rowColumnLayout(numberOfColumns=4, columnWidth=[(1, 70), (2, 70), (3, 10), (4, 120)]) cmds.separator(st="none", h=5) cmds.separator(st="none", h=5) cmds.separator(st="none", h=5) cmds.separator(st="none", h=5) cmds.text('Color :', font='obliqueLabelFont') cmds.textField('colorValueTF', tx="0", ed=0) cmds.text(" ") cmds.checkBox(l='selection Highlighting', onCommand='selectionHighliting_ON ()', offCommand='selectionHighliting_OFF ()', v=1) cmds.separator(st='none') cmds.separator(st='none') cmds.separator(st='none') cmds.separator(st='single', bgc=([0.5, 0.5, 0.2])) cmds.columnLayout(adj=1, h=100, p=color_frameLayout) cmds.rowColumnLayout(numberOfColumns=5, columnWidth=[(1, 56), (2, 56), (3, 56), (4, 56), (5, 56)]) cmds.button(l='13', bgc=[1, 0, 0], c='CL.colorSet (13)') cmds.button(l='4', bgc=[0.608, 0, 0.157], c='CL.colorSet (4)') cmds.button(l='31', bgc=[0.631, 0.188, 0.412], c='CL.colorSet (31)') cmds.button(l='30', bgc=[0.435, 0.188, 0.627], c='CL.colorSet (30)') cmds.button(l='20', bgc=[1, 0.686, 0.686], c='CL.colorSet (20)') cmds.button(l='17', bgc=[1, 1, 0], c='CL.colorSet (17)') cmds.button(l='22', bgc=[1, 1, 0.384], c='CL.colorSet (22)') cmds.button(l='25', bgc=[0.62, 0.627, 0.188], c='CL.colorSet (25)') cmds.button(l='26', bgc=[0.408, 0.627, 0.188], c='CL.colorSet (26)') cmds.button(l='23', bgc=[0, 0.6, 0.325], c='CL.colorSet (23)') cmds.button(l='6', bgc=[0, 0, 1], c='CL.colorSet (6)') cmds.button(l='29', bgc=[0.188, 0.404, 0.627], c='CL.colorSet (29)') cmds.button(l='28', bgc=[0.188, 0.627, 0.627], c='CL.colorSet (28)') cmds.button(l='18', bgc=[0.388, 0.863, 1], c='CL.colorSet (18)') cmds.button(l='14', bgc=[0, 1, 0], c='CL.colorSet (14)') cmds.button(l='16', bgc=[1, 1, 1], c='CL.colorSet (16)') cmds.button(l='24', bgc=[0.627, 0.412, 0.188], c='CL.colorSet (24)') cmds.button(l='10', bgc=[0.537, 0.278, 0.2], c='CL.colorSet (10)') cmds.button(l='21', bgc=[0.89, 0.675, 0.475], c='CL.colorSet (21)') cmds.button(l='default', bgc=[0.467, 0.467, 0.467], c='CL.colorSet (0)') #cmds.button(l='1', bgc=[0, 0, 0], c='CL.colorSet (1)') #cmds.button(l='2', bgc=[0.247, 0.247, 0.247], c='CL.colorSet (2)') #cmds.button(l='3', bgc=[0.498, 0.498, 0.498], c='CL.colorSet (3)') #cmds.button(l='5', bgc=[0, 0.016, 0.373], c='CL.colorSet (5)') #cmds.button(l='7', bgc=[0, 0.275, 0.094], c='CL.colorSet (7)') #cmds.button(l='8', bgc=[0.145, 0, 0.263], c='CL.colorSet (8)') #cmds.button(l='9', bgc=[0.78, 0, 0.78], c='CL.colorSet (9)') #cmds.button(l='11', bgc=[0.243, 0.133, 0.122], c='CL.colorSet (11)') #cmds.button(l='12', bgc=[0.6, 0.145, 0], c='CL.colorSet (12)') #cmds.button(l='19', bgc=[0.263, 1, 0.635], c='CL.colorSet (19)') #cmds.button(l='15', bgc=[0, 0.255, 0.6], c='CL.colorSet (15)') #cmds.button(l='27', bgc=[0.188, 0.627, 0.365], c='CL.colorSet (27)') # conSet # con_frameLayout = cmds.frameLayout(l=" ", p=conSet_frameLayout) cmds.rowColumnLayout(numberOfColumns=4, columnWidth=[(1, 140), (2, 68), (3, 3), (4, 68)]) cmds.text('< Pivot Centre >') cmds.separator(h=30) cmds.separator(h=30) cmds.separator(h=30) cmds.text(' + MODELING :', font='obliqueLabelFont') cmds.button(l='Single', h=30, backgroundColor=([0.2, .7, 0]), c='CC.create_SingleCON ()') cmds.separator(st='none') cmds.button(l='Join', h=30, backgroundColor=([0.2, .7, 0]), c='CC.create_JoinCON ()') cmds.separator(st='none', h=3) cmds.separator(st='none') cmds.separator(st='none') cmds.separator(st='none') cmds.text(' + GRID :', font='obliqueLabelFont') cmds.button(l='Single', h=30, backgroundColor=([1, 1, 1]), c='CC.create_SingleCON_CT ()') cmds.separator(st='none') cmds.button(l='Join', h=30, backgroundColor=([1, 1, 1]), c='CC.create_JoinCON_CT ()') # create subCON # subCON_frameLayout = cmds.frameLayout(l=" ", p=conSet_frameLayout) cmds.rowColumnLayout(numberOfColumns=4, columnWidth=[(1, 140), (2, 68), (3, 3), (4, 68)]) cmds.separator(st='none', h=10) cmds.separator(st='none', h=10) cmds.separator(st='none', h=10) cmds.separator(st='none', h=10) cmds.text('< subCON > :') cmds.button(l='only', h=30, bgc=[0.4, 0.4, 0.4], c='SC.sort_MC_or_SC ()') cmds.separator(st='none', h=5) cmds.button(l='several', h=30, bgc=[0.4, 0.4, 0.4], c='SC.sort_MC_or_SC ()') cmds.separator(st='none', h=5) #__________ 4. ROOT CON __________# cmds.columnLayout(adj=1, p=conSet_frameLayout) #cmds.separator (st='none', h=10) cmds.separator(st='single', bgc=([0.5, 0.3, 0.5])) cmds.text('4. ROOT_CON', font='obliqueLabelFont', h=20, bgc=([0.8, 0.8, 1])) #cmds.text ('4. ROOT CON', font='obliqueLabelFont', h=20, bgc=([0.6, 0.4, 1])) cmds.separator(st='none', h=7) cmds.separator(st='single', bgc=([0.5, 0.3, 0.5])) cmds.rowColumnLayout(numberOfColumns=2, columnWidth=[(1, 140), (2, 140)]) cmds.text('< Pivot Centre >') cmds.separator(h=30) cmds.text(' + MODELING :', font='obliqueLabelFont') cmds.button(l='Create', h=30, backgroundColor=([0.6, 0.4, 1]), c='CC.create_rootCON ()') cmds.separator(st='none', h=3) cmds.separator(st='none', h=3) cmds.text(' + GRID :', font='obliqueLabelFont') cmds.button(l='Create', h=30, backgroundColor=([1, 1, 1]), c='CC.create_rootCON_CT ()') cmds.separator(st='none', h=20) cmds.setParent('..') #__________ 5. EXTRA __________# cmds.columnLayout(adj=1, bgc=([0.2, 0.2, 0.2]), parent=propRig_Window) cmds.frameLayout(l='EXTRA', collapsable=1, collapse=1, bgc=[0.3, 0.46, 0.5]) cmds.rowColumnLayout(numberOfColumns=4, columnWidth=[(1, 2), (2, 136), (3, 4), (4, 136)]) cmds.separator(st='none') cmds.button(l='SELECT Hierarchy', h=30, bgc=[0.5, 0.5, 0.5], c='EX.selectHierarchy ()') cmds.separator(st='none') cmds.button(l='DELETE Constraints', h=30, bgc=[0.5, 0.5, 0.5], c='EX.deleteConstraint ()') cmds.separator(st='none', h=2) cmds.separator(st='none') cmds.separator(st='none') cmds.separator(st='none') cmds.separator(st='none') cmds.button(l='attach LOC', h=30, bgc=[0.5, 0.5, 0.5], c='EX.attachLOC ()') cmds.separator(st='none') cmds.button(l='create NUL', h=30, bgc=[0.5, 0.5, 0.5], c='EX.createNUL ()') cmds.separator(st='none', h=2) cmds.separator(st='none') cmds.separator(st='none') cmds.separator(st='none') cmds.separator(st='none') cmds.button(l='LRA ON', h=30, bgc=[0.5, 0.5, 0.5], c='EX.localRotationAxes (1)') cmds.separator(st='none') cmds.button(l='LRA OFF', h=30, bgc=[0.5, 0.5, 0.5], c='EX.localRotationAxes (0)') cmds.separator(st='none', h=2) cmds.separator(st='none') cmds.separator(st='none') cmds.separator(st='none') cmds.separator(st='none') cmds.button(l='CENTER JOINT', h=30, bgc=[0.5, 0.5, 0.5], c='EX.center_JNT ()') cmds.separator(st='none') cmds.button(l='JNT ZERO OUT', h=30, bgc=[0.5, 0.5, 0.5], c='EX.zeroOut ()') cmds.separator(st='none', h=2) cmds.separator(st='none') cmds.separator(st='none') cmds.separator(st='none') cmds.separator(st='none') cmds.button(l='SNAP', h=30, bgc=[0.5, 0.5, 0.5], c='EX.snap ()') cmds.separator(st='none') cmds.separator(st='none') cmds.separator(st='none', h=2) cmds.separator(st='none') cmds.separator(st='none') cmds.separator(st='none') # window GUI : Size cmds.window(propRig_Window, e=1, width=290, sizeable=1) cmds.showWindow(propRig_Window)
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): self.topBtn = [u'Mesh', u'Surfaces', u'灯光', u'摄像机', u'Curves'] self.color = [(0.3, 0.39, 0.32), (0.388, 0.29, 0.29), (0.29, 0.3, 0.388), (0.898, 0.412, 0.161)] #暂存器字典 self.selStor = {} #生成窗口 if cmds.window('JGBSelectTool', q=1, ex=1): cmds.deleteUI('JGBSelectTool') cmds.window('JGBSelectTool', t=u'选择暂存器 v1.0') cmds.scrollLayout('scrollLayout') #cmds.gridLayout('topGrid',cwh=[90,30],nrc=[2,3]) cmds.frameLayout(l='筛选选择', ann=u'筛选出选中物体的某类物体', borderStyle='in') cmds.rowColumnLayout('topLayout', nc=3, co=[1, 'left', 5], ro=[1, 'top', 5], rat=[2, 'top', 4], cs=([1, 0], [2, 10], [3, 5]), cw=([1, 85], [2, 85], [3, 85])) for s in self.topBtn: cmds.button(s, l=s, ann=u"选择%s" % s, w=85, c=Callback(self.filterSel, s)) cmds.setParent('..') cmds.setParent('..') cmds.frameLayout('xuanzeFrame', l='选择暂存', ann=u'存储选择器', borderStyle='in', w=275) #cmds.setParent('xuanzeFrame') #cmds.columnLayout() self.geshu = range(6) for i in self.geshu: cmds.rowLayout('xuanzeLayout%d' % i, nc=4, cw4=[50, 115, 50, 50], h=30) cmds.button('sel%d' % i, l='选择%d' % (i + 1), w=50, h=22, bgc=self.color[0], ann='选择存储的物体%d' % (i + 1), c=Callback(self.getSel, i)) cmds.textField('selectName%d' % i, tx='', ann=u'你起得啥名字在这儿!', enable=0, w=115) cmds.button(l='拾取', w=50, h=22, ann=u'拾取当前选择的所有物体,起个名字!', c=Callback(self.setSel, i)) cmds.button('clearBtn%d' % i, l='清除', w=50, h=22, ann=u'清除当前存储', c=Callback(self.clearSel, i)) cmds.setParent('..') cmds.button(l='清除所有', ann=u'清除所有存储', c=lambda *args: self.claerAll()) cmds.setParent('..') cmds.frameLayout('shuoming', l='发明家(*^▽^*)', ann=u'欢迎分享交流学习,意见反馈\n加qq联系我( ̄▽ ̄)~*', borderStyle='in', w=275) #cmds.columnLayout( cal='right',cat=['right',1]) cmds.rowColumnLayout(nc=1, cs=([1, 00])) cmds.text(l='designed by Jguobao', al='right') cmds.text(l='*****@*****.**', hl=1, al='right') cmds.showWindow('JGBSelectTool') cmds.window('JGBSelectTool', e=1, wh=[300, 420])
def arnoldLicenseDialog(): if (cmds.window("ArnoldLicense", ex=True)): cmds.deleteUI("ArnoldLicense") w = cmds.window("ArnoldLicense", title="Arnold Node-locked License") cmds.window("ArnoldLicense", edit=True, width=550, height=280) cmds.columnLayout() cmds.rowColumnLayout(numberOfColumns=4, columnWidth=[(1, 10), (2, 64), (3, 18), (4, 450)]) cmds.text(label="") cmds.text(label="") cmds.text(label="") cmds.text(label="") arnoldAboutText = u"A node-locked license allows you to render with Arnold on one computer only.\n" cmds.text(label="") cmds.image(image="licensing_mtoa.png") cmds.text(label="") cmds.text(align="left", label=arnoldAboutText) cmds.text(label="") cmds.text(label="") cmds.text(label="") cmds.text(label="") cmds.separator() cmds.separator() cmds.separator() cmds.separator() cmds.setParent('..') cmds.separator() cmds.rowColumnLayout(numberOfColumns=2, columnWidth=[(1, 10), (2, 500)]) macText = u"To issue a node-locked license, we need the MAC address of your computer.\n" cmds.text(label="") cmds.text(align="left", label=macText) cmds.setParent('..') cmds.separator() cmds.rowColumnLayout(numberOfColumns=6, columnWidth=[(1, 10), (2, 90), (3, 190), (4, 40), (5, 80), (6, 132)]) cmds.text(label="") cmds.text(align="left", label="MAC Address") name = cmds.textField() mac = get_mac() mactext = ("%012X" % mac) cmds.textField(name, edit=True, text=mactext, editable=False) cmds.text(label="") cmds.text(label="") cmds.text(label="") cmds.text(label="") cmds.text(label="") cmds.text(label="") cmds.text(label="") cmds.text(label="") cmds.text(label="") cmds.separator() cmds.separator() cmds.separator() cmds.separator() cmds.separator() cmds.separator() cmds.setParent('..') cmds.rowColumnLayout(numberOfColumns=2, columnWidth=[(1, 10), (2, 500)]) macText = u"To install your node-locked license, locate the license file (.lic) and click Install.\n" cmds.text(label="") cmds.text(align="left", label=macText) cmds.setParent('..') cmds.rowColumnLayout(numberOfColumns=8, columnWidth=[(1, 10), (2, 90), (3, 190), (4, 7), (5, 26), (6, 7), (7, 80), (8, 132)]) cmds.text(label="") cmds.text(align="left", label="License file (.lic)") file = cmds.textField() cmds.text(label="") cmds.button(label='...', command=lambda *args: dotDotDotButtonPush(file)) cmds.text(label="") cmds.button(label='Install', command=lambda *args: installButtonPush(file)) cmds.text(label="") cmds.text(label="") cmds.text(label="") cmds.text(label="") cmds.text(label="") cmds.text(label="") cmds.text(label="") cmds.text(label="") cmds.text(label="") cmds.text(label="") cmds.text(label="") cmds.text(label="") cmds.text(label="") cmds.text(label="") cmds.text(label="") cmds.text(label="") cmds.text(label="") cmds.setParent('..') cmds.rowColumnLayout(numberOfColumns=5, columnWidth=[(1, 200), (2, 160), (3, 80), (4, 20), (5, 80)]) cmds.text(label="") cmds.text(label="") cmds.button(label='Close', command=('import maya.cmds as cmds;cmds.deleteUI(\"' + w + '\", window=True)')) cmds.text(label="") cmds.button(label='Help', c=lambda *args: cmds.launch( webPage='https://www.solidangle.com/support/licensing/')) cmds.setParent('..') cmds.showWindow(w)
def create_UI(self): ## 윈도우 ID## windowID = 'short_UI' ##windows reset if cmds.window(windowID, ex=True): cmds.deleteUI(windowID) cmds.window(windowID, t='short_UI', rtf=True, s=True, mnb=True, mxb=True, wh=(30, 30)) ##master layer master = cmds.columnLayout() cmds.columnLayout() ##싱글 텍스트필드 #cmds.rowColumnLayout( nc=1 ) cmds.button(l=u'pose import', w=300, h=30, c=pm.Callback(self.import_short_skirt)) #cmds.rowColumnLayout( nc=1 ) cmds.setParent(master) cmds.rowColumnLayout(nr=1) cmds.text(l=u'controller count', w=100) #cmds.textField('number_tex_box' , w = 30 , h = 20 , tx = '9', textChangedCommand='skirt_command.change_number()') # textChangedCommand는 ui에서 text를 바꿀때 커멘드입력이 안돼도 실시간으로 쿼리가능 cmds.textField('number_tex_box', w=30, h=20, tx='7') cmds.setParent(master) cmds.rowColumnLayout(nr=1) cmds.text(l=u'total', w=100) cmds.textField('total_tex_box', w=150, h=20, tx='world_M_CTL') cmds.button(l=u'등록', w=50, c=pm.Callback(self.sels_tex, 'total')) cmds.setParent(master) cmds.rowColumnLayout(nr=1) cmds.text(l=u'hip', w=100) cmds.textField('hip_tex_box', w=150, h=20, tx='root_M_skinJNT') cmds.button(l=u'등록', w=50, c=pm.Callback(self.sels_tex, 'hip')) cmds.setParent(master) cmds.rowColumnLayout(nr=1) cmds.text(l=u'spline01', w=100) cmds.textField('spn_01_tex_box', w=150, h=20, tx='spine_01_M_skinJNT') cmds.button(l=u'등록', w=50, c=pm.Callback(self.sels_tex, 'spn')) cmds.setParent(master) cmds.rowColumnLayout(nr=1) cmds.text(l=u'L_Leg', w=100) cmds.textField('L_leg_tex_box', w=150, h=20, tx='leg_L_skinJNT') cmds.button(l=u'등록', w=50, c=pm.Callback(self.sels_tex, 'L_leg')) cmds.setParent(master) cmds.rowColumnLayout(nr=1) cmds.text(l=u'L_Knee', w=100) cmds.textField('L_knee_tex_box', w=150, h=20, tx='knee_L_skinJNT') cmds.button(l=u'등록', w=50, c=pm.Callback(self.sels_tex, 'L_knee')) cmds.setParent(master) cmds.rowColumnLayout(nr=1) cmds.text(l=u'R_Leg', w=100) cmds.textField('R_leg_tex_box', w=150, h=20, tx='leg_R_skinJNT') cmds.button(l=u'등록', w=50, c=pm.Callback(self.sels_tex, 'R_leg')) cmds.setParent(master) cmds.rowColumnLayout(nr=1) cmds.text(l=u'R_Knee', w=100) cmds.textField('R_knee_tex_box', w=150, h=20, tx='knee_R_skinJNT') cmds.button(l=u'등록', w=50, c=pm.Callback(self.sels_tex, 'R_knee')) cmds.setParent(master) cmds.button(l=u'배치', w=301, h=30, c=pm.Callback(self.pose_position)) cmds.setParent(master) cmds.button(l=u'연결', w=301, h=30, c=pm.Callback(self.skirt_connect)) cmds.setParent(master) cmds.showWindow(windowID)
def floatSliderColumn(allWidth): textWidth = allWidth / 3 sliderWidth = allWidth - textWidth - 10 return cmds.rowColumnLayout(nc=2, cw=[(1, textWidth), (2, sliderWidth)])
def create_UI(self): ## 윈도우 ID## windowID = 'long_UI' ##windows reset if cmds.window(windowID, ex=True): cmds.deleteUI(windowID) cmds.window(windowID, t='long_UI', rtf=True, s=True, mnb=True, mxb=True, wh=(30, 30)) ##master layer master = cmds.columnLayout() cmds.columnLayout() ##싱글 텍스트필드 #cmds.rowColumnLayout( nc=1 ) cmds.button(l=u'pose import', w=300, h=30, c=pm.Callback(self.import_long_skirt)) #cmds.rowColumnLayout( nc=1 ) cmds.setParent(master) cmds.rowColumnLayout(nr=1) cmds.text(l=u' * leg, knee, ankle에 위치한 컨트롤러는 고정') cmds.setParent(master) cmds.rowColumnLayout(nr=1) #cmds.text(l = u'up controller' ,w = 100) #cmds.textField('number_tex_box' , w = 30 , h = 20 , tx = '9', textChangedCommand='skirt_command.change_number()') # textChangedCommand는 ui에서 text를 바꿀때 커멘드입력이 안돼도 실시간으로 쿼리가능 #cmds.textField('up number_tex_box' , w = 30 , h = 20 , tx = '2') # 기존 텍스트필드에 숫자입력방식 cmds.intSliderGrp('up_segments', w=300, columnAttach=(1, 'left', 0), columnWidth=(1, 97), field=True, l=" Up Segments", max=10, min=1, value=2) # 슬라이드바 방식, columnAttach와 columnWidth는 정렬 옵션 cmds.setParent(master) cmds.rowColumnLayout(nr=1) # cmds.text(l = u'down controller' ,w = 100) # cmds.textField('down number_tex_box' , w = 30 , h = 20 , tx = '2') # 기존 텍스트필드에 숫자입력방식 cmds.intSliderGrp('down_segments', w=300, columnAttach=(1, 'left', 0), columnWidth=(1, 97), field=True, l=" Down Segments", max=10, min=1, value=2) # 슬라이드바 방식 cmds.setParent(master) cmds.rowColumnLayout(nr=1) cmds.text( l=u' -----------------------------------------------------------------------' ) cmds.setParent(master) cmds.rowColumnLayout(nr=1) cmds.text(l=u'total', w=100) cmds.textField('total_tex_box', w=150, h=20, tx='world_M_CTL') cmds.button(l=u'등록', w=50, c=pm.Callback(self.sels_tex, 'total')) cmds.setParent(master) cmds.rowColumnLayout(nr=1) cmds.text(l=u'hip', w=100) cmds.textField('hip_tex_box', w=150, h=20, tx='root_M_skinJNT') cmds.button(l=u'등록', w=50, c=pm.Callback(self.sels_tex, 'hip')) cmds.setParent(master) cmds.rowColumnLayout(nr=1) cmds.text(l=u'spline01', w=100) cmds.textField('spn_01_tex_box', w=150, h=20, tx='spine_01_M_skinJNT') cmds.button(l=u'등록', w=50, c=pm.Callback(self.sels_tex, 'spn')) cmds.setParent(master) cmds.rowColumnLayout(nr=1) cmds.text(l=u'L_Leg', w=100) cmds.textField('L_leg_tex_box', w=150, h=20, tx='leg_L_skinJNT') cmds.button(l=u'등록', w=50, c=pm.Callback(self.sels_tex, 'L_leg')) cmds.setParent(master) cmds.rowColumnLayout(nr=1) cmds.text(l=u'L_Knee', w=100) cmds.textField('L_knee_tex_box', w=150, h=20, tx='knee_L_skinJNT') cmds.button(l=u'등록', w=50, c=pm.Callback(self.sels_tex, 'L_knee')) cmds.setParent(master) cmds.rowColumnLayout(nr=1) cmds.text(l=u'L_Ankle', w=100) cmds.textField('L_ankle_tex_box', w=150, h=20, tx='ankle_L_skinJNT') cmds.button(l=u'등록', w=50, c=pm.Callback(self.sels_tex, 'L_ankle')) cmds.setParent(master) cmds.rowColumnLayout(nr=1) cmds.text(l=u'R_Leg', w=100) cmds.textField('R_leg_tex_box', w=150, h=20, tx='leg_R_skinJNT') cmds.button(l=u'등록', w=50, c=pm.Callback(self.sels_tex, 'R_leg')) cmds.setParent(master) cmds.rowColumnLayout(nr=1) cmds.text(l=u'R_Knee', w=100) cmds.textField('R_knee_tex_box', w=150, h=20, tx='knee_R_skinJNT') cmds.button(l=u'등록', w=50, c=pm.Callback(self.sels_tex, 'R_knee')) cmds.setParent(master) cmds.rowColumnLayout(nr=1) cmds.text(l=u'R_Ankle', w=100) cmds.textField('R_ankle_tex_box', w=150, h=20, tx='ankle_R_skinJNT') cmds.button(l=u'등록', w=50, c=pm.Callback(self.sels_tex, 'R_ankle')) cmds.setParent(master) cmds.button(l=u'배치', w=301, h=30, c=pm.Callback(self.pose_position)) cmds.setParent(master) cmds.button(l=u'연결', w=301, h=30, c=pm.Callback(self.skirt_connect)) cmds.setParent(master) cmds.showWindow(windowID)
reload(fkr) reload(gn) reload(ikr) #check to see if window exists if mc.window("KiwTool", exists = True): mc.deleteUI("KiwTool") #create window ToolWindow = mc.window("KiwTool", title = "Kiw's RigTool", mnb = True, widthHeight=(200, 55)) #create a main layout mainLayout = mc.columnLayout () ######## setupGroup rig ########### setupGroupLayout = mc.frameLayout (w = 1100, label = "Setup Group", collapse = True, collapsable = True, parent = mainLayout) mc.rowColumnLayout( numberOfColumns=1, rowSpacing = (1, 3)) mc.text( label='Setup Group' ) rbnColmnSpacingList = list(map(lambda num : (num + 1, 3), range(0,10))) mc.rowColumnLayout( numberOfColumns=10, rowSpacing = (1,5), columnSpacing = rbnColmnSpacingList) mc.text( label='placemant Radius :' ) placemantRadius = mc.floatField(editable = True, v = 8.0) mc.button(label = 'Setup Group', command = 'grpSetup()') ######## rbn rig ########### ribbonLayout = mc.frameLayout (w = 1100, label = "Ribbon Rig", collapse = True, collapsable = True, parent = mainLayout) mc.rowColumnLayout( numberOfColumns=1, rowSpacing = (1, 3))