示例#1
0
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)
示例#2
0
 def UI_custom(self): 
        
     cmds.rowLayout(nc=2, columnWidth=[1, 100], adj=2)
     cmds.text(label="Number Of Joints:")
     numJoints = len(self.jointInfo)
     self.numberOfJointsField = cmds.intField(value=numJoints, min=2, changeCommand=self.changeNumberOfJoints)
     
     cmds.setParent("..")
     
     joints = self.getJoints()
     
     self.createRotationOrderUIControl(joints[0])
     
     cmds.separator()
     
     cmds.text(label="Orientation:", align="left")
     cmds.rowLayout(nc=3)
     cmds.attrEnumOptionMenu(attribute=self.moduleNamespace+":module_grp.sao_local", label="Local:")
     cmds.text(label="will be oriented to")
     cmds.attrEnumOptionMenu(attribute=self.moduleNamespace+":module_grp.sao_world", label="World:")
     
     cmds.setParent("..")
     
     cmds.separator()
     
     interpolating = False
     if cmds.objExists(self.moduleNamespace+":interpolation_container"):
         interpolating = True
         
     cmds.rowLayout(nc=2, columnWidth=[1, 80], adj=2)
     cmds.text(label="Interpolate:")
     cmds.checkBox(label="", value=interpolating, onc=partial(self.setup_interpolation, True), ofc=self.delete_interpolation)
示例#3
0
def setAttributeVectorUI():
    global tfXIn, tfXOut, tfYIn, tfYOut, tfZIn, tfZOut, tslVectorList, tfXAdd, tfYAdd, tfZAdd, vectorUI
    vectorUI = 'vectorUI'
    closeUI(vectorUI)
    cmds.window(vectorUI, title = 'vectorUI')
    cmds.columnLayout(columnAttach = ['both', 5], rowSpacing = 5, columnWidth = 210)
    cmds.text('..: random range :..', backgroundColor = [0.15, 0.15, 0.0])
    cmds.gridLayout(numberOfColumns = 6, cellWidthHeight = (33, 20))
    tfXIn = cmds.textField(text = '0.0', backgroundColor = [0.15, 0.1, 0.0])
    tfXOut = cmds.textField(text = '1.0', backgroundColor = [0.15, 0.1, 0.0])
    tfYIn = cmds.textField(text = '0.0', backgroundColor = [0.0, 0.15, 0.1])
    tfYOut = cmds.textField(text = '1.0', backgroundColor = [0.0, 0.15, 0.1])
    tfZIn = cmds.textField(text = '0.0', backgroundColor = [0.0, 0.1, 0.15])
    tfZOut = cmds.textField(text = '1.0', backgroundColor = [0.0, 0.1, 0.15])
    cmds.setParent('..')
    cmds.button('ok', command = 'setAttributeVectorRandom()')
    cmds.separator(style = 'out')
    cmds.text('..: vector list :..', backgroundColor = [0.0, 0.15, 0.15])
    tslVectorList = cmds.textScrollList(allowMultiSelection = True)
    cmds.button('remove', command = 'removeScrollListVector()')
    cmds.gridLayout(numberOfColumns = 4, cellWidthHeight = (50, 20))
    tfXAdd = cmds.textField(text = '0.0', backgroundColor = [0.15, 0.1, 0.0])
    tfYAdd = cmds.textField(text = '0.0', backgroundColor = [0.0, 0.15, 0.1])
    tfZAdd = cmds.textField(text = '0.0', backgroundColor = [0.0, 0.1, 0.15])
    cmds.button('add..', command = 'addScrollListVector()')
    cmds.setParent('..')
    cmds.button('random', command = 'setAttributeListVectorRandom()')
    cmds.button('increment %', command = 'setAttributeListVectorInc()')
    cmds.setParent('..')
    cmds.showWindow()
示例#4
0
    def _buildSettings(s, *args):
        """
        Load the settings page
        """
        s.page = "settings"

        s._clear()
        cmds.columnLayout(adj=True, p=s.wrapper)
        cmds.iconTextButton(
            h=30,
            ann="Click to return to your Todo list.",
            image="revealSelected.png",
            label="<- Todo",
            style="iconAndTextHorizontal",
            c=s._buildTodo)
        cmds.separator()
        cmds.text(label="Settings are unique to each Maya scene.", h=50)
        frame = cmds.frameLayout(l="Archive options:")
        # Settings module
        s.fireHook("settings.archive", settings=s._buildSettings, callback=lambda x: cmds.setParent(frame))
        cmds.setParent("..")
        cmds.frameLayout(l="Feedback:")
        cmds.iconTextButton(
            image="party.png",
            ann="Have any feedback? Good or bad. Love to hear it! :)",
            l="Leave Feedback...",
            style="iconAndTextHorizontal",
            c=lambda: universalOpen("mailto:[email protected]?subject=Todo Feedback"))  # TODO errors when no folder is chosen because of 0 index
示例#5
0
    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)    
示例#6
0
def transfertSelectionToTarget_window():
	"""
	This definition creates the 'Transfert Selection To Target' main window.
	"""

	cmds.windowPref(enableAll=False)

	if (cmds.window("transfertSelectionToTarget_window", exists=True)):
		cmds.deleteUI("transfertSelectionToTarget_window")

	cmds.window("transfertSelectionToTarget_window",
		title="Transfert Selection To Target",
		width=320)

	spacing = 5

	cmds.columnLayout(adjustableColumn=True, rowSpacing=spacing)

	cmds.rowLayout(numberOfColumns=3, columnWidth3=(125, 150, 130), adjustableColumn=2, columnAlign=(2, "left"), columnAttach=[(1, "both", spacing), (2, "both", spacing), (3, "both", spacing)])
	cmds.text(label="Target:")
	sources_textField = cmds.textField("target_textField")
	cmds.button("pickTarget_button", label="Pick Target!", command=pickTarget_button_OnClicked)
	cmds.setParent(topLevel=True)

	cmds.separator(style="single")

	cmds.button("transfertSelection_button", label="Transfert Selection!", command=transfertSelection_button_OnClicked)

	setUnsetContextHotkeys()
	scriptJob = cmds.scriptJob(uiDeleted=("transfertSelectionToTarget_window", setUnsetContextHotkeys), runOnce=True)

	cmds.showWindow("transfertSelectionToTarget_window")

	cmds.windowPref(enableAll=True)
	def create(self):
		if cmds.window('uvShellAlignWindow', exists = True):
			cmds.deleteUI('uvShellAlignWindow')

		self.window = cmds.window(self.window, title = self.title, widthHeight = self.size)
		self.frameForm = cmds.frameLayout(label = " 1. 基準とする UVShell を選択して登録", bgc = (0.5, 0.3, 0.2), cll = False)
		self.setUVSBtn1 = cmds.button(label = "基準 UVShell を登録"  , command = self.registUVBndBox1, height = 30 )
		cmds.rowLayout( numberOfColumns = 1, adj = True)					

				




		cmds.setParent("..")			
		self.frameForm = cmds.frameLayout(label = " 2. 位置を揃えたい UVShell を選択して実行", bgc = (0.2, 0.3, 0.5), cll = False)
		self.distDcheckBox = cmds.radioButtonGrp('radioBtn', label = "", numberOfRadioButtons = 4 ,
							 sl = 1, cl4 = ['left','left','left','left'] , la4 = [ 'Left', 'Right', 'Bottom', 'Top'], adj = True)

		self.backupPathText = cmds.text("※ 2016/1/5 現在、複数UVを選択した状態での位置揃えには対応していません", font = "smallBoldLabelFont", align = 'left');
		self.setUVSBtn2 = cmds.button(label = "選択した UVShell を揃える" , command = self.registUVBndBox2, height = 30 )
		cmds.setParent("..")	
		
		cmds.separator(width = self.width, style = 'in')
		
		cmds.text("【問い合わせ先】 : TAセクション.村岡", bgc = (0.2, 0.2, 0.2), align = 'left', width = self.width);

		cmds.setParent("..")	
		cmds.showWindow()
 def enterTimecodeUI(self, buttonlabel='set', buttonfunc=None):
     '''
     generic UI to enter timecode
     
     :param buttonlabel' = label to add to the button
     :param buttonfunc' = function to bind to the button on exit
     '''
     self.win='Timecode_UI'
     if cmds.window(self.win, exists=True):
         cmds.deleteUI(self.win, window=True)
     cmds.window(self.win, title=self.win)
     cmds.columnLayout(adjustableColumn=True)
     cmds.text(label='Timecode Reference')
     cmds.separator(h=10, style='in')
     cmds.rowColumnLayout(nc=8)
     cmds.text(label='  smpte :  ')
     cmds.textField('tchrs', tx='00', w=40, cc=lambda x:self.__uicb_checkfield('tchrs'))
     cmds.text(label=' : ')
     cmds.textField('tcmins', tx='00', w=40, cc=lambda x:self.__uicb_checkfield('tcmins'))
     cmds.text(label=' : ')
     cmds.textField('tcsecs', tx='00', w=40, cc=lambda x:self.__uicb_checkfield('tcsecs'))
     cmds.text(label=' : ')
     cmds.textField('tcfrms', tx='00', w=40, cc=lambda x:self.__uicb_checkfield('tcfrms'))
     cmds.setParent('..')
     cmds.button(label=buttonlabel, command=lambda x:self.__uicb_gatherTimecode(buttonfunc))
     cmds.showWindow(self.win)
示例#9
0
def separator( w=300, h=5 ):
    
    cmds.rowColumnLayout( nc=1, cw=( 1,w ) )
    setSpace( h )
    cmds.separator()
    setSpace( h )
    cmds.setParent( '..' )
示例#10
0
def windowSHM(*args):
    
    if cmds.window("shdrmnWin", exists = 1):
        cmds.deleteUI("shdrmnWin")
    win = cmds.window("shdrmnWin", title = "Shader manager", w = 500, sizeable = 0)
    
    mainLayout = cmds.columnLayout (w = 500)
    
    cmds.rowColumnLayout(w = 500, nc = 4, parent = mainLayout )
    cmds.textFieldGrp( 'getAiAttrField', text = 'mColor')
    cmds.button(label = "GET TX", w= 83, h = 50, c = getTextureFromShader )
    cmds.button(label = "SHOW TX", w= 83, h = 50, c = assignPREVShader)
    cmds.button(label = "TILE UV", w= 83, h = 50, c = setTileUV)

    
    cmds.rowColumnLayout(w = 500, nc = 1, parent = mainLayout )
    cmds.button(label = "DELETE PREVIEW", w= 500, h = 50, c = deleteShaders, parent = mainLayout )
    cmds.separator(height=10, parent = mainLayout)
    
    cmds.rowColumnLayout(w = 500, nc = 2, parent = mainLayout )
    cmds.button(label = "GET MATERIALS", w= 250, h = 50, c =  getMaterial )
    cmds.button(label = "ASSIGN MATERIALS", w= 250, h = 50, c =  asignMaterial )
       
    
    cmds.showWindow(win)
示例#11
0
def UI():
    if cmds.window("TressFXExporterUI", exists = True):
        cmds.deleteUI("TressFXExporterUI")

    windowTitle = 'TressFX Exporter' + ' ' + 'v' + tressfx_exporter_version
    window = cmds.window("TressFXExporterUI", title = windowTitle, w=280, h = 260, mnb=False, sizeable=False)
    mainLayout = cmds.columnLayout(w=280, h=260)

    cmds.separator(h=8, style='in')
    cmds.text(label='Number of vertices per strand (4, 8, 16, 32 or 64):', align='left')
    cmds.intField("numVerticesPerStrand", w=30, minValue=4, maxValue=64, value=16 )
    cmds.separator(h=8, style='in')
    cmds.checkBox("bothEndsImmovable", label='Both ends immovable')
    cmds.checkBox("InvertZ", label='Invert Z', value = True)
    cmds.checkBox("exportSkinCheckBox", label='Export skin data', value = False)
    cmds.checkBox("randomStrandCheckBox", label='Randomize strands for LOD', value = True)
    
    cmds.separator(h=15)
    
    cmds.button(label="Set the base mesh", w=170, h=30, command=SetBaseMesh)
    cmds.textField("MeshNameLabel", w=170, editable=False)
    
    cmds.separator(height=10, style='none')
    cmds.button(label="Export as binary (*.tfx)", w=170, h=30, command=ExportBinary)
    
    cmds.separator(h=15)
    
    version_text = 'v' + tressfx_exporter_version
    cmds.text(label=version_text, align='left')
    
    global selected_mesh_shape_name
    selected_mesh_shape_name = ''
    
    cmds.showWindow(window)
示例#12
0
 def installConvertOption(self):
     """"""
     cmds.rowLayout(nc=2, adj=2)
     cmds.text(l=' Convert:', fn='boldLabelFont')
     self.keepCheck = cmds.iconTextCheckBox( st='textOnly', l='Keep original', v=True )
     cmds.setParent( '..' )
     cmds.separator( style='none' )
示例#13
0
 def build(self):
     if mc.windowPref(self.win, exists=1):
         mc.windowPref(self.win, remove=1)
     if mc.window(self.win,exists=1):
         mc.deleteUI(self.win)
     mc.window( self.win, title=self.title, widthHeight=(500, 210) )
     cl1 = mc.columnLayout( columnAttach=('both', 2), rowSpacing=3, columnWidth=500, adjustableColumn = True)
     mc.radioCollection()
     self.mouth = mc.radioButton( l='user import', select=1, p=cl1 )
     self.autoR = mc.radioButton( l='auto import', p=cl1 )
     mc.separator()
     mc.frameLayout('selected')
     mc.rowLayout(numberOfColumns=3, columnWidth3=(80, 75, 150), adjustableColumn=2, columnAlign=(1, 'right'), columnAttach=[(1, 'both', 0), (2, 'both', 0), (3, 'both', 0)] )
     mc.text(l='Mode')
     mc.columnLayout()
     mc.radioCollection()
     self.prop = mc.radioButton( l='Prop', select=1 )
     self.character = mc.radioButton( l='Character' )
     mc.setParent( '..' )
     mc.setParent( '..' )
     self.numText = mc.floatFieldGrp( l='Num' )
     self.txtProp = mc.textFieldButtonGrp( label='File Path', text='', buttonLabel='Browse', cw3 = (40,400,50), adjustableColumn3 = 2, cl3 = ('left', 'center', 'right'), bc = self.browse,cc=self.getPath )
     #mc.separator()
     #self.txtCharacter = mc.textFieldButtonGrp( label='Path', text='', buttonLabel='Browse', cw3 = (40,400,50), adjustableColumn3 = 2, cl3 = ('left', 'center', 'right'), bc = self.browse,cc=self.getPath )
     #mc.separator()
     mc.separator(p=cl1)
     mc.button( 'importR', l='Import   Reference   File', p=cl1 )
     mc.setParent( '..' )
示例#14
0
def snapOnClosestVertex_window():
	"""
	Creates the 'Snap On Closest Vertex' vertex window.
	"""

	cmds.windowPref(enableAll=False)

	if (cmds.window("snapOnClosestVertex_window", exists=True)):
		cmds.deleteUI("snapOnClosestVertex_window")

	cmds.window("snapOnClosestVertex_window",
		title="Snap On Closest Vertex",
		width=320)

	spacing = 5

	cmds.columnLayout(adjustableColumn=True, rowSpacing=spacing)

	cmds.rowLayout(numberOfColumns=3, columnWidth3=(125, 150, 130), adjustableColumn=2, columnAlign=(2, "left"), columnAttach=[(1, "both", spacing), (2, "both", spacing), (3, "both", spacing)])
	cmds.text(label="Reference Object:")
	referenceObject_textField = cmds.textField("referenceObject_textField")
	cmds.button("getReferenceObject_button", label="Get Reference Object!", command=getReferenceObject_button_OnClicked)
	cmds.setParent(topLevel=True)

	cmds.separator(style="single")

	cmds.button("snapIt_button", label="Snap It!", al="center", command=snapIt_button_OnClicked)

	cmds.showWindow("snapOnClosestVertex_window")
	cmds.windowPref(enableAll=True)
示例#15
0
def setupRLUI():
    if cmds.window("RLWin", exists=True):
        cmds.deleteUI("RLWin")
    
    widgets["win"] = cmds.window("RLWin", t="zbw_setupRL", w=200, h=400)
    widgets["mainCL"] = cmds.columnLayout(w=200)
    widgets["mainFrame"] = cmds.frameLayout(l="Create Render Layers", w=200, cll=True, bgc=(.2,.2,.2))
    
    widgets["CarKey"] = cmds.checkBox(l="Car_Env", v=True)
    widgets["CarEnv"] = cmds.checkBox(l="Car_Key", v=True)
    widgets["BGKey"] = cmds.checkBox(l="BG_Env", v=True)
    widgets["BGEnv"] = cmds.checkBox(l="BG_Key", v=True)
    widgets["AO"] = cmds.checkBox(l="All_AO", v=True)
    widgets["MatteA"] = cmds.checkBox(l="All_MatteA", v=True)
    widgets["MatteB"] = cmds.checkBox(l="All_MatteB", v=True)
    widgets["MoVec"] = cmds.checkBox(l="All_MoVec", v=True)
    widgets["Shadow"] = cmds.checkBox(l="All_Shadow", v=True)
    
    widgets["createBut"] = cmds.button(l="Create Layers", w=200, h=40, bgc=(.6,.8,.6), c=createRL)
    cmds.text("NOTE: this is setting the overrides for \nthe moVec layer RG's and materials \n(if you have them in scene\n for the AO and Movec layers but \n NO passes are set up")
    cmds.separator(h=20, style = "double")
    #widgets["copyBut"] = cmds.button(l="Copy Selected Layer", w=200, h=40, bgc=(.8,.8,.6), c=copyRL)
    #cmds.separator(h=20, style = "double")
    widgets["importBut"] = cmds.button(l="Import RL Shaders File", w=200, h=40, bgc=(.8,.6,.6), c=importRL)
   
    cmds.showWindow(widgets["win"])
    cmds.window(widgets["win"], e=True, w=200, h=400)
示例#16
0
 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))
示例#17
0
def copyCrvShapeUI():

	if cmds.window('copyCrvShapeWin', exists=True):
		cmds.deleteUI('copyCrvShapeWin')
	
	cmds.window('copyCrvShapeWin', t='CopyCurve', rtf=True)

	cmds.columnLayout('mainCL', adj=True)

	cmds.text(l='Search for', align='center')

	cmds.textField('searchTF')

	cmds.textField('searchTF', e=True, tx='_L_')

	cmds.separator()

	cmds.text(align='center', l='Replace with')

	cmds.textField('replaceTF')

	cmds.textField('replaceTF', e=True, tx='_R_')

	cmds.separator()

	cmds.button('copyBTN', l='copy', c=partial(copyCrvShape))

	cmds.showWindow('copyCrvShapeWin')
	cmds.window('copyCrvShapeWin', e=True, w=220, h=98)
示例#18
0
def alignComponents_window():
	"""
	Creates the 'Align Components' main window.
	"""

	cmds.windowPref(enableAll=False)

	if (cmds.window("alignComponents_window", exists=True)):
		cmds.deleteUI("alignComponents_window")

	cmds.window("alignComponents_window",
		title="Align Components",
		width=320)

	spacing = 5

	cmds.columnLayout(adjustableColumn=True, rowSpacing=spacing)

	cmds.button("selectAnchors_button", label="Select Anchors!", command=selectAnchors_button_OnClicked)

	cmds.separator(height=10, style="singleDash")

	cmds.button("alignSelection_button", label="Align Selection!", command=alignSelection_button_OnClicked)

	cmds.separator(height=10, style="singleDash")

	cmds.button("alignSelectionOnXAxis_button", label="Align Selection On X!", command=alignSelectionOnXAxis_button_OnClicked)
	cmds.button("alignSelectionOnYAxis_button", label="Align Selection On Y!", command=alignSelectionOnYAxis_button_OnClicked)
	cmds.button("alignSelectionOnZAxis_button", label="Align Selection On Z!", command=alignSelectionOnZAxis_button_OnClicked)

	cmds.showWindow("alignComponents_window")

	cmds.windowPref(enableAll=True)
示例#19
0
 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 )
示例#20
0
def cleanAndExportUI():
	if cmds.objExists('sharedReferenceNode'):
		cmds.delete('sharedReferenceNode')
	ceWin = 'cleanExportUI2'
	if cmds.window(ceWin,exists=True):
		cmds.deleteUI(ceWin)
	cmds.window(ceWin,title='clean for export')
	cmds.columnLayout(adj=True,co=('both',10))
	cmds.text(align="left",l="List Of Reference Nodes")
	cmds.textScrollList('ceRefList', numberOfRows=8, allowMultiSelection=True )
	populateReferenceList()
	cmds.separator(height=10, style='double' )
	animRange = cmds.ls('AnimRanges')
	if len(animRange) > 0:
	    ranges = cmds.listAttr(animRange[0],ud=True)
	    if len(ranges) > 0:
	        cmds.textScrollList('txtScrRanges',numberOfRows=len(ranges),ams=False)
	        for item in ranges:
	            cmds.textScrollList('txtScrRanges',edit=True, append = item)
	        
	    
	
	cmds.separator(height=10, style='double' )

	cmds.button(label = 'AnimExport!',c=cleanAndExportAnim)
	cmds.button(label = 'MeshExport!',c=cleanAndExportMesh)

	cmds.showWindow(ceWin)
示例#21
0
 def buildMainLayout(self):
     '''Build the main part of the ui
     '''
     
     tabs = mc.tabLayout()
     tab1 = mc.columnLayout(adj=True)
     
     mc.scrollLayout(cr=True)
     self.shelfLayout = mc.shelfLayout()
     
     self.refreshShelfLayout()
     
     mc.setParent(tabs)
     
     tab2 = mc.columnLayout(adj=True)
 
     mc.separator(height=8, style='none')
     mc.text('Select curve(s) to export. Multiple selected curves will be combined.')
     mc.text('Center and fit the curve in the viewport,')
     mc.text('and make sure nothing else is visible for best icon creation.')
     mc.separator(height=16, style='in')
     
     mc.button('Export Selected Curve', command=self.exportControl, annotation='Select a nurbsCurve to export.')
     
     mc.tabLayout( tabs, edit=True, tabLabel=((tab1, 'Import'), 
                                              (tab2, 'Export')
                                              ))
     
     if not mc.shelfLayout(self.shelfLayout, query=True, numberOfChildren=True):
         mc.tabLayout( tabs, edit=True, selectTab=tab2)
示例#22
0
    def switch_module(self,dishName,dishFile,*args):
        archive = zipfile.ZipFile(dishFile, 'r')
        jsonFile = archive.read('dish.ini')
        jsondata = json.loads(jsonFile)  
        archive.close()

        #Clear chld
        chldrn = mc.layout( self.InfosTab, query=True, childArray=True )
        for chld in chldrn:
            mc.deleteUI(chld)
        #-------------------------------------------------------------------
        mc.columnLayout( adjustableColumn=True ,p=self.InfosTab ,rs=5)        
        header = """<html>
            <body>
            <h1>%s</h1></body>
            </html>
        """%(dishName )
        
        self.dishType  = dishName
        mc.text( self.module,e=True,l=header,font='boldLabelFont')        
        mc.scrollField( editable=False, wordWrap=True, text=jsondata['moduleInfos'] ,h=140)
        mc.separator()   
        mc.text( l='name bank') 
        mc.columnLayout( adjustableColumn=True)
        LimbMenu = mc.optionMenu( label='',w=224  )
        mc.menuItem( label='NONE')
        mc.setParent('..')
        mc.button(l='Open name composer',h=28)
        mc.optionMenu( LimbMenu ,e=True,changeCommand=partial(self.composePrfX,LimbMenu))

        self.dishPrfx       =  mc.textField()
        mc.button(l='Import', h=42,c=self.validate_dish_before_merge )        
示例#23
0
 def buildMainLayout(self):
     '''Build the main part of the ui
     '''
     
     #tabs = mc.tabLayout()
     
     #tab1 = mc.columnLayout(adj=True)
     #self.swatch_selected = self.colorControlLayout()
     #mc.button(label='Color Selected', command=self.colorSelected)
     #mc.setParent('..')
 
     #tab2 = mc.columnLayout(adj=True)
     self.swatch_range1 = self.colorControlLayout(label='First Selected')
     self.swatch_range2 = self.colorControlLayout(label='Last Selected')
     mc.separator(horizontal=True, height=10)
     mc.button(label='Color Selected Nodes', command=self.colorSelectedRange)
     #mc.setParent('..')
 
     #tab3 = mc.columnLayout(adj=True)
     #self.positionWidgets = {}
     #for xyz in 'XYZ':
         #for m in ['Min','Max']:        
             #self.positionWidgets[m+xyz] = self.colorControlLayout(label='{} {}'.format(m,xyz))
             
     mc.setParent('..')
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)
示例#25
0
	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 remappingWindow(self,exsitingData,importedData):
		#if (cmds.window(MainSkinUI.RemapWindowID,ex=True)):
			#cmds.deleteUI(MainSkinUI.RemapWindowID, wnd=True)
		#cmds.window(MainSkinUI.RemapWindowID,w=500,h=340,title='Influence Remapping Dialog')
		formLayout=cmds.setParent(q=True)
		cmds.formLayout(formLayout,e=True,w=500,h=340)
		mainColumnLayout = cmds.columnLayout(w=500,h=340)
		cmds.columnLayout(h=5)
		cmds.setParent('..')
		cmds.columnLayout(cat=['left',25])
		cmds.text(l='The following influences hace no corresponding influence from the imported weight\n'\
					' data. You can remap the influences or skip them',al='left', w=450,h=40)
		cmds.setParent('..')
		cmds.separator(w=500, st='in')
		formLayout = cmds.formLayout()
		exsitingInfluences = cmds.columnLayout()
		cmds.frameLayout(l='Exsiting Influences:')
		self.exsitingInfluencesBox = cmds.textScrollList(w=230,h=230)
		cmds.setParent('..')
		cmds.setParent('..')
		importedInfluences = cmds.columnLayout()
		cmds.frameLayout(l='Imported Influences:')
		self.importedInfluencesLayout = cmds.columnLayout(w=230,h=230)
		cmds.columnLayout(h=5)
		cmds.setParent('..')
		#self.importedInfluencesLayout = cmds.columnLayout(cat=['left',40])
		cmds.formLayout(formLayout,e=True,af=[(exsitingInfluences,'left',10)],ac=[(importedInfluences,'left',10,exsitingInfluences)])
		cmds.setParent(mainColumnLayout)
		cmds.columnLayout(h=5)
		cmds.setParent('..')
		cmds.columnLayout(cat=['left',150])
		cmds.button(l='Import Remapped Skin Weight', w=200, c=self.passRemappingData)
		self.setInfluenceDialog(exsitingData,importedData)
示例#27
0
    def expose_list(self,tabAnchor,rootData):
        samplingConnections     = rootData[0]
        caption                 = rootData[1]
        mc.textField(  tx=caption,ed=False ,p=tabAnchor , font="boldLabelFont",bgc=[0.8,0.8,0.8])
        mc.optionMenu( label=' Options: ' ,p=tabAnchor , w=432  -30)
        mc.menuItem( label='select' )
        mc.menuItem( label='connect' )
        mc.menuItem( label='swap' )
        mc.menuItem( label='constraint' )
        mc.menuItem( label='Manage Input' )
        scrollWdth = mc.scrollLayout(	horizontalScrollBarThickness=0,verticalScrollBarThickness=8, p=tabAnchor ,h=150,childResizable=True )

        inputIdxList = mc.getAttr(samplingConnections,mi=True )
        ctrlHgt = 24
        for idx  in inputIdxList:
            input = mc.listConnections(samplingConnections+'[%s]'%idx)
            
            if input is not None and len(input)>0:
                input = input[0]
            else:
                input = samplingConnections+'[%s]'%idx

            mc.separator(style='none', p=scrollWdth,h=6 )
            mc.flowLayout( columnSpacing=4  , p=scrollWdth )
            fldLnk = mc.textField(  tx=input,ed=False ,w=395 -30,h=ctrlHgt)
            mc.popupMenu( button=3 ,p=fldLnk)
            mc.menuItem(l='moveUP' )
            mc.menuItem(l='moveDown' )
            mc.menuItem(l='Delete' )
            mc.button( label='<')
示例#28
0
 def exportAssets_UI(self, *args):
     self.UIElements = {}
     
     # If the window exists, delete it.
     if cmds.window("ExportAssets", exists=True):
         cmds.deleteUI("ExportAssets")
     
     # Create the main window
     self.UIElements["window"] = cmds.window("ExportAssets", widthHeight=(240, 200), s=True )
     
     # Create a flow layout to hold the UI Elements
     self.UIElements["radioFlowLayout"] = cmds.flowLayout(v=True, w=220) 
     cmds.setParent( '..' )  
     
     cmds.setParent(self.UIElements["radioFlowLayout"])
     
     cmds.radioCollection()
     self.UIElements['rigRadioButton'] = cmds.radioButton(l='Export Rig?')
     cmds.radioCollection()
     self.UIElements['setupRadioButton'] = cmds.radioButton(l='Export Setup?')
     
     cmds.separator( height=7, style='in' )
     cmds.text(l='  Rename the Setup?')
     
     self.UIElements['nameTxt'] = cmds.textField(w=220, tx=self.characterName)
     
     self.UIElements['exportButton'] = cmds.button(label='Export Game Assets', width=220, c=self.exportGameAssets)
     
     
     cmds.showWindow(self.UIElements["window"])
示例#29
0
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()
示例#30
0
def showCorrectiveBlendshapeWindow():
	"""
	Shows the GUI for the corrective blendshape creator.
	"""
	global bsWin, bsLayout,btnCreateCorrectiveBS, btnConnectCorrectiveBS,btnRestart,lblMsgBS
	if(window(bsWin, q=True, exists=True)):
		deleteUI(bsWin, window=True)
	window(bsWin,width = 270, title="Corrective BS Creator")
	columnLayout(bsLayout, adjustableColumn = True,p=bsWin,co=("both",10), rs=10)
	separator(p=bsLayout, vis=True)
	button(btnCreateCorrectiveBS,p=bsLayout, l="1. Create Corrective Blendshape",h=50,command=createCopy)
	separator(p=bsLayout)
	button(btnConnectCorrectiveBS,p=bsLayout, l="2. Connect Blendshape to Master", h=50,command=connectoToMaster)
	separator(p=bsLayout)
	separator(p=bsLayout, vis=False)
	button(btnRestart, p=bsLayout, l="Restart", h=50, command=restart)
	separator(p=bsLayout)
	text(lblMsgBS,p=bsLayout,l="Select the master, blendshape1 and blendshape2 to create the corrective BS.",ww=True )
	separator(p=bsLayout, vis=True)
	showWindow()
def build_gui_simple_ik_leg():
    window_name = "build_gui_simple_ik_leg"
    if cmds.window(window_name, exists =True):
        cmds.deleteUI(window_name)    

    # Main GUI Start Here =================================================================================

    build_gui_simple_ik_leg = cmds.window(window_name, title=script_name + "  (v" + script_version + ')',\
                          titleBar=True, mnb=False, mxb=False, sizeable =True)
                          
    cmds.window(window_name, e=True, s=True, wh=[1,1])

    content_main = cmds.columnLayout(adj = True)

    # Title Text
    title_bgc_color = (.4, .4, .4)
    cmds.separator(h=10, style='none') # Empty Space
    cmds.rowColumnLayout(nc=1, cw=[(1, 270)], cs=[(1, 10)], p=content_main) # Window Size Adjustment
    cmds.rowColumnLayout(nc=3, cw=[(1, 10), (2, 200), (3, 50)], cs=[(1, 10), (2, 0), (3, 0)], p=content_main) # Title Column
    cmds.text(" ", bgc=title_bgc_color) # Tiny Empty Green Space
    cmds.text(script_name, bgc=title_bgc_color,  fn="boldLabelFont", align="left")
    cmds.button( l ="Help", bgc=title_bgc_color, c=lambda x:build_help_gui_ik_leg_generator())
    cmds.separator(h=10, style='none', p=content_main) # Empty Space

    # Body ====================
    body_column = cmds.rowColumnLayout(nc=1, cw=[(1, 260)], cs=[(1,10)], p=content_main)
    
    cmds.rowColumnLayout(nc=2, cw=[(1, 130),(2, 130)], cs=[(1,0),(2, 0)], p=body_column)
    cmds.text("Joint Tag (Suffix)")
    cmds.text("Ctrl Group Tag (Suffix)")
    jnt_tag_text_field = cmds.textField(text=settings.get("jnt_tag"), \
                                           enterCommand=lambda x:update_settings(), textChangedCommand=lambda x:update_settings())
    ctrl_grp_text_field = cmds.textField(text=settings.get("ctrl_grp_tag"), \
                                           enterCommand=lambda x:update_settings(), textChangedCommand=lambda x:update_settings())
    
    
    cmds.separator(h=15, p=body_column)
    
    # CheckboxGrp One
    interactive_container_misc = cmds.rowColumnLayout(p=body_column, numberOfRows=1, h= 25)

    check_box_grp_one = cmds.checkBoxGrp(p=interactive_container_misc, columnWidth2=[140, 1], numberOfCheckBoxes=2, \
                                label1 = 'Custom PVector Ctrl', label2 = "Custom IK Ctrl", v1 = settings.get("def_use_pvector"), v2 = settings.get("def_use_ik_ctrl"), \
                                on2=lambda x:is_custom_ik_ctrl_enabled(True),  of2=lambda x:is_custom_ik_ctrl_enabled(False), \
                                on1 =lambda x:is_custom_pvector_enabled(True), of1=lambda x:is_custom_pvector_enabled(False) ) 
    # CheckboxGrp Two
    interactive_container_misc = cmds.rowColumnLayout(p=body_column, numberOfRows=1, h= 25)

    check_box_grp_two = cmds.checkBoxGrp(p=interactive_container_misc, columnWidth2=[140, 1], numberOfCheckBoxes=2, \
                                label1 = 'Colorize Controls ', label2 = "Custom IK Switch", v1 = settings.get("def_colorize_ctrl"), v2 = settings.get("def_use_ik_switch"), \
                                on2=lambda x:is_custom_ik_switch_enabled(True),  of2=lambda x:is_custom_ik_switch_enabled(False) ) 
    cmds.separator(h=10, p=body_column)
    
    #pVector Ctrl Loader
    pvector_container = cmds.rowColumnLayout( p=body_column, numberOfRows=1)
    pvector_btn = cmds.button(p=pvector_container, l ="Load PVector Ctrl", c=lambda x:update_load_btn_ctrls("pVector"), w=130)
    pvector_status = cmds.button(p=pvector_container, l ="Not loaded yet", bgc=(.2, .2, .2), w=130, \
                            c="cmds.headsUpMessage( 'Select your pole vector control and click on \"Load PVector Ctrl Joint\"', verticalOffset=150 , time=5.0)")
    
    #Custom IK Ctrl Loader
    ik_ctrl_container = cmds.rowColumnLayout( p=body_column, numberOfRows=1)
    ik_ctrl_btn = cmds.button(p=ik_ctrl_container, l ="Load IK Ctrl", c=lambda x:update_load_btn_ctrls("ikCtrl"), w=130)
    ik_ctrl_status = cmds.button(p=ik_ctrl_container, l ="Not loaded yet", bgc=(.2, .2, .2), w=130, \
                            c="cmds.headsUpMessage( 'Select your IK Switch control and click on \"Load IK Switch Ctrl Joint\"', verticalOffset=150 , time=5.0)")
    
    #IK Switch Ctrl Loader
    ik_switch_container = cmds.rowColumnLayout( p=body_column, numberOfRows=1)
    ik_switch_btn = cmds.button(p=ik_switch_container, l ="Load IK Switch Ctrl", c=lambda x:update_load_btn_ctrls("ikSwitch"), w=130)
    ik_switch_status = cmds.button(p=ik_switch_container, l ="Not loaded yet", bgc=(.2, .2, .2), w=130,  \
                            c="cmds.headsUpMessage( 'Select your Custom IK Control and click on \"Load IK Ctrl Joint\"', verticalOffset=150 , time=5.0)")
                            
    
    cmds.separator(h=15, p=body_column)
    # CheckboxGrp Three
    interactive_container_jnt = cmds.rowColumnLayout(p=body_column, numberOfRows=1, h= 25)
    cmds.text("    ") # Increase this to move checkboxes to the right
    check_box_grp_three = cmds.checkBoxGrp(p=interactive_container_jnt, columnWidth2=[130, 1], numberOfCheckBoxes=2, \
                                label1 = 'Make Stretchy Legs ', label2 = "Use Ball Joint", v1 = settings.get("make_stretchy"), v2 = settings.get("def_use_ball_jnt"), \
                                on2=lambda x:is_ball_enabled(True),  of2=lambda x:is_ball_enabled(False)\
                               ,on1=lambda x:update_settings(),  of1=lambda x:update_settings())
                            
    cmds.separator(h=10, p=body_column)
    #Hip Joint Loader
    hip_container = cmds.rowColumnLayout( p=body_column, numberOfRows=1)
    cmds.button(p=hip_container, l ="Load Hip Joint", c=lambda x:update_load_btn_jnt("hip"), w=130)
    hip_status = cmds.button(p=hip_container, l ="Not loaded yet", bgc=(.2, .2, .2), w=130, \
                            c="cmds.headsUpMessage( 'Select your hip joint and click on \"Load Hip Joint\"', verticalOffset=150 , time=5.0)")
                            
    #Ankle Joint Loader
    ankle_container = cmds.rowColumnLayout( p=body_column, numberOfRows=1)
    cmds.button(p=ankle_container, l ="Load Ankle Joint", c=lambda x:update_load_btn_jnt("ankle"), w=130)
    ankle_status = cmds.button(p=ankle_container, l ="Not loaded yet", bgc=(.2, .2, .2), w=130, \
                            c="cmds.headsUpMessage( 'Select your ankle joint and click on \"Load Ankle Joint\"', verticalOffset=150 , time=5.0)")
                            
    #Ball Joint Loader
    ball_container = cmds.rowColumnLayout( p=body_column, numberOfRows=1)
    ball_load_btn = cmds.button(p=ball_container, l ="Load Ball Joint", c=lambda x:update_load_btn_jnt("ball"), w=130)
    ball_status = cmds.button(p=ball_container, l ="Not loaded yet", bgc=(.2, .2, .2), w=130, \
                            c="cmds.headsUpMessage( 'Select your ball joint and click on \"Load Ball Joint\"', verticalOffset=150 , time=5.0)")
      
    cmds.separator(h=10, p=body_column)
    cmds.separator(h=10, style="none", p=body_column)
    cmds.button(p=body_column, l ="Generate",bgc=(.6, .6, .6), c=lambda x:check_before_running(cmds.checkBoxGrp(check_box_grp_three, q=True, value2=True)))
    cmds.separator(h=10, style="none", p=body_column)
    
    def update_settings():
        settings["make_stretchy"] = cmds.checkBoxGrp(check_box_grp_three, q=True, value1=True)
        
        jnt_tag = parse_text_field(cmds.textField(jnt_tag_text_field,q=True,text=True))
        if jnt_tag != [] and len(jnt_tag) > 0:
            settings["jnt_tag"] = jnt_tag[0]
        
        ctrl_grp_tag = parse_text_field(cmds.textField(ctrl_grp_text_field,q=True,text=True))
        if ctrl_grp_tag != [] and len(ctrl_grp_tag) > 0:
            settings["ctrl_grp_tag"] = ctrl_grp_tag[0]

        
    def is_ball_enabled(state):
        if state:
            cmds.button(ball_load_btn, e=True, en=True)
            cmds.button(ball_status, l ="Not loaded yet", e=True, en=True, bgc=(.2, .2, .2))
            stored_joints["ball_jnt"] = ''
        else:
            cmds.button(ball_load_btn, e=True, en=False)
            cmds.button(ball_status, l ="Not necessary", e=True, en=False, bgc=(.25, .25, .25))
            
    def is_custom_ik_ctrl_enabled(state):
        if state:
            cmds.button(ik_ctrl_btn, e=True, en=True)
            cmds.button(ik_ctrl_status, l ="Not loaded yet", e=True, en=True, bgc=(.2, .2, .2))
            settings["custom_ik_ctrl_name"] = ''
            settings["using_custom_ik_ctrl"] = True
        else:
            cmds.button(ik_ctrl_btn, e=True, en=False)
            cmds.button(ik_ctrl_status, l ="Not necessary", e=True, en=False, bgc=(.25, .25, .25))
            settings["using_custom_ik_ctrl"] = False
            
    def is_custom_ik_switch_enabled(state):
        if state:
            cmds.button(ik_switch_btn, e=True, en=True)
            cmds.button(ik_switch_status, l ="Not loaded yet", e=True, en=True, bgc=(.2, .2, .2))
            settings["custom_ikfk_switch_name"] = ''
            settings["using_custom_ikfk_switch"] = True
        else:
            cmds.button(ik_switch_btn, e=True, en=False)
            cmds.button(ik_switch_status, l ="Not necessary", e=True, en=False, bgc=(.25, .25, .25))
            settings["using_custom_ikfk_switch"] = False
            
    def is_custom_pvector_enabled(state):
        if state:
            cmds.button(pvector_btn, e=True, en=True)
            cmds.button(pvector_status, l ="Not loaded yet", e=True, en=True, bgc=(.2, .2, .2))
            settings["custom_pvector_ctrl"] = ''
            settings["using_custom_pvector_ctrl"] = True
        else:
            cmds.button(pvector_btn, e=True, en=False)
            cmds.button(pvector_status, l ="Not necessary", e=True, en=False, bgc=(.25, .25, .25))
            settings["using_custom_pvector_ctrl"] = False
    
    # Curves Loader @@@@@@@@@@@@
    def update_load_btn_ctrls(button_name):
        
        # Check If Selection is Valid
        received_valid_ctrl = False
        selected_ctrls = cmds.ls(selection=True,tr=1, type='nurbsCurve')
        
        if len(selected_ctrls) == 0:
            cmds.warning("First element in your selection wasn't a control (nurbsCurve)")
        elif len(selected_ctrls) > 1:
            cmds.warning("You selected more than one curve! Please select only one")
        elif cmds.objectType(cmds.listRelatives(selected_ctrls[0], children=True)[0]) == "nurbsCurve":
            received_ctrl = selected_ctrls[0]
            received_valid_ctrl = True
        else:
            cmds.warning("Something went wrong, make sure you selected just one curve")
        
        # If pVector
        if button_name is "pVector" and received_valid_ctrl == True:
            settings["custom_pvector_ctrl"] = received_ctrl
            cmds.button(pvector_status, l=received_ctrl,e=True, bgc=(.6, .8, .6), w=130, c=lambda x:if_exists_select(settings.get("custom_pvector_ctrl")))
        elif button_name is "pVector":
            cmds.button(pvector_status, l ="Failed to Load",e=True, bgc=(1, .4, .4), w=130,c="cmds.headsUpMessage( 'Make sure you select only one curve and try again', verticalOffset=150 , time=5.0)")
        # If ikCtrl
        if button_name is "ikCtrl" and received_valid_ctrl == True:
            settings["custom_ik_ctrl_name"] = received_ctrl
            cmds.button(ik_ctrl_status, l=received_ctrl,e=True, bgc=(.6, .8, .6), w=130, c=lambda x:if_exists_select(settings.get("custom_ik_ctrl_name")))
        elif button_name is "ikCtrl":
            cmds.button(ik_ctrl_status, l ="Failed to Load",e=True, bgc=(1, .4, .4), w=130,c="cmds.headsUpMessage( 'Make sure you select only one curve and try again', verticalOffset=150 , time=5.0)")
        # If ikSwitch
        if button_name is "ikSwitch" and received_valid_ctrl == True:
            settings["custom_ikfk_switch_name"] = received_ctrl
            cmds.button(ik_switch_status, l=received_ctrl,e=True, bgc=(.6, .8, .6), w=130, c=lambda x:if_exists_select(settings.get("custom_ikfk_switch_name")))
        elif button_name is "ikSwitch":
            cmds.button(ik_switch_status, l ="Failed to Load",e=True, bgc=(1, .4, .4), w=130,c="cmds.headsUpMessage( 'Make sure you select only one curve and try again', verticalOffset=150 , time=5.0)")

    # Joints Loader @@@@@@@@@@@@
    def update_load_btn_jnt(button_name):
        
        # Check If Selection is Valid
        received_valid_jnt = False
        selected_joints = cmds.ls(selection=True, type='joint')
        if len(selected_joints) == 0:
            cmds.warning("First element in your selection wasn't a joint")
        elif len(selected_joints) > 1:
            cmds.warning("You selected more than one joint! Please select only one")
        elif cmds.objectType(selected_joints[0]) == "joint":
            joint = selected_joints[0]
            received_valid_jnt = True
        else:
            cmds.warning("Something went wrong, make sure you selected just one joint")
            
        # If Hip
        if button_name is "hip" and received_valid_jnt == True:
            stored_joints["hip_jnt"] = joint
            cmds.button(hip_status, l =joint,e=True, bgc=(.6, .8, .6), w=130, c=lambda x:if_exists_select(stored_joints.get("hip_jnt")))
        elif button_name is "hip":
            cmds.button(hip_status, l ="Failed to Load",e=True, bgc=(1, .4, .4), w=130,c="cmds.headsUpMessage( 'Make sure you select only one joint and try again', verticalOffset=150 , time=5.0)")
        
        # If Ankle
        if button_name is "ankle" and received_valid_jnt == True:
            stored_joints["ankle_jnt"] = joint
            cmds.button(ankle_status, l =joint,e=True, bgc=(.6, .8, .6), w=130, c=lambda x:if_exists_select(stored_joints.get("ankle_jnt")))
        elif button_name is "ankle":
            cmds.button(ankle_status, l ="Failed to Load",e=True, bgc=(1, .4, .4), w=130,c="cmds.headsUpMessage( 'Make sure you select only one joint and try again', verticalOffset=150 , time=5.0)")
        
        # If Ball
        if button_name is "ball" and received_valid_jnt == True:
            stored_joints["ball_jnt"] = joint
            cmds.button(ball_status, l =joint,e=True, bgc=(.6, .8, .6), w=130, c=lambda x:if_exists_select(stored_joints.get("ball_jnt")))
        elif button_name is "ball":
            cmds.button(ball_status, l ="Failed to Load",e=True, bgc=(1, .4, .4), w=130,c="cmds.headsUpMessage( 'Make sure you select only one joint and try again', verticalOffset=150 , time=5.0)")


    # Show and Lock Window
    cmds.showWindow(build_gui_simple_ik_leg)
    cmds.window(window_name, e=True, s=False)
    
    # Set Window Icon
    qw = omui.MQtUtil.findWindow(window_name)
    widget = wrapInstance(long(qw), QWidget)
    icon = QIcon(':/kinHandle.png')
    widget.setWindowIcon(icon)
    
    
    # Update Everything
    is_ball_enabled(settings.get("def_use_ball_jnt"))
    is_custom_ik_ctrl_enabled(settings.get("def_use_ik_ctrl"))
    is_custom_ik_switch_enabled(settings.get("def_use_ik_switch"))
    is_custom_pvector_enabled(settings.get("def_use_pvector"))
示例#32
0
def mainWin():
    global num, drv, stt, end, cb1, cb2, cb3, cb4, rc1, rb1, rb2, rc2, rb3, rb4
    if mc.window('GMR', ex=True) == True:
        mc.deleteUI('GMR', window=True)

    win = mc.window('GMR', t='GMrigGimmick', widthHeight=(300, 765))
    mc.window('GMR', e=True, widthHeight=(300, 765))

    #skinJoint-----------------------------------------------------------------------------------
    mc.columnLayout(adj=True)
    mc.frameLayout(l='duplicateSkinJoint', cll=True)
    mc.button(l='skinJoint', w=300, h=30, c=give_duplicate_skinJnt)
    mc.setParent('..')
    #----------------------------------------------------------------------------------------------
    mc.separator(h=10)
    #Bend Twist----------------------------------------------------------------------------------
    mc.frameLayout(l='Create Gimmick Joint', cll=True)
    mc.rowLayout(nc=2)
    mc.button(l='Bend->Twist', w=150, h=30, c=give_BendTwist_createJoint)
    mc.button(l='Twist->Bend', w=150, h=30, c=give_TwistBend_createJoint)
    mc.setParent('..')
    mc.button(l='Connect Gimmick Node', w=300, h=30, c=gimmick)
    mc.setParent('..')
    #----------------------------------------------------------------------------------------------
    mc.separator(h=10)
    #CreateWeighted--------------------------------------------------------------------------------
    mc.frameLayout(l='createWeighted', cll=True)
    mc.frameLayout(l='weighted')
    mc.rowLayout(nc=2, cat=[(1, 'left', 0), (2, 'left', 5)])
    mc.text(' Create many weighted : ')
    num = mc.intField('num', w=145)
    mc.setParent('..')
    mc.rowLayout(nc=3, cat=[(1, 'left', 0), (2, 'left', 5)])
    mc.text(' set drover :')
    drv = mc.textField('drv', w=170)
    mc.button(l='set', w=45, h=20, c=set_drv)
    mc.setParent('..')
    mc.setParent('..')

    mc.frameLayout(l='Range to create weighted')
    mc.rowLayout(nc=3, cat=[(1, 'left', 35), (2, 'left', 5)])
    mc.text('start :')
    stt = mc.textField('stt', w=170)
    mc.button(l='set', w=45, h=20, c=stt_set)
    mc.setParent('..')
    mc.rowLayout(nc=3, cat=[(1, 'left', 42), (2, 'left', 5)])
    mc.text('end :')
    end = mc.textField('end', w=170)
    mc.button(l='set', w=45, h=20, c=end_set)
    mc.setParent('..')
    mc.setParent('..')

    mc.rowLayout(nc=2, w=300)
    mc.button(l='weighted', w=150, h=30, c=give_weighted)
    mc.button(l='mirror', w=150, h=30, c=give_CreateWeighted)
    mc.setParent('..')
    mc.setParent('..')
    #----------------------------------------------------------------------------------------------
    mc.separator(h=10)
    #AngleDriver-----------------------------------------------------------------------------------
    mc.frameLayout(l='setAngleDriver', cll=True)
    mc.button(l='setAngleDriver', c=give_AngleDriver)
    mc.setParent('..')
    #----------------------------------------------------------------------------------------------
    mc.separator(h=10)
    #createExpand----------------------------------------------------------------------------------
    mc.frameLayout(l='createExpand', cll=True)
    mc.rowLayout(nc=4,
                 cat=[(1, 'left', 17), (2, 'left', 35), (3, 'left', 35),
                      (4, 'left', 35)])
    cb1 = mc.checkBox('cb1', l='+Y')
    cb2 = mc.checkBox('cb2', l='-Y')
    cb3 = mc.checkBox('cb3', l='+Z')
    cb4 = mc.checkBox('cb4', l='-Z')
    mc.setParent('..')
    mc.button(l='createExpand', c=give_Expand)
    mc.setParent('..')
    #----------------------------------------------------------------------------------------------
    mc.separator(h=10)
    #CreateSpacer----------------------------------------------------------------------------------
    mc.frameLayout(l='CreateSpacer', cll=True)
    mc.frameLayout(l='Type Select')
    mc.rowLayout(nc=2, cat=[(1, 'left', 50), (2, 'left', 65)])
    rc1 = mc.radioCollection()
    rb1 = mc.radioButton('selb', l='select', select=True)
    rb2 = mc.radioButton('hieb', l='hierachy')
    mc.setParent('..')
    mc.setParent('..')

    mc.frameLayout(label='Node Select')
    mc.rowLayout(nc=2, cat=[(1, 'left', 50), (2, 'left', 40)])
    rc2 = mc.radioCollection()
    rb3 = mc.radioButton('trsb', l='Transform', select=True)
    rb4 = mc.radioButton('jntb', l='joint')
    mc.setParent('..')
    mc.setParent('..')

    mc.button(l='create', c=give_Spacer)
    mc.setParent('..')
    #----------------------------------------------------------------------------------------------
    mc.separator(h=10)
    mc.frameLayout(l='reload module')
    mc.button(l='reload', c=develop)

    mc.showWindow(win)
示例#33
0
    def ui(cls):
        cmds.window(cls.winName, title='Cache Correct Tool', menuBar=True)

        cls.widgets['createMenu'] = cmds.menu(label='Create',
                                              tearOff=True,
                                              p=cls.winName)
        cls.widgets['addBsMenuItem'] = cmds.menuItem(
            label='Add Blend Shape Node', c=Functions.addBsNode)

        cls.widgets['editMenu'] = cmds.menu(label='Edit',
                                            tearOff=True,
                                            p=cls.winName)
        cls.widgets['selBsMenuItem'] = cmds.menuItem(
            label='Select Blend Shape Node', c=Functions.selBsNode)

        cls.widgets['helpMenu'] = cmds.menu(label='Help',
                                            tearOff=True,
                                            p=cls.winName)

        cls.widgets['mainColLo'] = cmds.columnLayout(adj=True)

        cmds.separator(h=5, p=cls.widgets['mainColLo'])

        cls.widgets['cacheGeoRowColLo'] = cmds.rowColumnLayout(
            numberOfColumns=3)
        cmds.text(label='Cache Geometry: ', p=cls.widgets['cacheGeoRowColLo'])
        cls.widgets['cacheGeoTxtFld'] = cmds.textField(
            p=cls.widgets['cacheGeoRowColLo'])
        cmds.button(label='<<',
                    p=cls.widgets['cacheGeoRowColLo'],
                    c=Functions.loadGeoBS)

        cls.widgets['bsNodeRowColLo'] = cmds.rowColumnLayout(
            numberOfColumns=2, p=cls.widgets['mainColLo'])
        cmds.text(label='Blend Shape Node: ', p=cls.widgets['bsNodeRowColLo'])
        cls.widgets['bsNodeOptMenu'] = cmds.optionMenu(
            cc=Functions.populateCorrectiveTrgList,
            p=cls.widgets['bsNodeRowColLo'])

        cmds.separator(h=10, style='in', p=cls.widgets['mainColLo'])

        cls.widgets['correctiveTrgNameRowColLo'] = cmds.rowColumnLayout(
            numberOfColumns=4,
            columnSpacing=[(3, 30)],
            p=cls.widgets['mainColLo'])
        cmds.text(label='New Corrective: ',
                  p=cls.widgets['correctiveTrgNameRowColLo'])
        cls.widgets['correctiveTrgNameTxtFld'] = cmds.textField(
            p=cls.widgets['correctiveTrgNameRowColLo'])

        cls.widgets['scltBtnRowColLo'] = cmds.rowColumnLayout(
            numberOfColumns=2,
            columnWidth=[(1, 205), (2, 205)],
            columnSpacing=[(2, 5)],
            p=cls.widgets['mainColLo'])
        cls.widgets['sculptBtn'] = cmds.button(
            label='Sculpt',
            p=cls.widgets['scltBtnRowColLo'],
            c=Functions.sculptMode)
        cls.widgets['cancelBtn'] = cmds.button(
            label='Cancel',
            p=cls.widgets['scltBtnRowColLo'],
            c=Functions.cancelSculpt,
            enable=False)
        cls.widgets['createBtn'] = cmds.button(
            label='Create',
            h=40,
            p=cls.widgets['mainColLo'],
            c=Functions.createCorrectiveTarget,
            enable=False)

        cmds.separator(h=5, style='none', p=cls.widgets['mainColLo'])

        cls.widgets['correctiveTrgFrmLo'] = cmds.frameLayout(
            label='Corrective List',
            collapsable=True,
            p=cls.widgets['mainColLo'])
        cls.widgets['correctiveTrgColLo'] = cmds.columnLayout(
            adj=True, p=cls.widgets['correctiveTrgFrmLo'])
        cls.widgets['correctiveTrgTxtScrList'] = cmds.textScrollList(
            allowMultiSelection=True, p=cls.widgets['correctiveTrgColLo'])
        cmds.popupMenu()
        cmds.menuItem(label='Refresh List',
                      c=Functions.populateCorrectiveTrgList)
        cls.widgets['popMenuRename'] = cmds.menuItem(label='Rename',
                                                     c=Functions.rename)
        cls.widgets['popMenuBreak'] = cmds.menuItem(label='Delete Key',
                                                    c=Functions.delKey)
        cls.widgets['popMenuRmv'] = cmds.menuItem(label='Remove',
                                                  c=Functions.removeTrg)
        cls.widgets['slderRowColLo'] = cmds.rowColumnLayout(
            numberOfColumns=2,
            columnWidth=[(1, 370)],
            p=cls.widgets['correctiveTrgColLo'])
        cls.widgets['trgFltSldrGrp'] = cmds.floatSliderGrp(
            field=True,
            columnWidth=[(1, 30)],
            min=0.00,
            max=1.00,
            step=0.01,
            dc=Functions.trgSldrDragCmd,
            cc=Functions.trgSldrDragCmd,
            enable=True,
            p=cls.widgets['slderRowColLo'])
        cmds.symbolButton(image='setKeyframe.png',
                          c=Functions.setKey,
                          p=cls.widgets['slderRowColLo'])

        cmds.window(cls.winName, e=True, w=400, h=300)
        cmds.showWindow(cls.winName)
示例#34
0
def build_gui_sphere_type():
    ''' Builds the UI for GT Sphere Types '''
    if cmds.window("build_gui_sphere_type", exists=True):
        cmds.deleteUI("build_gui_sphere_type")

    # main dialog Start Here =================================================================================

    build_gui_sphere_type = cmds.window("build_gui_sphere_type", title='Sphere Types - (v' + script_version + ')',\
                          titleBar=True,minimizeButton=False,maximizeButton=False, sizeable =True)
    cmds.window(build_gui_sphere_type, e=True, s=True, wh=[1, 1])

    content_main = cmds.columnLayout(adj=True)

    # Generate Header Image
    icons_folder_dir = cmds.internalVar(userBitmapsDir=True)
    header_img = icons_folder_dir + 'gt_m1_sphere_types.png'

    if os.path.isdir(icons_folder_dir) and os.path.exists(header_img) == False:
        image_enconded = 'iVBORw0KGgoAAAANSUhEUgAAAMgAAAA/CAYAAAClz4c/AAAACXBIWXMAAFxGAABcRgEUlENBAAAF8WlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMCAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDIwLTExLTA0VDE2OjEzOjMyLTA4OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIwLTExLTA0VDE2OjEzOjMyLTA4OjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyMC0xMS0wNFQxNjoxMzozMi0wODowMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpkODMyNzVmNi1mMTAwLTliNGMtOGMzYy1iOTJjYmJmN2I2ZDgiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDoyZDQ3MjNjNS0yMDM5LTUzNDgtYTRlYi02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'
        #image_64_decode = base64.decodestring(image_enconded)
        image_64_decode = base64.b64decode(image_enconded)
        image_result = open(header_img, 'wb')
        image_result.write(image_64_decode)
        image_result.close()

    cmds.rowColumnLayout(numberOfColumns=1,
                         columnWidth=[(1, 200), (2, 100), (3, 10)],
                         cs=[(1, 10), (2, 5), (3, 5)])

    cmds.image(image=header_img)

    cmds.text("Sphere Options:")
    cmds.separator(h=5, p=content_main, st="none")
    cmds.rowColumnLayout(p=content_main,
                         numberOfColumns=3,
                         columnWidth=[(1, 100), (2, 100), (3, 10)],
                         cs=[(1, 10), (2, 5), (3, 5)])
    cmds.separator(h=3, p=content_main, st="none")
    cmds.button(l="Standard Sphere",
                c=lambda x: create_standard_sphere(),
                w=100)
    cmds.button(l="Platonic Sphere A", c=lambda x: create_platonic_sphere_a())
    #cmds.separator(h=10, st="none" )
    cmds.rowColumnLayout(p=content_main,
                         numberOfColumns=2,
                         columnWidth=[(1, 100), (2, 100), (3, 10)],
                         cs=[(1, 10), (2, 5), (3, 5)])
    cmds.button(l="Cube Sphere", c=lambda x: create_cube_sphere(), w=100)
    cmds.button(l="Platonic Sphere B", c=lambda x: create_platonic_sphere_b())
    cmds.separator(h=10, st="none")

    # Show and Lock Window
    cmds.showWindow(build_gui_sphere_type)
    cmds.window(build_gui_sphere_type, e=True, s=False)

    # Set Window Icon
    qw = omui.MQtUtil.findWindow(build_gui_sphere_type)
    if python_version == 3:
        widget = wrapInstance(int(qw), QWidget)
    else:
        widget = wrapInstance(long(qw), QWidget)
    icon = QIcon(':/lambert.svg')

    widget.setWindowIcon(icon)
示例#35
0
def createUI(pWindowTitle):

    windowID = 'myWindowID'

    if mc.window(windowID, exists=True):
        mc.deleteUI(windowID)

    mc.window(windowID,
              title=pWindowTitle,
              sizeable=True,
              resizeToFitChildren=True,
              width=200)

    # OPENING ANS SAVING WINDOWS
    def pOpenFileCallback(*pArgs):
        fileOutput = pm.fileDialog2(fileMode=1)  #fileOutput[0]
        myFile = "X:/Documents/SchoolWork/LMU/Fall2016/PipelineCS/FinalTools/history.txt"
        #string $filePath = myFile;
        #$fileId = "`mm.fopen $filePath "r"`";

    def pSaveFileCallback(*pArgs):
        pm.fileDialog2(fileMode=0)

    def pPastaCallback(*pArgs):
        mm.eval("sphere -radius 3;")

    mc.menuBarLayout('Meun')
    mc.menu('File')
    mc.menuItem('Open', command=pOpenFileCallback)
    mc.menuItem('Save As...', command=pSaveFileCallback)
    mc.menuItem('CloseMM')
    mc.menu('Edit')
    mc.menuItem('Copy')
    mc.menuItem('Pasta', command=pPastaCallback)

    mc.rowColumnLayout(numberOfColumns=1,
                       columnWidth=(1, 400),
                       columnOffset=(1, 'left', 3))

    # MENUBAR LAYOUT
    def pRecordCallback(*pArgs):
        print 'Record button pressed.'
        fileHistDir = "X:/Documents/SchoolWork/LMU/Fall2016/PipelineCS/FinalTools/history.txt"
        userHist = mc.scriptEditorInfo(historyFilename=fileHistDir,
                                       writeHistory=True)

    def pExecuteCallback(*pArgs):
        mc.scriptEditorInfo(writeHistory=False)
        print 'Execute button pressed.'

    def pClearCallback(*pArgs):
        print 'Clear button pressed.'
        outputField(clear=True)

    mc.separator(h=10, style="none")

    mc.rowLayout(numberOfColumns=3)
    mc.button(label='Record',
              width=195,
              backgroundColor=(50, 0, 0),
              command=pRecordCallback)
    mc.button(label='Execute',
              width=195,
              backgroundColor=(0, 50, 0),
              command=pExecuteCallback)
    mc.setParent("..")

    mc.separator(h=10, style="none")

    mc.text(label='SELECTED STEPS')

    output = 'test test test'

    def pUpdateOutputField(*pArgs):
        #outputField = mc.cmdScrollFieldExecuter(width= 395, height=400, showLineNumbers=True, sw=True, text= output)
        outputField = mc.cmdScrollFieldReporter(width=395,
                                                height=400,
                                                echoAllCommands=True)

    pUpdateOutputField()

    mc.separator(h=10, style="none")

    #mc.button(label= 'Execute', width=395, backgroundColor=(0, 50, 0), command=pExecuteCallback)
    mc.button(label='Clear', width=395, command=pClearCallback)

    #mc.textScrollList(append=[''])
    mc.scriptEditorInfo(input="")

    mc.separator(h=10, style='none')

    mc.showWindow()
    def setup(self):
        width, height, spacer = 500, 241, 2

        cmds.columnLayout('Rig Export', adj=True, p='sme_tabMain')

        cmds.separator(h=1, st='none')

        cmds.rowColumnLayout(nc=4,
                             cs=[(1, spacer), (2, spacer), (3, spacer),
                                 (4, spacer)],
                             cw=[(1, 90), (2, 235), (3, 20), (4, 120)])

        cmds.text('sme_rigFilename_label',
                  al='right',
                  l='Rig Filename',
                  ann='Name of Rig Data to be written to disk.')
        cmds.textField('sme_rigFilename',
                       aie=1,
                       cc=lambda *args: self.check(),
                       ec=lambda *args: self.check(),
                       tx=someGlobals.rig['filename'],
                       ann='Name of Rig Data to be written to disk.')
        cmds.text('sme_rigFilenameExt', al='left', l='.fbx')
        cmds.text('sme_rigDataExists_label', al='left', l=' - Data Exists!')

        cmds.setParent('..')

        cmds.separator(h=2, st='none')
        cmds.separator(h=2, st='in')
        cmds.separator(h=2, st='none')

        cmds.rowColumnLayout(nc=2,
                             cs=[(1, spacer), (2, spacer)],
                             cw=[(1, 50), (2, width - 114)])

        cmds.text(
            'sme_rigName_label',
            al='right',
            l='Name',
            ann=
            'This is the unique name that will be assigned to your Baked Rig.')
        cmds.textField(
            'sme_rigName',
            aie=1,
            cc=lambda *args: self.updateName('sme_rigName'),
            ec=lambda *args: self.updateName('sme_rigName'),
            tx=someGlobals.rig['name'],
            ann=
            'This is the unique name that will be assigned to your Baked Rig.')

        cmds.setParent('..')

        cmds.separator(h=2, st='none')

        cmds.rowColumnLayout(nc=3,
                             cs=[(1, spacer), (2, spacer), (3, spacer)],
                             cw=[(1, 50), (2, width - 114), (3, 50)])

        cmds.button(
            'sme_selectRigToExport_button',
            l='Rig',
            ann=
            'Click this button to select the current Export Rig that is assigned.'
        )
        cmds.textField(
            'sme_rigToSample',
            aie=1,
            cc=lambda *args: self.check(),
            ec=lambda *args: self.check(),
            #tx='|Soldier_Rig_MASTER:Explorer_Model|Soldier_Rig_MASTER:Rig|Soldier_Rig_MASTER:Group|Soldier_Rig_MASTER:Main|Soldier_Rig_MASTER:DeformationSystem|Soldier_Rig_MASTER:Root_M',
            ann=
            'This is the unique name that will be assigned to your Baked Rig.')
        cmds.button(
            'sme_assignRigData_button',
            l='Assign',
            c=lambda *args: self.assign('sme_rigToSample'),
            ann='Assign a new selected export rig for baking and export.')

        cmds.setParent('..')

        cmds.separator(h=2, st='none')
        cmds.separator(h=2, st='out')
        cmds.separator(h=2, st='none')

        cmds.button('sme_rigBake_button', l='Bake and Export Rig')

        cmds.setParent('..')  # Rig Export layout
示例#37
0
    def createUI(self):
        cmds.setParent(self.window)
        cmds.columnLayout('columnLayout01',
                          width=290,
                          height=470,
                          adjustableColumn=False)
        cmds.columnLayout(parent='columnLayout01', adjustableColumn=True)
        cmds.frameLayout(label='Channels', width=288, borderStyle='in')
        ChannelsRadioCollection = cmds.radioCollection()
        cmds.rowLayout(nc=4)
        cmds.text(label='', width=2, align='left')
        cmds.radioButton('AllKeyable',
                         label=u'AllKeyable',
                         sl=True,
                         onc='radioButtonStatus("AllKeyable")')
        cmds.radioButton('FromAttributes',
                         label=u'FromAttributes',
                         onc='radioButtonStatus("FromAttributes")')
        cmds.radioButton('FromChannelBox',
                         label=u'FromChannelBox',
                         onc='radioButtonStatus("FromChannelBox")')
        cmds.setParent('..')
        cmds.setParent('..')

        cmds.frameLayout(label='Select Attributes',
                         width=288,
                         borderStyle='in',
                         collapse=True,
                         collapsable=True,
                         parent='columnLayout01')
        cmds.rowLayout(nc=6)
        cmds.text(label='    Translate:', width=80, align='left')
        cmds.checkBox('trans_x',
                      label=u'X',
                      value=True,
                      enable=False,
                      ofc='checkBoxStatus("TAll",False)')
        cmds.checkBox('trans_y',
                      label=u'Y',
                      value=True,
                      enable=False,
                      ofc='checkBoxStatus("TAll",False)')
        cmds.checkBox('trans_z',
                      label=u'Z',
                      value=True,
                      enable=False,
                      ofc='checkBoxStatus("TAll",False)')
        cmds.checkBox('trans_All',
                      label=u'All',
                      value=True,
                      enable=False,
                      onc='checkBoxStatus("T",True)',
                      ofc='checkBoxStatus("T",False)')
        cmds.setParent('..')

        cmds.columnLayout(adjustableColumn=True)
        cmds.separator(st='in')
        cmds.setParent('..')

        cmds.rowLayout(nc=5)
        cmds.text(label='    Rotate:', width=80, align='left')
        cmds.checkBox('rot_x',
                      label=u'X',
                      value=True,
                      enable=False,
                      ofc='checkBoxStatus("RAll",False)')
        cmds.checkBox('rot_y',
                      label=u'Y',
                      value=True,
                      enable=False,
                      ofc='checkBoxStatus("RAll",False)')
        cmds.checkBox('rot_z',
                      label=u'Z',
                      value=True,
                      enable=False,
                      ofc='checkBoxStatus("RAll",False)')
        cmds.checkBox('rot_All',
                      label=u'All',
                      value=True,
                      enable=False,
                      onc='checkBoxStatus("R",True)',
                      ofc='checkBoxStatus("R",False)')
        cmds.setParent('..')

        cmds.columnLayout(adjustableColumn=True)
        cmds.separator(st='in')
        cmds.setParent('..')

        cmds.rowLayout(nc=5)
        cmds.text(label='    Scale:', width=80, align='left')
        cmds.checkBox('scl_x',
                      label=u'X',
                      value=True,
                      enable=False,
                      ofc='checkBoxStatus("SAll",False)')
        cmds.checkBox('scl_y',
                      label=u'Y',
                      value=True,
                      enable=False,
                      ofc='checkBoxStatus("SAll",False)')
        cmds.checkBox('scl_z',
                      label=u'Z',
                      value=True,
                      enable=False,
                      ofc='checkBoxStatus("SAll",False)')
        cmds.checkBox('scl_All',
                      label=u'All',
                      value=True,
                      enable=False,
                      onc='checkBoxStatus("S",True)',
                      ofc='checkBoxStatus("S",False)')
        cmds.setParent('..')

        cmds.columnLayout(adjustableColumn=True)
        cmds.separator(st='in')
        cmds.setParent('..')

        cmds.columnLayout(parent='columnLayout01',
                          width=288,
                          adjustableColumn=True)
        cmds.frameLayout(label='Time Range', borderStyle='in')
        TimeRangeRadioCollection = cmds.radioCollection()
        cmds.rowLayout(nc=5)
        cmds.text(label='', width=2, align='left')
        cmds.radioButton('TimeSlider',
                         label='TimeSlider',
                         sl=True,
                         onc='radioButtonStatus("TimeSlider")')
        cmds.radioButton('StartEnd',
                         label='Start/End:',
                         width=80,
                         onc='radioButtonStatus("StartEnd")')
        cmds.floatField('StartTime',
                        value=0,
                        precision=3,
                        step=1,
                        enable=False)
        cmds.floatField('EndTime', value=10, precision=3, step=1, enable=False)
        cmds.setParent('..')

        cmds.columnLayout(parent='columnLayout01',
                          width=288,
                          adjustableColumn=True)
        cmds.frameLayout(label='Bake Simulation', borderStyle='in')

        cmds.rowLayout(nc=4)
        cmds.text(label='', width=5)
        cmds.checkBox('POK', label=u'Keep Unbaked', value=True)
        cmds.checkBox('Euler', label=u'Euler Filter', value=False)
        cmds.checkBox('Sim', label=u'Simulation', value=False)
        cmds.setParent('..')

        cmds.rowLayout(nc=4)
        cmds.text(label='    SampleBy:', width=70, align='left')
        cmds.floatField('bakeSample', value=1, precision=3, step=1, width=60)
        cmds.text(label='', width=45, align='left')
        cmds.button('Key Bake',
                    width=100,
                    label='Key Bake',
                    c='BakeFunction()')
        cmds.setParent('..')

        cmds.columnLayout(parent='columnLayout01',
                          width=288,
                          adjustableColumn=True,
                          cal='left')
        cmds.frameLayout(label='Delete static Key', borderStyle='in')
        cmds.rowLayout(nc=2)
        cmds.text(label='    Sample:', width=70, align='left')
        cmds.floatSliderGrp('DelstaticSample',
                            field=True,
                            min=0,
                            max=0.1,
                            precision=3,
                            step=0.001,
                            value=0.01,
                            width=210,
                            cw=(1, 60),
                            cal=(1, 'left'))
        cmds.setParent('..')

        cmds.rowLayout(nc=2)
        cmds.text(label='', width=180, align='left')
        cmds.button('DelStaticKey',
                    width=100,
                    label='Del Static Key',
                    c='DelStaticFunction()')
        cmds.setParent('..')

        cmds.columnLayout(parent='columnLayout01',
                          width=288,
                          adjustableColumn=True)
        cmds.frameLayout(label='Key Reduction (0= flat and linear only)',
                         borderStyle='in')
        cmds.rowLayout(nc=2)
        cmds.text(label='', width=5)
        cmds.checkBox('LockSelectedKey',
                      label=u'Lock Selected Key',
                      value=False)
        cmds.setParent('..')

        cmds.rowLayout(nc=2)
        cmds.text(label='    Sample:', width=70, align='left')
        cmds.floatSliderGrp('ReductKeySample',
                            field=True,
                            min=0.00,
                            max=1.00,
                            precision=3,
                            step=0.01,
                            value=0.5,
                            width=210,
                            cw=(1, 60),
                            cal=(1, 'left'))
        cmds.setParent('..')

        cmds.rowLayout(nc=2)
        cmds.text(label='', width=180, align='left')
        cmds.button('ReductKey',
                    width=100,
                    label='Key Reduction',
                    c='ReductKeyFunction()')
        cmds.setParent('..')
示例#38
0
def phoenixTools():
    pToolsWindow = cmds.window(
        menuBar=True,
        title="Phoenix Tools by Aaron Aikman 2014  Version 1.0.25",
        width=435,
        height=500)

    form = cmds.formLayout()
    tabs = cmds.tabLayout()
    cmds.formLayout(form,
                    edit=True,
                    attachForm=((tabs, 'top', 0), (tabs, 'left', 0),
                                (tabs, 'bottom', 0), (tabs, 'right', 0)))

    ######################################  CREATION  ######################################

    child1 = cmds.scrollLayout('scrollLayout0')

    #################
    ##  Polygons   ##
    #################

    cmds.frameLayout(label='Polygons', borderStyle='out', cll=True, width=400)
    cmds.separator(style='none')

    cmds.gridLayout(numberOfColumns=4, cellWidthHeight=(100, 25))

    cmds.button(label="Cube", command="cmds.polyCube()")
    cmds.button(label="2x2 Cube",
                command="cmds.polyCube(w=1, h=1, d=1, sx=2, sy=2, sz=2)")
    cmds.button(label="4x4 Cube",
                command="cmds.polyCube(w=1, h=1, d=1, sx=4, sy=4, sz=4)")
    cmds.button(label="Human Ref",
                command="cmds.polyCube(w=32, h=96, d=32, sx=1, sy=1, sz=1)")

    cmds.setParent('..')
    cmds.separator(w=400, style="in")
    cmds.gridLayout(numberOfColumns=4, cellWidthHeight=(100, 25))

    cmds.button(label="Sphere", command="cmds.polySphere()")
    cmds.button(label="Diode Sphere", command="cmds.polySphere(sx=4, sy=3)")
    cmds.button(label="8x8 Sphere", command="cmds.polySphere(sx=8, sy=8)")
    cmds.button(label="12x12 Sphere", command="cmds.polySphere(sx=12, sy=12)")

    cmds.setParent('..')
    cmds.separator(w=400, style="in")
    cmds.gridLayout(numberOfColumns=4, cellWidthHeight=(100, 25))

    cmds.button(label="Plane", command="cmds.polyPlane()")
    cmds.button(label="1x1 Plane",
                command="cmds.polyPlane(w=1, h=1, sx=1, sy=1)")
    cmds.button(label="4x4 Plane",
                command="cmds.polyPlane(w=1, h=1, sx=4, sy=4)")
    cmds.button(label="Floor Plane",
                command="cmds.polyPlane(w=1000, h=1000, sx=1, sy=1)")

    cmds.setParent('..')
    cmds.separator(w=400, style="in")
    cmds.gridLayout(numberOfColumns=4, cellWidthHeight=(100, 25))

    cmds.button(label="Cylinder", command="cmds.polyCylinder()")
    cmds.button(label="Tri Cylinder",
                command="cmds.polyCylinder(sx=3, sy=1, sz=1)")
    cmds.button(label="12 Cylinder",
                command="cmds.polyCylinder(sx=12, sy=1, sz=1)")
    cmds.button(label="12x4 Cylinder",
                command="cmds.polyCylinder(sx=12, sy=4, sz=1)")

    cmds.setParent('..')
    cmds.separator(w=400, style="in")
    cmds.gridLayout(numberOfColumns=4, cellWidthHeight=(100, 25))

    cmds.button(label="Torus", command="cmds.polyTorus()")
    cmds.button(label="Quad Torus", command="cmds.polyTorus(sx=4, sy=4)")
    cmds.button(label="Disk", command="makeDisk()")
    cmds.button(label="Prism", command="cmds.polyPrism()")

    cmds.setParent('..')
    cmds.separator(w=400, style="in")
    cmds.gridLayout(numberOfColumns=4, cellWidthHeight=(100, 25))

    cmds.button(label="Cone", command="cmds.polyCone()")
    cmds.button(label="Helix", command="cmds.polyHelix()")
    cmds.button(label="Pipe", command="cmds.polyPipe()")
    cmds.button(label="Pyramid", command="cmds.polyPyramid()")

    cmds.setParent('..')

    cmds.separator(style='none')

    cmds.setParent('..')

    #################
    ##     Misc    ##
    #################

    cmds.frameLayout(label='Miscellaneous',
                     borderStyle='out',
                     cll=True,
                     width=400)

    cmds.button(label="Create Geometry Tool",
                command="maya.mel.eval('setToolTo polyCreateFacetContext ;')")
    cmds.button(label="CV Curve Tool", command="cmds.CVCurveTool()")
    cmds.button(label="EP Curve Tool", command="cmds.EPCurveTool()")
    cmds.button(label="Locator", command="cmds.spaceLocator()")

    cmds.setParent('..')

    cmds.setParent('..')

    ######################################  MODELING  ######################################

    child2 = cmds.scrollLayout('scrollLayout1')

    #################
    ##  Mirroring  ##
    #################

    cmds.frameLayout(label='Mirroring', borderStyle='out', cll=True, width=400)

    cmds.separator(style="none")

    cmds.radioButtonGrp('mDir',
                        label='Direction',
                        labelArray3=['X', 'Y', 'Z'],
                        numberOfRadioButtons=3,
                        select=1,
                        cal=(1, 'right'),
                        cw4=(80, 30, 30, 30))
    cmds.radioButtonGrp('mirrorMode',
                        label='Mode',
                        labelArray3=['Duplicate', 'Instance', 'Combined Geo'],
                        numberOfRadioButtons=3,
                        select=1,
                        cal=(1, 'right'),
                        cw4=(80, 70, 70, 100))

    cmds.rowLayout(numberOfColumns=2)

    cmds.text('                         ')
    cmds.button(label="Mirror Object",
                command="mirrorGeo()",
                ann='Select object and place pivot point on symmetry line')

    cmds.setParent('..')

    cmds.separator(style="none")

    cmds.setParent('..')

    ##############
    ##  Pivots  ##
    ##############

    cmds.frameLayout(label='Pivot Manipulation',
                     borderStyle='out',
                     cll=True,
                     width=400)

    cmds.separator(style='none')

    cmds.radioButtonGrp('pivPos',
                        label='Pivot Location',
                        labelArray2=['Bottom', 'Center'],
                        numberOfRadioButtons=2,
                        select=1,
                        cal=(1, 'right'),
                        cw3=(80, 60, 60))

    cmds.rowColumnLayout(numberOfColumns=2)

    cmds.text('                         ')
    cmds.button(
        label="Move Pivots",
        command="movePivots()",
        ann=
        'Select one or more objects to adjust the pivot point of.\nTool creates a temporary group and will alter the hierarchy.'
    )

    cmds.text('                         ')
    cmds.button(label="Move Object to Origin", command="cmds.move(rpr=True)")

    cmds.setParent('..')
    cmds.separator(style='none')

    cmds.setParent('..')

    ##############
    ##   Manip  ##
    ##############

    cmds.frameLayout(label='Manipulator Orientation',
                     borderStyle='out',
                     cll=True,
                     width=400)

    cmds.separator(style='none')

    cmds.radioButtonGrp('manip',
                        label=' ',
                        labelArray2=['World Space', 'Object Space'],
                        numberOfRadioButtons=2,
                        select=1,
                        cal=(1, 'right'),
                        cw3=(80, 100, 60))

    cmds.rowLayout(numberOfColumns=2)

    cmds.text('                         ')

    cmds.button(
        label="Set Manipulator",
        command="setManip()",
        ann=
        'Sets all transformation manipulators to world space or object space')

    cmds.setParent('..')

    cmds.separator(style='none')

    cmds.setParent('..')

    ##############
    ##   Holes  ##
    ##############

    cmds.frameLayout(label='Hole Creation',
                     borderStyle='out',
                     cll=True,
                     width=400)

    cmds.separator(style='none')

    cmds.intSliderGrp("numSides",
                      l='Number of Sides',
                      field=True,
                      v=8,
                      min=3,
                      max=100,
                      fmx=10000,
                      cal=(1, 'right'),
                      cw3=(100, 100, 200))

    cmds.rowColumnLayout(numberOfColumns=4)

    cmds.text('                         ')
    cmds.button(label="Create Disk",
                command="makeDisk()",
                ann='Creates a disk at the origin point')
    cmds.text('                         ')
    cmds.button(label="Help",
                command="makeHoleHelp()",
                ann='Click for instructions')
    cmds.setParent('..')

    cmds.gridLayout(numberOfColumns=2, cellWidthHeight=(200, 25))
    cmds.button(
        label="Snap Together Tool",
        command="maya.mel.eval('setToolTo snapTogetherToolCtx;')",
        ann=
        'Click the face on the first object to be snapped into location\nafter clicking the face on the second object\nThen press enter'
    )

    cmds.button(label="Combine", command="cmds.polyUnite()")

    cmds.button(
        label="Make Hole Tool",
        command="maya.mel.eval('MakeHoleTool;')",
        ann=
        'Select the face being cut into\nThen select the face to become the hole\nThen press enter'
    )
    cmds.button(label="Quadrangulate Geo",
                command="autoQuad()",
                ann='Select an N-gon to automatically quadrangulate')

    cmds.setParent('..')
    cmds.separator(style='none')
    cmds.separator(style='single')
    cmds.separator(style='none')
    cmds.button(
        label="Make Hole Based On Geo",
        command="makeHolebyGeo()",
        ann=
        'Create a smaller face based upon the number of sides of the selected face'
    )
    cmds.separator(style='none')
    cmds.separator(style='none')

    cmds.setParent('..')

    ##############
    ## Creasing ##
    ##############

    cmds.frameLayout(label='Creasing', borderStyle='out', cll=True, width=400)

    cmds.separator(style='none')

    cmds.rowColumnLayout(numberOfColumns=2)
    cmds.text('                         ')
    cmds.button(label="Toggle Soft Edge Display",
                command="toggleSoftEdges()",
                ann='Toggle dashed lines for soft edges')

    cmds.setParent('..')
    cmds.floatSliderGrp("crsAmt",
                        field=True,
                        v=10,
                        min=0.0,
                        max=10,
                        label='Crease Amount',
                        cal=(1, 'right'),
                        cw3=(90, 100, 210))

    cmds.rowColumnLayout(numberOfColumns=2)

    cmds.text('                         ')
    cmds.button(label="Crease Hard Edges", command="creaseHardEdges()")
    cmds.text('                         ')
    cmds.button(label="Uncrease All",
                command="unCrease()",
                ann='Uncreases the edges of the selected object')

    cmds.setParent('..')

    cmds.separator(style='none')

    cmds.setParent('..')
    cmds.setParent('..')

    ######################################  UNWRAPPING  ######################################

    child3 = cmds.scrollLayout('scrollLayout2')

    #################
    ## UV Creation ##
    #################

    cmds.frameLayout(label='UV Creation',
                     borderStyle='out',
                     cll=True,
                     width=400)

    cmds.separator(style='none')

    cmds.rowColumnLayout(numberOfColumns=2)

    cmds.text('                         ')

    cmds.button(label="Unwrap Selected Faces",
                command="unwrapSelectedFaces()",
                ann='Unwraps the selected faces into contiguous shells')

    cmds.setParent('..')

    cmds.separator(style='single')

    cmds.radioButtonGrp('mode',
                        label='Mode',
                        labelArray2=['Unstretched', 'Optimized'],
                        numberOfRadioButtons=2,
                        select=1,
                        cal=(1, 'right'),
                        cw3=(80, 100, 100))

    cmds.rowColumnLayout(numberOfColumns=2)

    cmds.text('                         ')

    cmds.button(
        label="Unwrap Cylindrical",
        command="unwrapCylindrical()",
        ann=
        'Select a seam of the cylindrical object to unfold\nUnstretched mode will have no distortion,but will be less optimal for UV placement\nOptimized mode will unwrap into a shell where each face is a square\nAn optimized pipe can then be unfolded using Unfold Pipe'
    )

    cmds.setParent('..')

    cmds.separator(style='single')

    cmds.floatSliderGrp('nSAngle',
                        l='Smoothing Angle',
                        field=True,
                        v=45,
                        min=0.5,
                        max=179.5,
                        cal=(1, 'right'),
                        cw3=(100, 100, 200))

    cmds.rowColumnLayout(numberOfColumns=2)

    cmds.text('                         ')
    cmds.button(label="Set Normal Smoothing Angle",
                command="setNormalAngle()",
                ann='Sets smoothing angle for object')

    cmds.text('                         ')
    cmds.text('                         ')
    cmds.text('                         ')

    cmds.button(label="Toggle Soft Edge Display",
                command="toggleSoftEdges()",
                ann='Toggle dashed lines for soft edges')

    cmds.setParent('..')

    cmds.separator(style='none')

    cmds.rowColumnLayout(numberOfColumns=3)

    cmds.text('                         ')

    cmds.button(label="Harden Edge", command="cmds.polySoftEdge(a=0)")
    cmds.button(label="Soften Edge", command="cmds.polySoftEdge(a=180)")
    cmds.setParent('..')

    cmds.separator(style='single')

    cmds.rowColumnLayout(numberOfColumns=2)

    cmds.text('                         ')

    cmds.checkBox('lyt', label='Layout', value=True)
    cmds.text('                         ')

    cmds.checkBox('unf', label='Unfold', value=True)

    cmds.text('                         ')

    cmds.button(
        label="Unwrap by Smoothing Angle",
        command="unwrapByAngle()",
        ann=
        """Creates UV shells for the selected object based upon the object's edge normals."""
    )

    cmds.text('                         ')

    cmds.button(
        label="Unwrap by Selected Seams",
        command="unwrapBySeams()",
        ann=
        """Creates UV shells for the object using the selected edges as seams."""
    )

    cmds.setParent('..')

    cmds.separator(style='none')

    cmds.setParent('..')

    #################
    ## UV Editing  ##
    #################

    cmds.frameLayout(label='UV Editing',
                     borderStyle='out',
                     cll=True,
                     width=400)

    cmds.separator(style='none')

    cmds.gridLayout(numberOfColumns=2, cellWidthHeight=(200, 25))

    cmds.button(
        label="Unfold Vertical Pipe",
        command="unfoldPipe(2)",
        ann=
        'Select the UVs of an unfolded pipe or cylindrical object\nthat run around the pipe (i.e.that are not touching the origin or insertion of the pipe)\nIf the width is only one face, select the entire shell\nUse this option for UVs that are tall'
    )
    cmds.button(
        label="Unfold Horizontal Pipe",
        command="unfoldPipe(1)",
        ann=
        'Select the UVs of an unfolded pipe or cylindrical object\nthat run around the pipe (i.e.that are not touching the origin or insertion of the pipe)\nIf the width is only one face, select the entire shell\nUse this option for UVs that are wide'
    )
    cmds.button(label="Select Uvs Edge to Loop",
                command="selectUvEdgeLoop()",
                ann='Select an edge to convert selection to uv edge loop')
    cmds.button(
        label="Straighten Border",
        command="straightenUVBorder()",
        ann=
        'Select a line of border UVs to straighten the UVS in between the furthest UVS'
    )

    cmds.setParent('..')

    cmds.separator(style='none')

    cmds.setParent('..')

    ####################
    ## UV Management  ##
    ####################

    cmds.frameLayout(label='UV Management',
                     borderStyle='out',
                     cll=True,
                     width=400)

    cmds.separator(style='none')

    cmds.radioButtonGrp('rot',
                        label='Rotation',
                        labelArray3=['None', '90 Deg', 'Free'],
                        numberOfRadioButtons=3,
                        select=3,
                        cal=(1, 'right'),
                        cw4=(80, 60, 60, 60))

    cmds.rowColumnLayout(numberOfColumns=2)

    cmds.text('                         ')
    cmds.button(label="Layout UVs", command="layoutUVs()")

    cmds.setParent('..')

    cmds.separator(style='single')

    cmds.rowColumnLayout(numberOfColumns=2)

    cmds.text('                         ')

    cmds.checkBox('cH', label='Clear Child History', value=False)

    cmds.text('                         ')
    cmds.button(
        label="Transfer UVs",
        command="transferUVs()",
        ann=
        'Select the parent object to derive UVs from\nand then any children to copy the UVs to\nChildren will become UV instances of the parent unless Child History is cleared\nKeeping History tends to slow down performance'
    )

    cmds.setParent('..')

    cmds.separator(style='none')

    cmds.setParent('..')

    cmds.setParent('..')

    cmds.tabLayout(tabs,
                   edit=True,
                   tabLabel=((child1, 'Creation'), (child2, 'Modeling'),
                             (child3, 'Unwrapping')))

    cmds.showWindow(pToolsWindow)
def build_help_gui_ik_leg_generator():
    window_name = "build_help_gui_ik_leg_generator"
    if cmds.window(window_name, exists=True):
        cmds.deleteUI(window_name, window=True)

    cmds.window(window_name, title= script_name + " Help", mnb=False, mxb=False, s=True)
    cmds.window(window_name, e=True, s=True, wh=[1,1])

    cmds.columnLayout("main_column", p= window_name)
   
    # Title Text
    cmds.separator(h=12, style='none') # Empty Space
    cmds.rowColumnLayout(nc=1, cw=[(1, 310)], cs=[(1, 10)], p="main_column") # Window Size Adjustment
    cmds.rowColumnLayout(nc=1, cw=[(1, 300)], cs=[(1, 10)], p="main_column") # Title Column
    cmds.text(script_name + " Help", bgc=(.4, .4, .4),  fn="boldLabelFont", align="center")
    cmds.separator(h=10, style='none', p="main_column") # Empty Space


    # Body ====================   
    cmds.rowColumnLayout(nc=1, cw=[(1, 300)], cs=[(1,10)], p="main_column")
    cmds.text(l='This script assumes that you are using a simple leg', align="left")
    cmds.text(l='composed of a hip joint, a knee joint an ankle joint', align="left")
    cmds.text(l='and maybe ball and toe joints.', align="left")
    cmds.separator(h=15, style='none') # Empty Space
    cmds.text(l='In case your setup is different, I suggest you try', align="left")
    cmds.text(l='a different solution.', align="left")
    cmds.separator(h=15, style='none') # Empty Space
    cmds.text(l='Joint Tag (Suffix) and Ctrl Group Tag (Suffix):', align="left", fn="boldLabelFont")
    cmds.text(l='These two textfields allow you to define what suffix you', align="left")
    cmds.text(l='used for you base skeleton joints and your control groups.', align="left") 
    cmds.text(l='(used when creating new names or looking for controls)', align="left")
    cmds.separator(h=10, style='none') # Empty Space
    cmds.text(l='The Ctrl Group Tag is used to define the visibility of the', align="left")
    cmds.text(l='FK system.', align="left")
    cmds.separator(h=15, style='none') # Empty Space
    cmds.text(l='Custom PVector Ctrl, IK Ctrl and IK Switch:', align="left", fn="boldLabelFont")
    cmds.text(l='These options allow you to load an already existing', align="left")
    cmds.text(l='control.', align="left")
    cmds.text(l='In case you already created curve you could simply load', align="left")
    cmds.text(l='them and the script will use yours instead of creating a', align="left")
    cmds.text(l='new one', align="left")
    cmds.separator(h=15, style='none') # Empty Space
    cmds.text(l='Colorize Controls: ', align="left", fn="boldLabelFont")
    cmds.text(l='This option looks for "right_" and "left_" tags', align="left")
    cmds.text(l='and assign colors based on the found tag', align="left")
    cmds.separator(h=15, style='none') # Empty Space
    cmds.text(l='Make Stretchy Legs: ', align="left", fn="boldLabelFont")
    cmds.text(l='This option creates measure tools to define how to', align="left")
    cmds.text(l='strechy the leg when it goes beyong its current size.', align="left")
    cmds.text(l='- Term = What is being compared', align="left")
    cmds.text(l='- Condition = Default Size (used for scalling the rig)', align="left")
    cmds.separator(h=15, style='none') # Empty Space
    cmds.text(l='Use Ball Joint:', align="left", fn="boldLabelFont")
    cmds.text(l='This option allows you to define whether or not to use', align="left")
    cmds.text(l='a ball joint.', align="left")
    cmds.separator(h=15, style='none') # Empty Space
    cmds.text(l='Load \"Content\" Buttons:', align="left", fn="boldLabelFont")
    cmds.text(l='These buttons allow you to load the necessary', align="left")
    cmds.text(l='objects before running the script.', align="left")
    cmds.separator(h=15, style='none') # Empty Space
    cmds.rowColumnLayout(nc=2, cw=[(1, 140),(2, 140)], cs=[(1,10),(2, 0)], p="main_column")
    cmds.text('Guilherme Trevisan  ')
    cmds.text(l='<a href="mailto:[email protected]">[email protected]</a>', hl=True, highlightColor=[1,1,1])
    cmds.rowColumnLayout(nc=2, cw=[(1, 140),(2, 140)], cs=[(1,10),(2, 0)], p="main_column")
    cmds.separator(h=15, style='none') # Empty Space
    cmds.text(l='<a href="https://github.com/TrevisanGMW">Github</a>', hl=True, highlightColor=[1,1,1])
    cmds.separator(h=7, style='none') # Empty Space
    
    # Close Button 
    cmds.rowColumnLayout(nc=1, cw=[(1, 300)], cs=[(1,10)], p="main_column")
    cmds.separator(h=10, style='none')
    cmds.button(l='OK', h=30, c=lambda args: close_help_gui())
    cmds.separator(h=8, style='none')
    
    # Show and Lock Window
    cmds.showWindow(window_name)
    cmds.window(window_name, e=True, s=False)
    
    # Set Window Icon
    qw = omui.MQtUtil.findWindow(window_name)
    widget = wrapInstance(long(qw), QWidget)
    icon = QIcon(':/question.png')
    widget.setWindowIcon(icon)
    
    def close_help_gui():
        if cmds.window(window_name, exists=True):
            cmds.deleteUI(window_name, window=True)
示例#40
0
def build_gui_help_py_curve():
    window_name = "build_gui_help_py_curve"
    if cmds.window(window_name, exists=True):
        cmds.deleteUI(window_name, window=True)

    cmds.window(window_name,
                title=script_name + " Help",
                mnb=False,
                mxb=False,
                s=True)
    cmds.window(window_name, e=True, s=True, wh=[1, 1])

    cmds.columnLayout("main_column", p=window_name)

    # Title Text
    cmds.separator(h=12, style='none')  # Empty Space
    cmds.rowColumnLayout(nc=1, cw=[(1, 310)], cs=[(1, 10)],
                         p="main_column")  # Window Size Adjustment
    cmds.rowColumnLayout(nc=1, cw=[(1, 300)], cs=[(1, 10)],
                         p="main_column")  # Title Column
    cmds.text(script_name + " Help",
              bgc=[0, .5, 0],
              fn="boldLabelFont",
              align="center")
    cmds.separator(h=10, style='none', p="main_column")  # Empty Space

    # Body ====================
    cmds.rowColumnLayout(nc=1, cw=[(1, 300)], cs=[(1, 10)], p="main_column")
    cmds.text(l='This script generates the Python code necessary to create',
              align="left")
    cmds.text(l='a selected curve.', align="left")
    cmds.separator(h=10, style='none')  # Empty Space
    cmds.text(l='Make sure you delete the curve\'s history before ',
              align="left")
    cmds.text(l='generating the code.', align="left")
    cmds.separator(h=15, style='none')  # Empty Space
    cmds.text(l='Add import "maya.cmds":', align="left", fn="boldLabelFont")
    cmds.text(l='Adds a line that imports Maya\'s API. This is necessary',
              align="left")
    cmds.text(l='when running python scripts.', align="left")
    cmds.separator(h=15, style='none')  # Empty Space
    cmds.text(l='Close Curve: ', align="left", fn="boldLabelFont")
    cmds.text(l='Adds a line to close the curve after creating it.',
              align="left")
    cmds.separator(h=15, style='none')  # Empty Space
    cmds.text(l='"Generate" button:', align="left", fn="boldLabelFont")
    cmds.text(l='Outputs the python code necessary to create the curve',
              align="left")
    cmds.text(l='inside the "Output PYthon Curve" box.', align="left")
    cmds.separator(h=15, style='none')  # Empty Space
    cmds.text(l='Run Code:', align="left", fn="boldLabelFont")
    cmds.text(l='Attempts to run the code (or anything written) inside ',
              align="left")
    cmds.text(l='"Output Python Curve" box', align="left")
    cmds.separator(h=15, style='none')  # Empty Space
    cmds.rowColumnLayout(nc=2,
                         cw=[(1, 140), (2, 140)],
                         cs=[(1, 10), (2, 0)],
                         p="main_column")
    cmds.text('Guilherme Trevisan  ')
    cmds.text(
        l='<a href="mailto:[email protected]">[email protected]</a>',
        hl=True,
        highlightColor=[1, 1, 1])
    cmds.rowColumnLayout(nc=2,
                         cw=[(1, 140), (2, 140)],
                         cs=[(1, 10), (2, 0)],
                         p="main_column")
    cmds.separator(h=15, style='none')  # Empty Space
    cmds.text(l='<a href="https://github.com/TrevisanGMW">Github</a>',
              hl=True,
              highlightColor=[1, 1, 1])
    cmds.separator(h=7, style='none')  # Empty Space

    # Close Button
    cmds.rowColumnLayout(nc=1, cw=[(1, 300)], cs=[(1, 10)], p="main_column")
    cmds.separator(h=10, style='none')
    cmds.button(l='OK', h=30, c=lambda args: close_help_gui())
    cmds.separator(h=8, style='none')

    # Show and Lock Window
    cmds.showWindow(window_name)
    cmds.window(window_name, e=True, s=False)

    # Set Window Icon
    qw = omui.MQtUtil.findWindow(window_name)
    widget = wrapInstance(long(qw), QWidget)
    icon = QIcon(':/question.png')
    widget.setWindowIcon(icon)

    def close_help_gui():
        if cmds.window(window_name, exists=True):
            cmds.deleteUI(window_name, window=True)
示例#41
0
 def createColumn(self, i):
     mc.columnLayout()
     mc.text(label=self.titles[i], font="boldLabelFont")
     mc.separator(height=5, style="in")
     self.handleCommand(i)
     mc.setParent("..")
示例#42
0
def getPrintStudioDialog():
    global downloadInfo
    window = cmds.window(
        title=maya.stringTable['y_printStudio.kPrintStudioDownload'],
        widthHeight=(340, 180),
        menuBar=False,
        sizeable=False)

    formLayout = cmds.formLayout()
    tabLayout = cmds.tabLayout(innerMarginWidth=0,
                               innerMarginHeight=0,
                               tabsVisible=False)
    cmds.formLayout(formLayout,
                    edit=True,
                    attachForm=((tabLayout, 'top', 0), (tabLayout, 'left', 0),
                                (tabLayout, 'bottom', 0), (tabLayout, 'right',
                                                           0)))

    # Tab 1 - Print Studio is not currently installed
    cmds.columnLayout(width=340)
    cmds.columnLayout(width=340)
    cmds.text(width=340,
              height=60,
              label=maya.stringTable['y_printStudio.kNotIntalled1'],
              align='center')
    cmds.text(width=340,
              height=16,
              label=maya.stringTable['y_printStudio.kNotIntalled2'],
              align='center')
    sizeInfo = ''
    if printStudioDownloadURL() is not None:
        file_name = downloadInfo['url'].split('/')[-1]
        sizeInfo = '%s (%d MB)' % (
            file_name, int(round(downloadInfo['size'] / 1048576.0)))
    cmds.text(width=340, height=24, label=sizeInfo, align='center')
    cmds.separator(width=340, height=44, style='none')
    cmds.separator(width=340)
    cmds.setParent('..')
    cmds.rowLayout(numberOfColumns=5,
                   columnAttach=[(1, 'left', 4), (5, 'right', 4)])
    aboutCommand = lambda widget: cmds.showHelp(
        'https://ember.autodesk.com/overview#software', absolute=True)
    aboutButton = cmds.button(
        width=120,
        label=maya.stringTable['y_printStudio.kAboutPrintStudio'],
        command=aboutCommand)
    cmds.separator(width=4, horizontal=False)
    downloadCommand = lambda widget: downloadPrintStudio(window=window,
                                                         tabLayout=tabLayout)
    downloadButton = cmds.button(
        width=94,
        label=maya.stringTable['y_printStudio.kDownload'],
        command=downloadCommand)
    cmds.separator(width=4, horizontal=False)
    cancelCommand = lambda widget: cmds.deleteUI(window, window=True)
    cmds.button(width=94,
                label=maya.stringTable['y_printStudio.kCancel'],
                command=cancelCommand)
    cmds.setParent('..')
    cmds.setParent('..')

    # Tab 2 - Downloading Print Studio Installer
    cmds.columnLayout(width=340)
    cmds.columnLayout(width=340)
    cmds.text(width=340,
              height=60,
              label=maya.stringTable['y_printStudio.kDownloading'],
              align='center')
    cmds.rowLayout(numberOfColumns=1, columnAttach=[(1, 'left', 30)])
    progressBar = cmds.progressBar(width=270, height=16)
    cmds.setParent('..')
    cmds.separator(width=340, height=4, style='none')
    cmds.text(width=340,
              height=60,
              label=maya.stringTable['y_printStudio.kPressToCancel'],
              align='center')

    downloadCommand = lambda widget: downloadPrintStudio(
        window=window, tabLayout=tabLayout, progressBar=progressBar)
    cmds.button(downloadButton, edit=True, command=downloadCommand)

    cmds.tabLayout(tabLayout, edit=True, selectTabIndex=1)
    cmds.showWindow(window)
示例#43
0
def build_gui_py_curve():
    window_name = "build_gui_py_curve"
    if cmds.window(window_name, exists=True):
        cmds.deleteUI(window_name)

    # Main GUI Start Here =================================================================================

    build_gui_py_curve = cmds.window(window_name, title=script_name + "  v" + script_version,\
                          titleBar=True, mnb=False, mxb=False, sizeable =True)

    cmds.window(window_name, e=True, s=True, wh=[1, 1])

    column_main = cmds.columnLayout()

    form = cmds.formLayout(p=column_main)

    content_main = cmds.columnLayout(adj=True)

    cmds.separator(h=10, style='none')  # Empty Space
    cmds.rowColumnLayout(nc=1, cw=[(1, 270)], cs=[(1, 10)],
                         p=content_main)  # Window Size Adjustment
    cmds.rowColumnLayout(nc=3,
                         cw=[(1, 10), (2, 200), (3, 50)],
                         cs=[(1, 10), (2, 0), (3, 0)],
                         p=content_main)  # Title Column
    cmds.text(" ", bgc=[0, .5, 0])  # Tiny Empty Green Space
    cmds.text(script_name + " v" + script_version,
              bgc=[0, .5, 0],
              fn="boldLabelFont",
              align="left")
    cmds.button(l="Help",
                bgc=(0, .5, 0),
                c=lambda x: build_gui_help_py_curve())
    cmds.separator(h=10, style='none', p=content_main)  # Empty Space

    # Body ====================
    body_column = cmds.rowColumnLayout(nc=1,
                                       cw=[(1, 260)],
                                       cs=[(1, 10)],
                                       p=content_main)

    cmds.rowColumnLayout(nc=1, cw=[(1, 260)], cs=[(1, 10)])

    settings = cmds.checkBoxGrp(columnWidth2=[150, 1], numberOfCheckBoxes=2, \
                                label1 = 'Add import \"maya.cmds\" ', label2 = "Close Curve", v1 = add_import, v2 = close_curve)

    cmds.rowColumnLayout(nc=1, cw=[(1, 230)], cs=[(1, 0)])
    cmds.separator(h=10, style='none')  # Empty Space
    cmds.button(l="Generate",
                bgc=(.6, .8, .6),
                c=lambda x: generate_python_curve())
    cmds.separator(h=10, style='none', p=content_main)  # Empty Space
    cmds.separator(h=10, p=content_main)

    # Bottom ====================
    cmds.rowColumnLayout(nc=1, cw=[(1, 260)], cs=[(1, 10)], p=content_main)
    cmds.text(label='Output Python Curve')
    output_python = cmds.scrollField(editable=True, wordWrap=True)
    cmds.separator(h=10, style='none')  # Empty Space
    cmds.button(l="Run Code",
                c=lambda x: run_output_code(
                    cmds.scrollField(output_python, query=True, text=True)))
    cmds.separator(h=10, style='none')  # Empty Space

    def generate_python_curve():

        not_curve_error = "Please make sure you selected a Nurbs Curve or a Bezier Curve object before generating it"

        if len(cmds.ls(selection=True)) != 0:
            getcontext().prec = 5

            shape = cmds.listRelatives(cmds.ls(sl=1)[0], s=1, fullPath=True)[0]
            type_checker = str(cmds.objectType(shape))

            if "nurbsCurve" in type_checker or "bezierCurve" in type_checker:

                cvs = cmds.getAttr(shape + '.cv[*]')
                cvs_list = []

                for c in cvs:
                    cvs_list.append([
                        float(Decimal("%.3f" % c[0])),
                        float(Decimal("%.3f" % c[1])),
                        float(Decimal("%.3f" % c[2]))
                    ])

                if cmds.checkBoxGrp(settings, q=True, value1=True):
                    out = 'import maya.cmds as cmds\n\ncmds.curve(p='
                else:
                    out = 'cmds.curve(p='

                out += '[%s]' % ', '.join(map(str, cvs_list))
                out += ',d=' + str(cmds.getAttr(shape + '.degree')) + ')'

                if cmds.checkBoxGrp(settings, q=True, value2=True):
                    out += '\n\ncmds.closeCurve(ch=False, ps=False, rpo=True)'
                else:
                    pass

                print("#" * 100)
                print out
                print("#" * 100)

                cmds.scrollField(output_python,
                                 edit=True,
                                 wordWrap=True,
                                 text=out,
                                 sl=True)
                cmds.setFocus(output_python)
            else:
                cmds.warning(not_curve_error)
                cmds.scrollField(output_python,
                                 edit=True,
                                 wordWrap=True,
                                 text=not_curve_error,
                                 sl=True)
                cmds.setFocus(output_python)
        else:
            cmds.warning(not_curve_error)

    # Show and Lock Window
    cmds.showWindow(build_gui_py_curve)
    cmds.window(window_name, e=True, s=False)

    # Set Window Icon
    qw = omui.MQtUtil.findWindow(window_name)
    widget = wrapInstance(long(qw), QWidget)
    icon = QIcon(':/pythonFamily.png')
    widget.setWindowIcon(icon)
    def createCustom(self, *args):
        '''
        #
        #
        #
        #
        #
        '''
        # selection type
        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 As Well?")
        #mc.setParent("..")
        mc.radioButtonGrp(
            "selArmMirrorType_rbg",
            la2=["No", "Yes"],
            nrb=2,
            sl=2,
            cw2=[50, 50],
        )
        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(
            "selArmType_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, 370)], cs=[1, 5], rs=[1, 3])
        mc.text(bgc=(0.85, 0.65, 0.25), l="IK Spine: ")
        mc.textFieldButtonGrp("jointLoad_tfbg", cw=(1, 322), bl="  Load  ")

        #mc.text(bgc=(0.85, 0.65, 0.25), l="COG: ")
        #mc.textFieldButtonGrp("cog_tfbg", cw=(1, 322), bl="  Load  ", tx="CTRL_COG")

        mc.text(bgc=(0.85, 0.65, 0.25), l="Shoulder CTRL: ")
        mc.textFieldButtonGrp("ctrlShoulderLoad_tf",
                              cw=(1, 322),
                              bl="  Load  ",
                              tx="CTRL_l_shoulder")

        mc.setParent("..")

        mc.separator(st="in", h=20, w=500)

        # load buttons
        #

        mc.textFieldButtonGrp("jointLoad_tfbg", e=True, bc=self.loadSrc1Btn)
        mc.textFieldButtonGrp("ctrlShoulderLoad_tf",
                              e=True,
                              bc=self.loadSrc2Btn)

        self.selLoad = []
        self.jointArray = []
        mc.showWindow(self.window)
示例#45
0
    def _start_ui(self):
        # Remove size preference to force the window calculate its size
        windowName = 'VirtuCameraMayaConfigWindow'
        if cmds.windowPref(windowName, exists=True):
            cmds.windowPref(windowName, remove=True)
        self._ui_window = cmds.window(windowName,
                                      width=self._WINDOW_SIZE[0],
                                      height=self._WINDOW_SIZE[1],
                                      menuBarVisible=False,
                                      titleBar=True,
                                      visible=True,
                                      sizeable=True,
                                      closeCommand=self._close_ui,
                                      title='VirtuCamera Configuration')
        form_lay = cmds.formLayout(width=550, height=400)
        col_lay = cmds.columnLayout(adjustableColumn=True,
                                    columnAttach=('both', 0),
                                    width=465)

        cmds.text(label='General Settings', align='left')
        cmds.separator(height=15, style='none')
        cmds.rowLayout(numberOfColumns=3,
                       columnWidth3=(59, 80, 45),
                       columnAttach=[(1, 'both', 0), (2, 'both', 0),
                                     (3, 'both', 0)])
        cmds.separator(style='none')
        cmds.text(label='Server Port', align='right')
        self._port_num_ui = cmds.intField(
            width=45,
            value=self.DEFAULT_SRVPORT,
            minValue=0,
            maxValue=65535,
            changeCommand=self._port_num_changed_ui)
        cmds.setParent('..')
        cmds.separator(height=5, style='none')
        self._cap_mode_ui = cmds.optionMenuGrp(
            label='Capture Mode', changeCommand=self._cap_mode_changed_ui)
        cmds.menuItem(label=self.CAPMODE_BUFFER)
        cmds.menuItem(label=self.CAPMODE_SCREENSHOT)
        cmds.text(
            label=
            "                                          'Viewport Buffer' is faster. 'Screenshot' is experimental, only use it\n                                           if you are having problems visualizing the viewport on the App.",
            align='left')
        cmds.separator(height=25, style='none')
        cmds.separator()
        cmds.separator(height=15, style='none')
        cmds.text(label='Custom Scripts', align='left')
        cmds.separator(height=15, style='none')
        cmds.rowLayout(numberOfColumns=3,
                       columnWidth3=(600, 80, 80),
                       adjustableColumn=1,
                       columnAttach=[(1, 'both', 0), (2, 'both', 0),
                                     (3, 'both', 0)])
        self._script_num_ui = cmds.intSliderGrp(
            field=True,
            label='Script Number',
            minValue=0,
            maxValue=1,
            fieldMinValue=0,
            fieldMaxValue=1,
            value=0,
            dragCommand=self._script_number_changed_ui,
            enable=False)
        self._new_bt_ui = cmds.button(label='New', command=self._new_script_ui)
        self._rem_bt_ut = cmds.button(label='Remove',
                                      command=self._remove_script_ui,
                                      enable=False)
        cmds.setParent('..')
        self._label_ui = cmds.textFieldGrp(
            label='Button Label',
            textChangedCommand=self._label_changed_ui,
            enable=False)
        self._lang_ui = cmds.radioButtonGrp(
            label='Language',
            labelArray2=['Python', 'MEL'],
            numberOfRadioButtons=2,
            select=self.LANG_PY,
            changeCommand=self._languaje_changed_ui,
            enable=False)
        self._code_lb_ui = cmds.text(label='Script Code',
                                     align='left',
                                     enable=False)
        cmds.setParent('..')
        self._ui_sfield = cmds.scrollField(
            editable=True,
            wordWrap=False,
            keyPressCommand=self._code_changed_ui,
            enable=False)
        col_lay2 = cmds.columnLayout(adjustableColumn=True,
                                     columnAttach=('both', 0),
                                     width=465)
        cmds.rowLayout(numberOfColumns=2,
                       columnWidth2=(680, 80),
                       adjustableColumn=1,
                       columnAttach=[(1, 'both', 0), (2, 'both', 0)])
        cmds.separator(style='none')
        self._ui_save = cmds.button(label='Save',
                                    width=80,
                                    command=self._save_ui,
                                    enable=False)
        cmds.setParent('..')
        cmds.setParent('..')
        cmds.formLayout(form_lay,
                        edit=True,
                        attachForm=[(col_lay, 'top', 20),
                                    (col_lay, 'left', 20),
                                    (col_lay, 'right', 20),
                                    (self._ui_sfield, 'left', 20),
                                    (self._ui_sfield, 'right', 20),
                                    (col_lay2, 'bottom', 20),
                                    (col_lay2, 'left', 20),
                                    (col_lay2, 'right', 20)],
                        attachControl=[(self._ui_sfield, 'top', 0, col_lay),
                                       (self._ui_sfield, 'bottom', 15,
                                        col_lay2)])
        cmds.setParent('..')
        cmds.showWindow(self._ui_window)
示例#46
0
def dbtrace_ui():
    """
    Create a simple window showing the current status of the dbtrace objects
    and providing a callback to change both the enabled state and the output
    location.
    """
    global DBTRACE_SCRIPT_JOB
    global DBTRACE_WINDOW
    global DBTRACE_FRAME
    global DBTRACE_SCROLL
    global DBTRACE_CONTENT
    global DBTRACE_FILTERS
    global DBTRACE_FILTER_TEXT
    global DBTRACE_SHOW_ENABLED
    global DBTRACE_SHOW_DISABLED

    # Default options
    filter_text = ''
    show_enabled = True
    show_disabled = True

    # If calling this for the first time then build the window and the fixed
    # portion of it.
    if not cmds.window(DBTRACE_WINDOW, exists=True):
        # Create an event notifying us when the dbTrace values change so
        # that the UI can be updated accordingly.
        if DBTRACE_SCRIPT_JOB == None:
            DBTRACE_SCRIPT_JOB = cmds.scriptJob(
                event=['dbTraceChanged', 'maya.debug.dbtrace_ui.dbtrace_ui()'])

        DBTRACE_WINDOW = cmds.window(DBTRACE_WINDOW,
                                     title='dbtrace Objects',
                                     iconName='dbtrace Objects')

        # Filtering information goes above all of the traces. This doesn't
        # have to be rebuilt when the traces change.
        DBTRACE_FRAME = cmds.formLayout(DBTRACE_FRAME)

        # First half of the DBTRACE_FRAME, fixed for all content
        DBTRACE_FILTERS = cmds.rowLayout(DBTRACE_FILTERS,
                                         rowAttach=[(1, 'both', 0)],
                                         numberOfColumns=6,
                                         adjustableColumn=2,
                                         columnAlign=[
                                             (1, 'right'), (2, 'left'),
                                             (3, 'center'), (4, 'left'),
                                             (5, 'center'), (6, 'left')
                                         ],
                                         columnAttach=[(col, 'both', 0)
                                                       for col in range(1, 7)])
        #
        cmds.text(label=maya.stringTable['y_dbtrace_ui.kFilter'])
        DBTRACE_FILTER_TEXT = cmds.textField(
            DBTRACE_FILTER_TEXT,
            text=filter_text,
            alwaysInvokeEnterCommandOnReturn=True,
            annotation=maya.stringTable['y_dbtrace_ui.kShowFilterInfo'])
        cmds.textField(
            DBTRACE_FILTER_TEXT,
            edit=True,
            enterCommand='maya.debug.dbtrace_ui.dbtrace_filter_change("{}")'.
            format(DBTRACE_FILTER_TEXT))
        #
        cmds.separator(style='single')  #------------------------------
        #
        DBTRACE_SHOW_DISABLED = cmds.checkBox(
            DBTRACE_SHOW_DISABLED,
            value=show_disabled,
            label=maya.stringTable['y_dbtrace_ui.kShowOff'],
            annotation=maya.stringTable['y_dbtrace_ui.kShowOffInfo'],
            onCommand='maya.debug.dbtrace_ui.dbtrace_filter_off_change(True)',
            offCommand='maya.debug.dbtrace_ui.dbtrace_filter_off_change(False)'
        )
        #
        cmds.separator(style='single')  #------------------------------
        #
        DBTRACE_SHOW_ENABLED = cmds.checkBox(
            DBTRACE_SHOW_ENABLED,
            value=show_enabled,
            label=maya.stringTable['y_dbtrace_ui.kShowOn'],
            annotation=maya.stringTable['y_dbtrace_ui.kShowOnInfo'],
            onCommand='maya.debug.dbtrace_ui.dbtrace_filter_on_change(True)',
            offCommand='maya.debug.dbtrace_ui.dbtrace_filter_on_change(False)')
        cmds.setParent('..')

        # Second half of the DBTRACE_FRAME, rebuilds the trace list as a spreadsheet
        DBTRACE_SCROLL = cmds.scrollLayout(DBTRACE_SCROLL, childResizable=True)

        # Now that all elements are in place create the formLayout attachments to
        # keep all of the rows in the right place.
        cmds.formLayout(DBTRACE_FRAME,
                        edit=True,
                        attachControl=[(DBTRACE_SCROLL, 'top', 5,
                                        DBTRACE_FILTERS)],
                        attachForm=[(DBTRACE_FILTERS, 'top', 0),
                                    (DBTRACE_FILTERS, 'left', 0),
                                    (DBTRACE_FILTERS, 'right', 0),
                                    (DBTRACE_SCROLL, 'left', 0),
                                    (DBTRACE_SCROLL, 'right', 0),
                                    (DBTRACE_SCROLL, 'bottom', 0)])
    else:
        # If the window exists clear out the scrolling content to be rebuilt.
        # It's not the most efficient way of doing it but it's simple.
        #
        if cmds.rowColumnLayout(DBTRACE_CONTENT, query=True, exists=True):
            cmds.deleteUI(DBTRACE_CONTENT)
        #
        # Read in the filtering options from the UI elements
        #
        filter_text = cmds.textField(DBTRACE_FILTER_TEXT,
                                     query=True,
                                     text=True)
        show_disabled = cmds.checkBox(DBTRACE_SHOW_DISABLED,
                                      query=True,
                                      value=True)
        show_enabled = cmds.checkBox(DBTRACE_SHOW_ENABLED,
                                     query=True,
                                     value=True)

    # The frame is the piece that is constant. Attach to it.
    cmds.setParent(DBTRACE_SCROLL)

    # Table is one row per trace object
    DBTRACE_CONTENT = cmds.rowColumnLayout(DBTRACE_CONTENT,
                                           numberOfColumns=4,
                                           columnAlign=[
                                               (1, 'left'), (2, 'left'),
                                               (3, 'left'), (4, 'left')
                                           ],
                                           columnSpacing=[(1, 10), (2, 10),
                                                          (3, 10), (4, 10)])
    cmds.text(label=maya.stringTable['y_dbtrace_ui.kTrace'],
              font='boldLabelFont')
    cmds.text(label=maya.stringTable['y_dbtrace_ui.kOutput'],
              font='boldLabelFont')
    cmds.text(label=maya.stringTable['y_dbtrace_ui.kShow'],
              font='boldLabelFont')
    cmds.text(label=maya.stringTable['y_dbtrace_ui.kDescription'],
              font='boldLabelFont')
    cmds.separator(style='in')
    cmds.separator(style='in')
    cmds.separator(style='in')
    cmds.separator(style='in')

    # Gather all trace objects (they're either on or off)
    trace_names_on = cmds.dbtrace(query=True)
    trace_names_off = cmds.dbtrace(query=True, off=True)

    # Figure out which trace elements to show based on the enabled/disabled filters
    trace_states_to_show = []
    if show_enabled:
        trace_states_to_show += [True]
    if show_disabled:
        trace_states_to_show += [False]

    # Convert the UI names of the traces to (name,level,enable_state) tuples
    trace_objects = []
    for trace_status in trace_states_to_show:
        for trace_object in [trace_names_off, trace_names_on][trace_status]:

            # If there's a text filter on then skip anything not matching it.
            # The filter is on the combined name, including the level where
            # it is applicable.
            if filter_text is not None and len(filter_text) > 0:
                # Use a regex to keep the filter more general
                if not re.search(filter_text, trace_object):
                    continue

            # Split the combined trace name NAME[LEVEL]. When LEVEL isn't
            # specified it's irrelevant and so ignored.
            trace_match = RE_TRACE_NAME.search(trace_object)
            if trace_match:
                trace_name = trace_match.group(1)
                trace_level = int(trace_match.group(2))
            else:
                trace_name = trace_object
                trace_level = 0
# In customer builds the traces with levels > 0 are not active
            if trace_level > 0:
                continue

            trace_objects.append((trace_name, trace_level, trace_status))

    # Create one line per trace object
    for (trace_object, trace_level, trace_state) in trace_objects:
        trace_name = __trace_ui_name(trace_object, trace_level)

        output = cmds.dbtrace(keyword=trace_object,
                              level=trace_level,
                              query=True,
                              output=True)[1]
        info = cmds.dbtrace(keyword=trace_object,
                            level=trace_level,
                            query=True,
                            info=True)[0]

        # Column 1 - Enable/disable checkbox (editable)
        enable_widget = cmds.checkBox(value=trace_state,
                                      label=trace_name,
                                      annotation=str(info))
        cmds.checkBox(
            enable_widget,
            edit=True,
            onCommand=
            'maya.debug.dbtrace_ui.dbtrace_enable_change("{}","{}",{},True)'.
            format(enable_widget, trace_object, trace_level),
            offCommand=
            'maya.debug.dbtrace_ui.dbtrace_enable_change("{}","{}",{},False)'.
            format(enable_widget, trace_object, trace_level))

        # Column 2 - Output location for trace (editable)
        output_field = cmds.textField(text=str(output),
                                      alwaysInvokeEnterCommandOnReturn=True,
                                      width=200)
        cmds.textField(
            output_field,
            edit=True,
            enterCommand=
            'maya.debug.dbtrace_ui.dbtrace_output_change("{}",{}, "{}")'.
            format(trace_object, trace_level, output_field))

        # Column 3 - "Show" button, only enabled if the output file exists
        enabled = True
        if not os.path.isfile(output):
            enabled = False

        cmds.button(
            label='Show',
            enable=enabled,
            command='maya.debug.dbtrace_ui.dbtrace_show_output("{}","{}")'.
            format(trace_object, output))

        # Column 4 - Description of trace (fixed)
        cmds.text(label=str(info))

    if len(trace_objects) == 0:
        cmds.text(label='No trace objects pass the filter',
                  font='obliqueLabelFont')

    cmds.showWindow(DBTRACE_WINDOW)
示例#47
0
 def customUI(self):
     self.widgets["ribbonNameTFG"] = cmds.textFieldGrp(l="Ribbon Rig Name",
                                                       cal=[(1, "left"),
                                                            (2, "left")],
                                                       cw=[(1, 100),
                                                           (2, 200)],
                                                       tx="ribbon")
     cmds.separator(h=10, style="single")
     self.widgets["jointsIFG"] = cmds.intFieldGrp(
         l="Number of Jnts (3 min)",
         cal=([1, "left"]),
         cw=([1, 125], [2, 100]),
         v1=5)
     self.widgets["axis"] = cmds.radioButtonGrp(l="Ribbon Ctrl Axis",
                                                nrb=3,
                                                l1="x",
                                                l2="y",
                                                l3="z",
                                                cal=([1, "left"]),
                                                cw=([1, 125], [2,
                                                               50], [3,
                                                                     50]),
                                                sl=2,
                                                en=True)
     self.widgets["fkSetupCB"] = cmds.checkBox(l="Setup FK Controls", v=1)
     self.widgets["heightFFG"] = cmds.floatFieldGrp(l="Ribbon Height",
                                                    cal=[(1, "left"),
                                                         (2, "left")],
                                                    cw=[(1, 125), (2, 100)],
                                                    v1=10.0)
     self.widgets["ratioFFG"] = cmds.floatFieldGrp(l="Heigth/width Ratio",
                                                   cal=[(1, "left"),
                                                        (2, "left")],
                                                   cw=[(1, 125), (2, 100)],
                                                   v1=5)
     #create a slider for where we want the middle piece of the ribbon
     self.widgets["centerPosFSG"] = cmds.floatSliderGrp(
         l="Center Ctrl Position",
         f=True,
         cal=[(1, "left"), (2, "left"), (3, "left")],
         cw=[(1, 125), (2, 50), (3, 200)],
         min=0,
         max=1,
         fmn=0,
         fmx=1,
         v=0.5,
         pre=3)
     #option for making (or not) control structure
     #-------option to use my own surface?
     self.widgets["existingGeoCB"] = cmds.checkBox(
         l="Use existing nurbs curve", v=0, cc=self.geoEnable)
     #this will reveal text field grp w button
     #checking and unchecking will activate options (and deactivate)
     self.widgets["geoTFBG"] = cmds.textFieldButtonGrp(l="Select Geometry",
                                                       bl="<<<",
                                                       en=False,
                                                       cal=[(1, "left"),
                                                            (2, "left"),
                                                            (3, "left")],
                                                       cw=[(1, 100),
                                                           (2, 250),
                                                           (3, 50)],
                                                       bc=self.getGeo)
     self.widgets["directionRBG"] = cmds.radioButtonGrp(l="Along U or V?",
                                                        nrb=2,
                                                        l1="u",
                                                        l2="v",
                                                        cal=[(1, "left"),
                                                             (2, "left")],
                                                        cw=[(1, 100),
                                                            (2, 50),
                                                            (3, 50)],
                                                        sl=2,
                                                        en=False)
示例#48
0
def distributeObject():
    if cmds.window('Distribution', ex=True):
        cmds.deleteUI('Distribution')
    cmds.window('Distribution', w=300, h=400)
    cmds.rowLayout(nc=2)
    cmds.columnLayout()
    cmds.rowLayout(nc=2)
    cmds.textFieldGrp('Distribution_StartPointReference',
                      l='StartPoint',
                      w=400)
    cmds.button('Distribution_Start_Button', l='<<<', w=100)
    cmds.setParent(u=True)
    cmds.rowLayout(nc=2)
    cmds.textFieldGrp('Distribution_EndPointReference', l='EndPoint', w=400)
    cmds.button('Distribution_End_Button', l='<<<', w=100)
    cmds.setParent(u=True)

    txField = cmds.floatFieldGrp(l='TranslateX', nf=2, v1=0, v2=0)
    tyField = cmds.floatFieldGrp(l='TranslateY', nf=2, v1=0, v2=0)
    tzField = cmds.floatFieldGrp(l='TranslateZ', nf=2, v1=0, v2=0)
    rxField = cmds.floatFieldGrp(l='RotateX', nf=2, v1=0, v2=0)
    ryField = cmds.floatFieldGrp(l='RotateY', nf=2, v1=0, v2=0)
    rzField = cmds.floatFieldGrp(l='RotateZ', nf=2, v1=0, v2=0)
    sxField = cmds.floatFieldGrp(l='ScaleX', nf=2, v1=1, v2=1)
    syField = cmds.floatFieldGrp(l='ScaleY', nf=2, v1=1, v2=1)
    szField = cmds.floatFieldGrp(l='ScaleZ', nf=2, v1=1, v2=1)
    seedField = cmds.intSliderGrp(l='Seed', field=True, min=0, max=65535)
    cmds.setParent(u=True)

    cmds.columnLayout()
    cmds.radioCollection()
    cmds.radioButton('Distribution_Linear_Switch', l='Linear', sl=True)
    cmds.radioButton('Distribution_Random_Switch', l='Random')
    cmds.separator(h=60, style='none')
    cmds.radioCollection()
    cmds.radioButton('Distribution_Uniform_Scale', l='Uniform', sl=True)
    cmds.radioButton('Distribution_Solo_Scale', l='Solo')
    cmds.setParent(u=True)
    cmds.showWindow('Distribution')

    fieldList = [
        txField, tyField, tzField, rxField, ryField, rzField, sxField, syField,
        szField, seedField
    ]
    cmds.floatFieldGrp(txField,
                       e=True,
                       cc=lambda *args: transformObjects(fieldList))
    cmds.floatFieldGrp(tyField,
                       e=True,
                       cc=lambda *args: transformObjects(fieldList))
    cmds.floatFieldGrp(tzField,
                       e=True,
                       cc=lambda *args: transformObjects(fieldList))
    cmds.floatFieldGrp(rxField,
                       e=True,
                       cc=lambda *args: transformObjects(fieldList))
    cmds.floatFieldGrp(ryField,
                       e=True,
                       cc=lambda *args: transformObjects(fieldList))
    cmds.floatFieldGrp(rzField,
                       e=True,
                       cc=lambda *args: transformObjects(fieldList))
    cmds.floatFieldGrp(sxField,
                       e=True,
                       cc=lambda *args: transformObjects(fieldList))
    cmds.floatFieldGrp(syField,
                       e=True,
                       cc=lambda *args: transformObjects(fieldList))
    cmds.floatFieldGrp(szField,
                       e=True,
                       cc=lambda *args: transformObjects(fieldList))
    cmds.intSliderGrp(seedField,
                      e=True,
                      cc=lambda *args: transformObjects(fieldList))
    cmds.radioButton('Distribution_Uniform_Scale',
                     e=True,
                     cc=lambda *args: transformObjects(fieldList))
    cmds.radioButton('Distribution_Solo_Scale',
                     e=True,
                     cc=lambda *args: transformObjects(fieldList))
    cmds.radioButton('Distribution_Linear_Switch',
                     e=True,
                     cc=lambda *args: transformObjects(fieldList))
    cmds.radioButton('Distribution_Random_Switch',
                     e=True,
                     cc=lambda *args: transformObjects(fieldList))
    cmds.button('Distribution_Start_Button',
                e=True,
                c=lambda *args: startPointReferenceButtonAction(fieldList))
    cmds.button('Distribution_End_Button',
                e=True,
                c=lambda *args: endPointReferenceButtonAction(fieldList))
def createUI():
    global win
    global colorField
    global temperatureField
    global intensityField
    global subdivsField
    global skp
    global sskp
    global noDecayBox
    global doubleSidedBox
    global radiusField
    global sphereSegmentsField
    global rayDistanceField
    
    win="multiLightWin"
    if cmds.window(win,exists=True):
        deleteWindow()
       
    myWindow=cmds.window(win,title="VRay Multiple Light v1.0",resizeToFitChildren=True,sizeable=True,maximizeButton=True,minimizeButton=True)    
    
    cmds.columnLayout(adjustableColumn=True,rowSpacing=2,columnAttach=("both",8))
     
    cmds.separator( height=15, style='in')
    
    cmds.frameLayout( label='Common Attributes',  bgc=(0.341,0.341,0.341), collapsable=True)
    
    cmds.columnLayout(adjustableColumn=True,rowSpacing=2,columnAttach=("both",8))
    
    cmds.checkBox(label="Enabled",onCommand=("enabled(True)"),offCommand=("enabled(False)"), value=True)
    
    cmds.separator( height=15, style='in')
    
    cmds.radioButtonGrp(label="Color Mode",numberOfRadioButtons=2, width=266, labelArray2=["color","temperature"], changeCommand1="setColorMode(False)",changeCommand2="setColorMode(True)",select=1,adjustableColumn=True,columnAlign=(1,"left"))
    
    cmds.separator( height=15, style='in')
    
    colorField=cmds.colorSliderGrp(label="Color",width=266,hsv=(360,0,0.700),changeCommand=setColor,dragCommand=setColor,adjustableColumn=True,columnAlign=(1,"left"))
    
    temperatureField=cmds.floatSliderGrp(label="Temperature",field=True,width=266, minValue=1000, maxValue=10000, fieldMinValue=1000, fieldMaxValue=30000,dragCommand=setTemperature,changeCommand=setTemperature,value=6500, precision=3, enable=False,adjustableColumn=True,columnAlign=(1,"left"))
        
    intensityField=cmds.floatSliderGrp(label="Intensity",field=True,width=266, minValue=0, maxValue=100, fieldMinValue=0, fieldMaxValue=1000000000,dragCommand=setIntensity,changeCommand=setIntensity,value=30, precision=3,adjustableColumn=True,columnAlign=(1,"left"))
    
    subdivsField=cmds.intSliderGrp(label="Subdivs",field=True,width=266, minValue=1, maxValue=32, fieldMinValue=1, fieldMaxValue=1000000000,dragCommand=setSubdivs,changeCommand=setSubdivs,value=8,adjustableColumn=True,columnAlign=(1,"left"))

    cmds.separator( height=15, style='in')
    
    noDecayBox=cmds.checkBox(label="No Decay",onCommand=("noDecay(True)"),offCommand=("noDecay(False)"))
    #doubleSidedBox=cmds.checkBox(label="Double Sided",onCommand=("doubleSided(True)"),offCommand=("doubleSided(False)"))
    cmds.checkBox(label="Invisible",onCommand=("invisible(True)"),offCommand=("invisible(False)"))
    #skp=cmds.checkBox(label="Skylight Portal",onCommand=("skylightPortal(True)"),offCommand=("skylightPortal(False)"))
    #sskp=cmds.checkBox(label="Simple Skylight Portal",onCommand=("simpleSkylightPortal(True)"),offCommand=("simpleSkylightPortal(False)"),enable=False) 
    cmds.checkBox(label="Store With Irradiance Map",onCommand=("storeWithIrradianceMap(True)"),offCommand=("storeWithIrradianceMap(False)")) 
    
    cmds.separator( height=12, style='in')
    
    cmds.checkBox(label="Affect Diffuse",onCommand=("affectDiffuse(True)"),offCommand=("affectDiffuse(False)"), value=True)
    cmds.checkBox(label="Affect Specular",onCommand=("affectSpecular(True)"),offCommand=("affectSpecular(False)"), value=True)
    cmds.checkBox(label="Affect Reflections",onCommand=("affectReflections(True)"),offCommand=("affectReflections(False)"), value=True)
    cmds.checkBox(label="Shadows",onCommand=("shadows(True)"),offCommand=("shadows(False)"), value=True)
    cmds.separator( height=15, style='in')
    
    cmds.setParent("..")
    cmds.setParent("..")
    cmds.setParent("..")
     
    cmds.frameLayout(label='Individual Attributes',backgroundColor=(0.341,0.341,0.341), collapsable=True,collapse=True)
    cmds.scrollLayout(height=200,childResizable=True)    
    cmds.columnLayout(adjustableColumn=True,rowSpacing=2,columnAttach=("both",8))
    
    cmds.frameLayout( label='VRayLightSphere',backgroundColor=(0.341,0.341,0.341), collapsable=True)
    cmds.columnLayout(adjustableColumn=True,rowSpacing=2,columnAttach=("both",8))
    
    radiusField=cmds.floatSliderGrp(label="Radius",field=True,width=266, minValue=0, maxValue=10, fieldMinValue=0, fieldMaxValue=1000000000,value=1, precision=3,dragCommand=setRadius,changeCommand=setRadius,adjustableColumn=True,columnAlign=(1,"left"))
    sphereSegmentsField=cmds.intSliderGrp(label="Sphere Segments",field=True,width=266, minValue=3, maxValue=64, fieldMinValue=1, fieldMaxValue=1000000000,value=20,dragCommand=setSphereSegments,changeCommand=setSphereSegments,adjustableColumn=True,columnAlign=(1,"left"))
        
    cmds.separator( height=15, style='in')
    
    cmds.setParent("..")
    cmds.setParent("..")
    
    cmds.frameLayout( label='VRayLightDome',backgroundColor=(0.341,0.341,0.341), collapsable=True)
    cmds.columnLayout(adjustableColumn=True,rowSpacing=2,columnAttach=("both",8))
    
    cmds.checkBox(label="Dome Spherical",onCommand=("domeSpherical(True)"),offCommand=("domeSpherical(False)"))
    cmds.checkBox(label="Use Ray Distance",onCommand=("useRayDistance(True)"),offCommand=("useRayDistance(False)"))
    rayDistanceField=cmds.floatSliderGrp(label="Ray Distance",field=True,width=266,enable=False, minValue=0, maxValue=100000, fieldMinValue=0, fieldMaxValue=1000000000,value=100000,dragCommand=setRayDistance,changeCommand=setRayDistance,precision=3,adjustableColumn=True,columnAlign=(1,"left"))
    
    cmds.separator( height=15, style='in')
    
    cmds.setParent("..")
    cmds.setParent("..")
    
    cmds.frameLayout( label='VRayLightRect',backgroundColor=(0.341,0.341,0.341), collapsable=True)
    cmds.columnLayout(adjustableColumn=True,rowSpacing=2,columnAttach=("both",8))
    
    doubleSidedBox=cmds.checkBox(label="Double Sided",onCommand=("doubleSided(True)"),offCommand=("doubleSided(False)"))
    skp=cmds.checkBox(label="Skylight Portal",onCommand=("skylightPortal(True)"),offCommand=("skylightPortal(False)"))
    sskp=cmds.checkBox(label="Simple Skylight Portal",onCommand=("simpleSkylightPortal(True)"),offCommand=("simpleSkylightPortal(False)"),enable=False)
    
    cmds.separator( height=15, style='in')
    
    cmds.setParent("..")
    cmds.setParent("..")
    
    cmds.frameLayout( label='VRayLightIES',backgroundColor=(0.341,0.341,0.341), collapsable=True)
    cmds.columnLayout(adjustableColumn=True,rowSpacing=2,columnAttach=("both",8))
    
    cmds.checkBox(label="Area Speculars",onCommand=("areaSpeculars(True)"),offCommand=("areaSpeculars(False)"), value=True)
    #skp=cmds.checkBox(label="Skylight Portal",onCommand=("skylightPortal(True)"),offCommand=("skylightPortal(False)"))
    #sskp=cmds.checkBox(label="Simple Skylight Portal",onCommand=("simpleSkylightPortal(True)"),offCommand=("simpleSkylightPortal(False)"),enable=False)
    
    #cmds.separator( height=15, style='in')
    
    cmds.setParent("..")
    cmds.setParent("..")
    
    cmds.setParent("..")
    cmds.setParent("..")
    
    cmds.setParent("..")
    
    cmds.separator( height=15, style='in')
    
    cmds.columnLayout(adjustableColumn=True,columnAttach=("both",80))    
    cmds.button(label="close",align="center", command=deleteWindow)
    cmds.setParent("..")
   
    cmds.separator( height=15, style='in')
    
    cmds.showWindow(myWindow)
def separator():
	cmds.separator(style="in", w=275, h=10)
示例#51
0
def dbtrace_show_output(trace_object, output_file):
    """
    Button command to open up a window displaying the current trace output.

    output_file: Name of the file to show
    """
    global DBTRACE_OUTPUT_FILTER
    global DBTRACE_OUTPUT_FRAME
    global DBTRACE_OUTPUT_WINDOW
    global DBTRACE_OUTPUT_TEXT
    global DBTRACE_OUTPUT_CONTENT

    reload_command = 'maya.debug.dbtrace_ui.dbtrace_show_output("{}","{}")'.format(
        trace_object, output_file)
    filter_data = ''

    # Build the window components if they don't already exist
    if not cmds.window(DBTRACE_OUTPUT_WINDOW, exists=True):
        DBTRACE_OUTPUT_WINDOW = cmds.window(DBTRACE_OUTPUT_WINDOW)

        DBTRACE_OUTPUT_FRAME = cmds.formLayout(DBTRACE_OUTPUT_FRAME)

        # Section 1, the controls
        top_row = cmds.rowLayout(rowAttach=[(1, 'both', 0)],
                                 numberOfColumns=4,
                                 adjustableColumn=4,
                                 columnAlign=[(1, 'center'), (2, 'center'),
                                              (3, 'right'), (4, 'left')],
                                 columnAttach=[(1, 'both', 0), (2, 'both', 0),
                                               (3, 'both', 0), (4, 'both', 0)])
        cmds.button('Refresh', command=reload_command)
        cmds.separator(style='single')
        cmds.text(label=maya.stringTable['y_dbtrace_ui.kOutputHighlight'])
        DBTRACE_OUTPUT_FILTER = cmds.textField(
            DBTRACE_OUTPUT_FILTER,
            text='',
            alwaysInvokeEnterCommandOnReturn=True,
            annotation=maya.stringTable['y_dbtrace_ui.kShowOutputFilterInfo'])
        cmds.textField(DBTRACE_OUTPUT_FILTER,
                       edit=True,
                       enterCommand=reload_command)
        cmds.setParent('..')

        # Section 2, the file content
        DBTRACE_OUTPUT_CONTENT = cmds.scrollLayout(DBTRACE_OUTPUT_CONTENT,
                                                   childResizable=True)
        DBTRACE_OUTPUT_TEXT = cmds.textScrollList(DBTRACE_OUTPUT_TEXT,
                                                  numberOfRows=1,
                                                  allowMultiSelection=True,
                                                  append=['Temporary text'])

        cmds.formLayout(DBTRACE_OUTPUT_FRAME,
                        edit=True,
                        attachControl=[(DBTRACE_OUTPUT_CONTENT, 'top', 5,
                                        top_row)],
                        attachForm=[(top_row, 'top', 0), (top_row, 'left', 0),
                                    (top_row, 'right', 0),
                                    (DBTRACE_OUTPUT_CONTENT, 'left', 0),
                                    (DBTRACE_OUTPUT_CONTENT, 'right', 0),
                                    (DBTRACE_OUTPUT_CONTENT, 'bottom', 0)])
    else:
        filter_data = cmds.textField(DBTRACE_OUTPUT_FILTER,
                                     query=True,
                                     text=True)

    # Populate the window components with the current trace output
    cmds.window(DBTRACE_OUTPUT_WINDOW,
                edit=True,
                title='dbtrace Output for {} in {}'.format(
                    trace_object, output_file),
                iconName='dbtrace Output')

    cmds.setParent(DBTRACE_OUTPUT_CONTENT)

    # From the contents of the file construct three synchronized arrays of
    # descriptive elements, one per line:
    #       line_id:     Unique ID of the for selection purposes
    #       line_text:   Contents of the line
    #       line_select: True|False saying whether it matched the filter data or not
    try:
        output_fd = open(output_file, 'r')
        line_number = 0
        line_id = []
        line_text = []
        line_select = []
        for line in output_fd:
            line_number += 1
            this_id = 'line{}'.format(line_number)
            line_id.append(this_id)
            line_text.append(line.rstrip())
            if filter_data != '' and re.search(filter_data, line) is not None:
                line_select.append(this_id)
        output_fd.close()
    except Exception:
        line_id = ['line0']
        line_text = ['...File not found...']
        line_select = []

    cmds.textScrollList(DBTRACE_OUTPUT_TEXT, edit=True, removeAll=True)
    cmds.textScrollList(DBTRACE_OUTPUT_TEXT,
                        edit=True,
                        numberOfRows=len(line_text),
                        append=line_text,
                        uniqueTag=line_id,
                        selectUniqueTagItem=line_select)
    cmds.showWindow()
    def __init__(self):
        # Setup the scene the Turbine way
        utils.sceneSetup(self)
        """ Dict for UIElements """
        self.UIElements = {}

        self.rigFiles = {}
        self.rigs = {}
        self.setupFile = {}
        self.rigFile = {}
        self.characterNamespace = {}
        self.setupDir = {}
        self.characterName = {}

        refUtils = referenceUtils.Reference_Utils()

        self.rigFiles['rigFiles'] = refUtils.findRigs()[0]
        self.rigs['rigs'] = refUtils.findRigs()[1]
        print self.rigFiles['rigFiles']
        print self.rigs['rigs']

        print self.rigs['rigs']
        """ If the window exists, delete it. """
        if cmds.window("charRefWindow", exists=True):
            cmds.deleteUI("charRefWindow")

        self.windowWidth = 420
        self.windowHeight = 300

        fieldWidth = (self.windowWidth - 10)
        fieldHeight = (self.windowHeight - 60)
        self.buttonWidth = fieldWidth

        columnOffset = 5
        buttonColumnWidth = self.buttonWidth + (2 * columnOffset)
        textScrollWidth = (self.windowWidth - buttonColumnWidth)

        # Create the main window
        mainWindow = self.UIElements["window"] = cmds.window(
            "charRefWindow",
            width=self.windowWidth,
            height=self.windowHeight,
            s=True)

        # Create a couple flow layouts to hold the UI Elements for setup tools
        self.UIElements["buttonColumnLayout"] = cmds.flowLayout(
            h=self.windowHeight, v=True)

        self.UIElements["rigList"] = cmds.textScrollList(
            numberOfRows=20,
            allowMultiSelection=False,
            append=self.rigs['rigs'],
            width=fieldWidth,
            h=fieldHeight,
            fn="boldLabelFont",
            dcc=self.getFileForReference)

        cmds.separator(height=5, style='in')

        self.UIElements['button'] = cmds.button(label='Reference Character',
                                                width=self.buttonWidth,
                                                c=self.setupPicker_UI)

        cmds.setParent(self.UIElements["buttonColumnLayout"])

        cmds.showWindow(self.UIElements["window"])
示例#53
0
def translatorOptions(parent, action, initialSettings, resultCallback):
    defaults = {
        "activeCamera": "<Current>",
        "exportAnim": False,
        "startFrame": 1,
        "endFrame": 100,
        "stepFrame": 1
    }

    createGlobalNodes()

    if initialSettings:
        logger.debug("Parsing initial translator settings %s" %
                     initialSettings)

        opts = initialSettings.split(";")
        for opt in opts:
            opt = opt.strip()

            if opt == "":
                continue

            name, value = opt.split("=")
            if name in defaults:
                if isinstance(defaults[name], basestring):
                    defaults[name] = value
                elif isinstance(defaults[name], bool):
                    defaults[name] = bool(value)
                elif isinstance(defaults[name], int):
                    defaults[name] = int(value)
                else:
                    logger.warning("Unhandled param %s in translator options" %
                                   name)

    if action == "post":
        mc.setParent(parent)
        mc.setUITemplate("DefaultTemplate", pushTemplate=True)
        mc.columnLayout(adj=True)

        mc.optionMenuGrp("as_exportOpts_activeCamera", label="Render camera")
        mc.menuItem(label='<Current>', divider=True)
        for camera in mc.ls(type='camera'):
            if mc.getAttr(camera + '.orthographic'):
                continue
            if not mc.getAttr(camera + ".renderable"):
                continue

            mc.menuItem(label=camera)

        mc.separator(style="single")

        def exportAnimChanged(value):
            mc.intSliderGrp("as_exportOpts_startFrame",
                            edit=True,
                            enable=value)

            mc.intSliderGrp("as_exportOpts_endFrame", edit=True, enable=value)

            mc.intSliderGrp("as_exportOpts_stepFrame", edit=True, enable=value)

        exportAnim = defaults["exportAnim"]
        mc.checkBoxGrp("as_exportOpts_exportAnim",
                       numberOfCheckBoxes=1,
                       label=" ",
                       label1="Animation",
                       cc=exportAnimChanged,
                       value1=exportAnim)

        mc.intSliderGrp("as_exportOpts_startFrame",
                        label="Start:",
                        field=True,
                        min=1,
                        max=1000,
                        enable=exportAnim,
                        value=defaults["startFrame"])

        mc.intSliderGrp("as_exportOpts_endFrame",
                        label="End:",
                        field=True,
                        min=1,
                        max=1000,
                        enable=exportAnim,
                        value=defaults["endFrame"])

        mc.intSliderGrp("as_exportOpts_stepFrame",
                        label="Step:",
                        field=True,
                        min=1,
                        max=100,
                        enable=exportAnim,
                        value=defaults["stepFrame"])

    elif action == "query":
        options = ""

        value = mc.optionMenuGrp("as_exportOpts_activeCamera",
                                 query=True,
                                 value=True)

        # Replace current by the active camera.
        if value == "<Current>":
            if om.MGlobal.mayaState() == om.MGlobal.kInteractive:
                camera = om.MDagPath()
                omui.M3dView.active3dView().getCamera(camera)

                if mc.getAttr(camera.partialPathName() + ".renderable"):
                    value = camera.partialPathName()
                else:
                    logger.warning("Active camera not renderable. Ignoring.")
                    value = ""
            else:
                logger.warning("Active camera specified for maya batch.")
                value = ""

        if value:
            options += "activeCamera=" + value + ";"

        exportAnim = mc.checkBoxGrp("as_exportOpts_exportAnim",
                                    query=True,
                                    value1=True)
        if exportAnim:
            options += "exportAnim=true;"

            value = mc.intSliderGrp("as_exportOpts_startFrame",
                                    query=True,
                                    value=True)
            options += "startFrame=" + str(value) + ";"

            value = mc.intSliderGrp("as_exportOpts_endFrame",
                                    query=True,
                                    value=True)
            options += "endFrame=" + str(value) + ";"

            value = mc.intSliderGrp("as_exportOpts_stepFrame",
                                    query=True,
                                    value=True)
            options += "stepFrame=" + str(value) + ";"

        logger.debug("calling translator callback, options = %s" % options)
        mel.eval('%s "%s"' % (resultCallback, options))
示例#54
0
def locatorSurfaceUI():
    '''
	UI for locatorSurface()
	'''
    # Window
    window = 'locatorSurfaceUI'
    if mc.window(window, q=True, ex=1): mc.deleteUI(window)
    window = mc.window(window, t='Locator Surface')
    # Layout
    FL = mc.formLayout(numberOfDivisions=100)
    # UI Elements
    #---
    # Surface
    surfaceTFB = mc.textFieldButtonGrp('locatorSurfaceTFB',
                                       label='Source Surface',
                                       text='',
                                       buttonLabel='Load Selected')
    # Prefix
    prefixTFG = mc.textFieldGrp('locatorSurfacePrefixTFG',
                                label='Prefix',
                                text='')
    # Scale
    scaleFSG = mc.floatSliderGrp('locatorSurfaceScaleFSG',
                                 label='Locator Scale',
                                 field=True,
                                 minValue=0.0,
                                 maxValue=1.0,
                                 fieldMinValue=0.0,
                                 fieldMaxValue=10.0,
                                 value=0.75,
                                 pre=3)
    # Use Control Points
    useCvCBG = mc.checkBoxGrp('locatorSurfaceUseCvCBG',
                              l='Specify CVs',
                              ncb=1,
                              v1=False)

    # Control Points layout
    cvFrameL = mc.frameLayout('locatorSurfaceCvFL',
                              l='Control Points',
                              cll=0,
                              en=0)
    cvFormL = mc.formLayout(numberOfDivisions=100)
    controlPointTSL = mc.textScrollList('locatorSurfaceCpTSL',
                                        numberOfRows=8,
                                        allowMultiSelection=True)
    # TSL Buttons
    cvAddB = mc.button('locatorSurfaceAddCvB',
                       l='Add',
                       c='glTools.ui.utils.addCvsToTSL("' + controlPointTSL +
                       '")',
                       en=False)
    cvRemB = mc.button('locatorSurfaceRemCvB',
                       l='Remove',
                       c='glTools.ui.utils.removeFromTSL("' + controlPointTSL +
                       '")',
                       en=False)

    mc.setParent('..')
    mc.setParent('..')

    # Separator
    SEP = mc.separator(height=10, style='single')
    # Buttons
    createB = mc.button('locatorSurfaceCreateB',
                        l='Create',
                        c='glTools.ui.surface.locatorSurfaceFromUI()')
    cancelB = mc.button('locatorSurfaceCancelB',
                        l='Cancel',
                        c='mc.deleteUI("' + window + '")')

    # UI callback commands
    mc.textFieldButtonGrp(surfaceTFB,
                          e=True,
                          bc='glTools.ui.utils.loadSurfaceSel("' + surfaceTFB +
                          '","' + prefixTFG + '")')
    mc.checkBoxGrp('locatorSurfaceUseCvCBG',
                   e=True,
                   cc='glTools.ui.utils.checkBoxToggleLayout("' + useCvCBG +
                   '","' + cvFrameL + '")')

    # Form Layout - MAIN
    mc.formLayout(FL,
                  e=True,
                  af=[(surfaceTFB, 'top', 5), (surfaceTFB, 'left', 5),
                      (surfaceTFB, 'right', 5)])
    mc.formLayout(FL, e=True, ac=[(prefixTFG, 'top', 5, surfaceTFB)])
    mc.formLayout(FL,
                  e=True,
                  af=[(prefixTFG, 'left', 5), (prefixTFG, 'right', 5)])
    mc.formLayout(FL, e=True, ac=[(scaleFSG, 'top', 5, prefixTFG)])
    mc.formLayout(FL,
                  e=True,
                  af=[(scaleFSG, 'left', 5), (scaleFSG, 'right', 5)])
    mc.formLayout(FL, e=True, ac=[(useCvCBG, 'top', 5, scaleFSG)])
    mc.formLayout(FL, e=True, af=[(useCvCBG, 'left', 5)])
    mc.formLayout(FL, e=True, ac=[(cvFrameL, 'top', 5, useCvCBG)])
    mc.formLayout(FL,
                  e=True,
                  af=[(cvFrameL, 'left', 5), (cvFrameL, 'right', 5)])
    mc.formLayout(FL, e=True, ac=[(cvFrameL, 'bottom', 5, SEP)])
    mc.formLayout(FL, e=True, ac=[(SEP, 'bottom', 5, createB)])
    mc.formLayout(FL, e=True, af=[(SEP, 'left', 5), (SEP, 'right', 5)])
    mc.formLayout(FL, e=True, ac=[(createB, 'bottom', 5, cancelB)])
    mc.formLayout(FL, e=True, af=[(createB, 'left', 5), (createB, 'right', 5)])
    mc.formLayout(FL,
                  e=True,
                  af=[(cancelB, 'left', 5), (cancelB, 'right', 5),
                      (cancelB, 'bottom', 5)])

    # Form Layout - Control Points
    mc.formLayout(cvFormL,
                  e=True,
                  af=[(controlPointTSL, 'top', 5),
                      (controlPointTSL, 'left', 5),
                      (controlPointTSL, 'right', 5)])
    mc.formLayout(cvFormL, e=True, ac=[(controlPointTSL, 'bottom', 5, cvAddB)])
    mc.formLayout(cvFormL,
                  e=True,
                  af=[(cvAddB, 'left', 5), (cvAddB, 'bottom', 5)])
    mc.formLayout(cvFormL, e=True, ap=[(cvAddB, 'right', 5, 50)])
    mc.formLayout(cvFormL,
                  e=True,
                  af=[(cvRemB, 'right', 5), (cvRemB, 'bottom', 5)])
    mc.formLayout(cvFormL, e=True, ap=[(cvRemB, 'left', 5, 50)])

    # Show Window
    mc.showWindow(window)
示例#55
0
def createUI():
    ''' Function to generate the user interface. '''

    windowID = "GUI"
    if mc.window(windowID, exists=True):
        mc.deleteUI(windowID)

    winControl = mc.window(windowID, title='Growth Control', w=100)

    mc.columnLayout(columnAttach=('both', 5),
                    rowSpacing=7,
                    columnWidth=10,
                    adjustableColumn=True)

    mc.rowLayout(nc=3,
                 cat=[(1, 'both', 1), (2, 'both', 10), (3, 'both', 1)],
                 adjustableColumn=2)
    mc.separator()
    scriptPath = os.environ['MAYA_SCRIPT_PATH'].split(";")[0]
    mc.image(image=scriptPath + '/thumbnail.png', h=150)
    mc.separator()
    mc.setParent('..')

    mc.separator()
    mc.text(label="Submeshes Names")
    submeshNamesCtrl = mc.scrollField(editable=True,
                                      wordWrap=True,
                                      text="MeshName",
                                      h=100)
    mc.separator(style='in')

    mc.text(label="Distribution Type")

    alignmentTypeCtrl = mc.radioCollection()
    mc.rowLayout(nc=3, cat=[(1, 'both', 10), (2, 'both', 10), (3, 'both', 10)])
    randomCtrl = mc.radioButton(label='Random',
                                align='center',
                                sl=True,
                                ann='random')
    alignedCtrl = mc.radioButton(label='Aligned', align='center')
    evenCtrl = mc.radioButton(label='Evenly Spaced', align='center')
    mc.setParent('..')
    mc.separator(style='in')

    mc.rowLayout(nc=3, cat=[(1, 'both', 1), (2, 'both', 10), (3, 'both', 1)])
    mc.separator()
    randRotCtrl = mc.checkBox(l='Random Yaw Rotation', v=True)
    mc.separator()
    mc.setParent('..')
    mc.separator(style='in')

    mc.rowLayout(nc=2,
                 cat=[(1, 'left', 5), (2, 'both', 5)],
                 adjustableColumn=2)
    numberText = mc.text("Number of instances")
    numberCtrl = mc.intField(v=100, w=1)
    mc.setParent('..')
    mc.separator(style='in')

    mc.rowLayout(nc=2,
                 cat=[(1, 'left', 5), (2, 'both', 5)],
                 adjustableColumn=2)
    widthText = mc.text("Instances along X-axis", enable=False)
    widthCtrl = mc.intField(v=20, w=1, min=1, max=100, step=1, enable=False)
    mc.setParent('..')
    mc.rowLayout(nc=2,
                 cat=[(1, 'left', 5), (2, 'both', 5)],
                 adjustableColumn=2)
    heightText = mc.text("Instances along Y-axis", enable=False)
    heightCtrl = mc.intField(v=20, w=1, min=1, max=100, step=1, enable=False)
    mc.setParent('..')
    mc.rowLayout(nc=2,
                 cat=[(1, 'left', 5), (2, 'both', 5)],
                 adjustableColumn=2)
    depthText = mc.text("Instances along Z-axis", enable=False)
    depthCtrl = mc.intField(v=20, w=1, min=1, max=100, step=1, enable=False)
    mc.setParent('..')
    mc.separator(style='in')

    mc.rowLayout(nc=3,
                 cat=[(1, 'both', 1), (2, 'both', 10), (3, 'both', 1)],
                 adjustableColumn=2)
    mc.separator()
    animatedCtrl = mc.checkBox(l='Animated Base Mesh', v=False)
    mc.separator()
    mc.setParent('..')
    mc.separator(style='in')

    mc.text(label="Growth Animation Type")

    mc.radioCollection()
    mc.rowLayout(nc=3,
                 cat=[(1, 'both', 10), (2, 'both', 10), (3, 'both', 10)],
                 adjustableColumn=1)
    uniformCtrl = mc.radioButton(label='Uniform', align='center')
    useSphereCtrl = mc.radioButton(label='Sphere Mask',
                                   align='center',
                                   sl=True)
    alongSurfaceCtrl = mc.radioButton(label='Along surface', align='center')
    mc.setParent('..')

    influenceTextCtrl = mc.text(label='Growth Influence Type')
    mc.radioCollection()
    mc.rowLayout(nc=2, cat=[(1, 'left', 10), (2, 'left', 10)])
    insideCtrl = mc.radioButton(label='Inside Sphere', align='center', sl=True)
    outsideCtrl = mc.radioButton(label='Outside Sphere', align='center')
    mc.setParent('..')

    mc.rowLayout(nc=2,
                 cat=[(1, 'left', 5), (2, 'both', 5)],
                 adjustableColumn=2)
    speedTextCtrl = mc.text(label='Submesh growth speed', vis=False)
    speedCtrl = mc.floatField(v=4, vis=False)
    mc.setParent('..')
    mc.separator(style='in')

    mc.rowLayout(nc=5,
                 adjustableColumn5=3,
                 cat=[(1, 'left', 1), (2, 'left', 2), (3, 'both', 5),
                      (4, 'right', 2), (5, 'right', 1)])
    mc.text(label="Start Frame")
    startFrameCtrl = mc.intField(w=60, v=1)
    mc.separator(w=5)
    mc.text(label="End Frame")
    endFrameCtrl = mc.intField(w=60, v=50)
    mc.setParent('..')
    mc.separator(style='in')

    mc.radioButton(randomCtrl,
                   e=True,
                   cc=ft.partial(switchRandomAlignmentSettings, numberText,
                                 numberCtrl))
    mc.radioButton(alignedCtrl,
                   e=True,
                   cc=ft.partial(switchAlignedAlignmentSettings, widthText,
                                 widthCtrl, heightText, heightCtrl, depthText,
                                 depthCtrl))
    mc.radioButton(evenCtrl,
                   e=True,
                   cc=ft.partial(switchRandomAlignmentSettings, numberText,
                                 numberCtrl))
    mc.radioButton(uniformCtrl,
                   e=True,
                   cc=ft.partial(switchInfluenceTypeSettings,
                                 influenceTextCtrl, insideCtrl, outsideCtrl))
    mc.radioButton(useSphereCtrl,
                   e=True,
                   cc=ft.partial(changeInfluenceTypeLabels, insideCtrl,
                                 outsideCtrl, 'Inside Sphere',
                                 'Outside Sphere'))
    mc.radioButton(alongSurfaceCtrl,
                   e=True,
                   cc=ft.partial(changeInfluenceTypeLabelsForAlongSurface,
                                 insideCtrl, outsideCtrl,
                                 'Inwards Towards Sphere',
                                 'Outwards From Sphere', speedTextCtrl,
                                 speedCtrl))

    mc.button(label="Generate, populate and animate!",
              command=ft.partial(populateGenerateAnimate, alignmentTypeCtrl,
                                 randomCtrl, alignedCtrl, evenCtrl,
                                 submeshNamesCtrl, useSphereCtrl,
                                 alongSurfaceCtrl, insideCtrl, startFrameCtrl,
                                 endFrameCtrl, numberCtrl, widthCtrl,
                                 heightCtrl, depthCtrl, animatedCtrl,
                                 speedCtrl, randRotCtrl))

    mc.separator(style='in')

    mc.showWindow(winControl)
import maya.cmds as cmds
import functools

# Creating the interface window by setting the number of columns required, their lengths and placing them in order
myWindow = cmds.window(title='Build Stairs',
                       sizeable=True,
                       resizeToFitChildren=True)
cmds.rowColumnLayout(numberOfColumns=3,
                     columnWidth=[(1, 100), (2, 60), (3, 65)],
                     columnOffset=[(1, 'right', 3)])

# Setting up names of the fields and cells for user input
cmds.text(label='Number of stairs ')
#  Specifing that the field 'Number of stairs' accepts only integer inputs
numberOfStairs = cmds.intField(minValue=1, value=10)
cmds.separator(height=10, style='none')

# Adding spaces between the subsequent rows
cmds.separator(height=10, style='none')
cmds.separator(height=10, style='none')
cmds.separator(height=10, style='none')

cmds.text(label='Size of each step')
cmds.separator(height=10, style='none')
cmds.separator(height=10, style='none')

cmds.text(label='Width ')
width = cmds.intField(minValue=1, value=2)
cmds.separator(height=10, style='none')

cmds.text(label='Height')
示例#57
0
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)

    #||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

    cmds.frameLayout('transLayout', l=posScriptLabel)

    cmds.floatSliderGrp("s1",
                        l='Smooth',
                        f=True,
                        min=0.0,
                        max=6.0,
                        fmx=10,
                        v=goalSmooth,
                        cc=('goalSmooth=printSmoothV()'),
                        pre=1,
                        cal=(1, "left"),
                        w=slWidth,
                        ann=" Сглаживание позиции 2 до 5 ",
                        el="~1.5")

    cmds.floatSliderGrp("s2",
                        l='Scale',
                        f=True,
                        min=0.0,
                        max=2.0,
                        fmx=10,
                        v=timeScale,
                        cc=('timeScale=printScaleV()'),
                        pre=1,
                        cal=(1, "left"),
                        w=slWidth,
                        ann=" Скейл скорости симуляции 0.5 до 1 ",
                        el="~0.3")

    cmds.floatSliderGrp("s3",
                        l='Weight',
                        f=True,
                        min=0.0,
                        max=1.0,
                        v=goalW,
                        cc=('goalW=printWeightV()'),
                        pre=1,
                        cal=(1, "left"),
                        w=slWidth,
                        ann=" Сила притяжения частицы 0.5 ",
                        el="~0.5")

    #||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

    cmds.frameLayout("rotLayout", l=rotScriptLabel)

    cmds.floatSliderGrp("s4",
                        l='Smooth',
                        f=True,
                        min=0.0,
                        max=6.0,
                        fmx=10,
                        v=goalSmoothRot,
                        cc=('goalSmoothRot=printRotSmoothV()'),
                        pre=1,
                        cal=(1, "left"),
                        w=slWidth,
                        ann=" Сглаживание позиции 2 до 5 ",
                        el="~0.5")

    cmds.floatSliderGrp("s5",
                        l='Scale',
                        f=True,
                        min=0.0,
                        max=2.0,
                        fmx=10,
                        v=timeScaleRot,
                        cc=('timeScaleRot=printRotScaleV()'),
                        pre=1,
                        cal=(1, "left"),
                        w=slWidth,
                        ann=" Скейл скорости симуляции 0.5 до 1 ",
                        el="~0.3")

    cmds.floatSliderGrp("s6",
                        l='Weight',
                        f=True,
                        min=0.0,
                        max=1.0,
                        v=goalWRot,
                        cc=('goalWRot=printRotWeightV()'),
                        pre=1,
                        cal=(1, "left"),
                        w=slWidth,
                        ann=" Сила притяжения частицы 0.5 ",
                        el="~0.5")

    #||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

    cmds.frameLayout(
        "buttonLayout",
        l='     ---------------------------------------     BUTTONS')
    cmds.rowColumnLayout(numberOfColumns=3,
                         columnWidth=[(1, 165), (2, 130), (3, 165)])

    cmds.checkBox("checkCyclePos",
                  label="Translation loop",
                  v=cycle,
                  cc=('cycle=checkCyclePos()'))
    cmds.separator(h=buttonHeight / 2, style='none')
    cmds.checkBox("checkCycleRot",
                  label="Rotation loop",
                  v=cycleRot,
                  cc=('cycleRot=checkCycleRot()'))

    cmds.button(label="RUN translation sim",
                command=('translationStart()'),
                bgc=(0.3, 0.85, 1),
                h=buttonHeight)
    cmds.separator(h=buttonHeight / 2, style='none')
    cmds.button(label="RUN rotation sim",
                command=('rotationStart()'),
                bgc=(0.3, 0.85, 1),
                h=buttonHeight)

    cmds.button(label="^^^ RESET translation ^^^",
                command=('print "RESET translation"'),
                bgc=(0.2, 0.6, 0.2),
                h=buttonHeight,
                en=False)
    cmds.button(label="<<< RESET ALL >>>",
                command=('resetValues(); resetSliders()'),
                bgc=(0.6, 1, 0.45),
                h=buttonHeight)
    cmds.button(label="^^^ RESET rotation ^^^",
                command=('print "RESET rotation"'),
                bgc=(0.2, 0.6, 0.2),
                h=buttonHeight,
                en=False)

    cmds.text(l="^^ Translation description ^^", ann=posScriptAnnotation)
    cmds.button(label="!!! DELETE ALL !!!",
                command=('deleteMainLayer()'),
                bgc=(0.9, 0.5, 0.3),
                h=buttonHeight,
                ann="Удаляет главный слой со всеми анимациями оверлаппера")
    cmds.text(l="^^ Rotation description ^^", ann=rotScriptAnnotation)

    #||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

    cmds.showWindow(overUI)
示例#58
0
def create():
    '''
	Mocap Transfer UI.
	'''
    # ============
    # - Build UI -
    # ============

    # Window
    window = 'mocapTransferUI'
    if mc.window(window, q=True, ex=1): mc.deleteUI(window)
    window = mc.window(window, title='Mocap/Anim Transfer', sizeable=True)

    # FormLayout
    FL = mc.formLayout(numberOfDivisions=100)

    # Buttons
    transferB = mc.button(label='Transfer',
                          c='glTools.ui.mocapTransfer.transferFromUI()')
    closeB = mc.button(label='Close', c='mc.deleteUI("' + window + '")')

    # FrameLayout
    mc.setParent(FL)
    rangeLayout = mc.frameLayout(label='Bake Range', borderStyle='in')

    # TabLayout
    mc.setParent(FL)
    tabLayout = mc.tabLayout('mocapXferTabLayout',
                             innerMarginWidth=5,
                             innerMarginHeight=5)

    mc.formLayout(FL,
                  e=True,
                  af=[(closeB, 'left', 5), (closeB, 'right', 5),
                      (closeB, 'bottom', 5)])
    mc.formLayout(FL,
                  e=True,
                  af=[(transferB, 'left', 5), (transferB, 'right', 5)],
                  ac=[(transferB, 'bottom', 5, closeB)])
    mc.formLayout(FL,
                  e=True,
                  af=[(tabLayout, 'left', 5), (tabLayout, 'right', 5),
                      (tabLayout, 'top', 5)])
    mc.formLayout(FL,
                  e=True,
                  af=[(rangeLayout, 'left', 5), (rangeLayout, 'right', 5)],
                  ac=[(rangeLayout, 'top', 5, tabLayout),
                      (rangeLayout, 'bottom', 5, transferB)])

    # ----------------
    # - Range Layout -
    # ----------------

    mc.setParent(rangeLayout)

    # FormLayout
    bakeRangeFL = mc.formLayout(numberOfDivisions=100)

    mocap_rangeCBG = mc.checkBoxGrp('xferMocap_bakeRangeCBG',
                                    label='Specify Bake Range:',
                                    numberOfCheckBoxes=1,
                                    value1=0)
    mocap_startEndIFG = mc.intFieldGrp('xferMocap_startEndCBG',
                                       label='Bake Range Start/End:',
                                       numberOfFields=2,
                                       value1=0,
                                       value2=0,
                                       en=False)
    mocap_staticChanCBG = mc.checkBoxGrp('xferMocap_staticChanCBG',
                                         label='Delete Static Channels:',
                                         numberOfCheckBoxes=1,
                                         value1=0)

    mc.formLayout(bakeRangeFL,
                  e=True,
                  af=[(mocap_rangeCBG, 'left', 5),
                      (mocap_rangeCBG, 'right', 5),
                      (mocap_rangeCBG, 'top', 5)])
    mc.formLayout(bakeRangeFL,
                  e=True,
                  af=[(mocap_startEndIFG, 'left', 5),
                      (mocap_startEndIFG, 'right', 5)],
                  ac=[(mocap_startEndIFG, 'top', 5, mocap_rangeCBG)])
    mc.formLayout(bakeRangeFL,
                  e=True,
                  af=[(mocap_staticChanCBG, 'left', 5),
                      (mocap_staticChanCBG, 'right', 5)],
                  ac=[(mocap_staticChanCBG, 'top', 5, mocap_startEndIFG)])

    # UI Element Callbacks
    mc.checkBoxGrp(mocap_rangeCBG,
                   e=True,
                   cc='glTools.ui.mocapTransfer.toggleBakeRange()')

    # ---------------------
    # - FROM Mocap Layout -
    # ---------------------

    mc.setParent(tabLayout)

    # FormLayout
    fromMocapFL = mc.formLayout(numberOfDivisions=100)

    # Layout Elements
    fromMocap_mocapTFB = mc.textFieldButtonGrp('fromMocap_mocapTFB',
                                               label='Mocap NS:',
                                               text='',
                                               buttonLabel='<<<')
    fromMocap_rigTFB = mc.textFieldButtonGrp('fromMocap_rigTFB',
                                             label='Rig NS:',
                                             text='',
                                             buttonLabel='<<<')
    fromMocap_SEP = mc.separator(height=10, style='single')
    fromMocap_xferToRBG = mc.radioButtonGrp(
        'fromMocap_xferToRBG',
        label='Transfer To:',
        numberOfRadioButtons=2,
        labelArray2=['Controls', 'Overrides'],
        select=2)
    fromMocap_xferHandCBG = mc.checkBoxGrp('fromMocap_xferHandCBG',
                                           label='Transfer Fingers:',
                                           numberOfCheckBoxes=1,
                                           value1=0)

    mc.formLayout(fromMocapFL,
                  e=True,
                  af=[(fromMocap_mocapTFB, 'left', 5),
                      (fromMocap_mocapTFB, 'right', 5),
                      (fromMocap_mocapTFB, 'top', 5)])
    mc.formLayout(fromMocapFL,
                  e=True,
                  af=[(fromMocap_rigTFB, 'left', 5),
                      (fromMocap_rigTFB, 'right', 5)],
                  ac=[(fromMocap_rigTFB, 'top', 5, fromMocap_mocapTFB)])
    mc.formLayout(fromMocapFL,
                  e=True,
                  af=[(fromMocap_SEP, 'left', 5), (fromMocap_SEP, 'right', 5)],
                  ac=[(fromMocap_SEP, 'top', 5, fromMocap_rigTFB)])
    mc.formLayout(fromMocapFL,
                  e=True,
                  af=[(fromMocap_xferToRBG, 'left', 5),
                      (fromMocap_xferToRBG, 'right', 5)],
                  ac=[(fromMocap_xferToRBG, 'top', 5, fromMocap_SEP)])
    mc.formLayout(fromMocapFL,
                  e=True,
                  af=[(fromMocap_xferHandCBG, 'left', 5),
                      (fromMocap_xferHandCBG, 'right', 5)],
                  ac=[(fromMocap_xferHandCBG, 'top', 5, fromMocap_xferToRBG)])

    # UI Element Callbacks
    mc.textFieldButtonGrp(fromMocap_mocapTFB,
                          e=True,
                          bc='glTools.ui.utils.loadNsSel("' +
                          fromMocap_mocapTFB + '",topOnly=False)')
    mc.textFieldButtonGrp(fromMocap_rigTFB,
                          e=True,
                          bc='glTools.ui.utils.loadNsSel("' +
                          fromMocap_rigTFB + '",topOnly=False)')

    # -------------------
    # - TO Mocap Layout -
    # -------------------

    mc.setParent(tabLayout)

    # FormLayout
    toMocapFL = mc.formLayout(numberOfDivisions=100)

    # Layout Elements
    toMocap_rigTFB = mc.textFieldButtonGrp('toMocap_rigTFB',
                                           label='Rig NS:',
                                           text='',
                                           buttonLabel='<<<')
    toMocap_mocapTFB = mc.textFieldButtonGrp('toMocap_mocapTFB',
                                             label='Mocap NS:',
                                             text='',
                                             buttonLabel='<<<')

    mc.formLayout(toMocapFL,
                  e=True,
                  af=[(toMocap_rigTFB, 'left', 5),
                      (toMocap_rigTFB, 'right', 5),
                      (toMocap_rigTFB, 'top', 5)])
    mc.formLayout(toMocapFL,
                  e=True,
                  af=[(toMocap_mocapTFB, 'left', 5),
                      (toMocap_mocapTFB, 'right', 5)],
                  ac=[(toMocap_mocapTFB, 'top', 5, toMocap_rigTFB)])

    # UI Element Callbacks
    mc.textFieldButtonGrp(toMocap_rigTFB,
                          e=True,
                          bc='glTools.ui.utils.loadNsSel("' + toMocap_rigTFB +
                          '",topOnly=False)')
    mc.textFieldButtonGrp(toMocap_mocapTFB,
                          e=True,
                          bc='glTools.ui.utils.loadNsSel("' +
                          toMocap_mocapTFB + '",topOnly=False)')

    # ---------------------
    # - Rig TO Rig Layout -
    # ---------------------

    mc.setParent(tabLayout)

    # FormLayout
    rigToRigFL = mc.formLayout(numberOfDivisions=100)

    # Layout Elements
    rigToRig_srcTFB = mc.textFieldButtonGrp('rigToRig_srcTFB',
                                            label='Source Rig NS:',
                                            text='',
                                            buttonLabel='<<<')
    rigToRig_dstTFB = mc.textFieldButtonGrp('rigToRig_dstTFB',
                                            label='Destination Rig NS:',
                                            text='',
                                            buttonLabel='<<<')
    rigToRig_SEP = mc.separator(height=10, style='single')
    rigToRig_xferToRBG = mc.radioButtonGrp(
        'rigToRig_xferToRBG',
        label='Transfer To:',
        numberOfRadioButtons=2,
        labelArray2=['Controls', 'Overrides'],
        select=1)
    rigToRig_xferHandCBG = mc.checkBoxGrp('rigToRig_xferHandCBG',
                                          label='Transfer Fingers:',
                                          numberOfCheckBoxes=1,
                                          value1=0)
    rigToRig_xferAllTransCBG = mc.checkBoxGrp('rigToRig_xferAllTransCBG',
                                              label='Transfer AllTrans:',
                                              numberOfCheckBoxes=1,
                                              value1=0)

    mc.formLayout(rigToRigFL,
                  e=True,
                  af=[(rigToRig_srcTFB, 'left', 5),
                      (rigToRig_srcTFB, 'right', 5),
                      (rigToRig_srcTFB, 'top', 5)])
    mc.formLayout(rigToRigFL,
                  e=True,
                  af=[(rigToRig_dstTFB, 'left', 5),
                      (rigToRig_dstTFB, 'right', 5)],
                  ac=[(rigToRig_dstTFB, 'top', 5, rigToRig_srcTFB)])
    mc.formLayout(rigToRigFL,
                  e=True,
                  af=[(rigToRig_SEP, 'left', 5), (rigToRig_SEP, 'right', 5)],
                  ac=[(rigToRig_SEP, 'top', 5, rigToRig_dstTFB)])
    mc.formLayout(rigToRigFL,
                  e=True,
                  af=[(rigToRig_xferToRBG, 'left', 5),
                      (rigToRig_xferToRBG, 'right', 5)],
                  ac=[(rigToRig_xferToRBG, 'top', 5, rigToRig_SEP)])
    mc.formLayout(rigToRigFL,
                  e=True,
                  af=[(rigToRig_xferHandCBG, 'left', 5),
                      (rigToRig_xferHandCBG, 'right', 5)],
                  ac=[(rigToRig_xferHandCBG, 'top', 5, rigToRig_xferToRBG)])
    mc.formLayout(rigToRigFL,
                  e=True,
                  af=[(rigToRig_xferAllTransCBG, 'left', 5),
                      (rigToRig_xferAllTransCBG, 'right', 5)],
                  ac=[(rigToRig_xferAllTransCBG, 'top', 5,
                       rigToRig_xferHandCBG)])

    # UI Element Callbacks
    mc.textFieldButtonGrp(rigToRig_srcTFB,
                          e=True,
                          bc='glTools.ui.utils.loadNsSel("' + rigToRig_srcTFB +
                          '",topOnly=False)')
    mc.textFieldButtonGrp(rigToRig_dstTFB,
                          e=True,
                          bc='glTools.ui.utils.loadNsSel("' + rigToRig_dstTFB +
                          '",topOnly=False)')

    # ---------------------
    # - Label Layout Tabs -
    # ---------------------

    mc.tabLayout(tabLayout,
                 e=True,
                 tabLabel=((fromMocapFL, 'From Mocap'),
                           (toMocapFL, 'To Mocap'), (rigToRigFL,
                                                     'Rig To Rig')))

    # ==============
    # - Display UI -
    # ==============

    initializeBakeRange()

    mc.window(window, e=True, wh=[445, 330])
    mc.showWindow(window)
示例#59
0
文件: view.py 项目: jonntd/mayadev-1
    def Show(self):

        if cmds.window(SetJointOrientUIInfo._winName, ex=1):
            cmds.deleteUI(SetJointOrientUIInfo._winName, wnd=1)
        cmds.window(SetJointOrientUIInfo._winName,
                    title=SetJointOrientUIInfo._title)

        cmds.columnLayout()

        cmds.text(h=3, l='')

        cmds.rowColumnLayout(nc=2, cw=[(1, 200), (2, 200)])
        self._uiInstTopObject.create()
        self._uiInstEndObject.create()
        cmds.popupMenu(p=self._uiInstEndObject._form)

        def setEnableForm(*args):
            if cmds.text(self._uiInstEndObject._text, q=1, en=1):
                cmds.text(self._uiInstEndObject._text, e=1, en=0)
                cmds.textField(self._uiInstEndObject._field, e=1, en=0)
            else:
                cmds.text(self._uiInstEndObject._text, e=1, en=1)
                cmds.textField(self._uiInstEndObject._field, e=1, en=1)

        cmds.menuItem(l='Enable', c=setEnableForm)
        cmds.setParent('..')

        cmds.text(h=3, l='')

        cmds.rowColumnLayout(nc=1, cw=[(1, 400)])
        cmds.separator()
        cmds.setParent('..')

        cmds.rowColumnLayout(nc=2, cw=[(1, 200), (2, 200)])
        self._uiInstUpObject.create()
        self._uiInstUpType.create([70, 100])
        cmds.optionMenuGrp(self._uiInstUpType._menu,
                           e=1,
                           cc=self.checkAndUpdateWorldUpAxis)
        cmds.setParent('..')

        cmds.text(h=3, l='')

        cmds.rowColumnLayout(nc=3, cw=[(1, 123), (2, 143), (3, 133)])
        self._uiInstAimAxis.create()
        cmds.optionMenuGrp(self._uiInstAimAxis._menu,
                           e=1,
                           cc=self.checkAndUpdateUpAxis)
        self._uiInstUpAxis.create()
        self._uiInstWorldUpAxis.create()
        cmds.setParent('..')

        cmds.text(h=3, l='')

        cmds.rowColumnLayout(nc=1, cw=[(1, 400)])
        cmds.separator()
        cmds.setParent('..')

        cmds.rowColumnLayout(nc=1, cw=[(1, 400)])
        self._uiInstButton.create(25)
        cmds.setParent('..')

        cmds.window(SetJointOrientUIInfo._winName,
                    e=1,
                    w=SetJointOrientUIInfo._width,
                    h=SetJointOrientUIInfo._height)
        cmds.showWindow(SetJointOrientUIInfo._winName)

        self.appendTopObjectCmd()
        self.checkAndUpdateUpAxis()
        self.checkAndUpdateWorldUpAxis()
        self.appendCmdsToTwoButtons()
示例#60
-2
    def __enter__(self):
        '''
        Initialize the UI
        '''
        if mc.window(self.name, exists=True):
            mc.deleteUI(self.name)

        mc.window(self.name, title='ml :: '+self.title, iconName=self.title, width=self.width, height=self.height, menuBar=self.menu)
        
        
        if self.menu:
            self.createMenu()
        
        self.form = mc.formLayout()
        self.column = mc.columnLayout(adj=True)

        
        mc.rowLayout( numberOfColumns=2, columnWidth2=(34, self.width-34), adjustableColumn=2, 
                    columnAlign2=('right','left'),
                    columnAttach=[(1, 'both', 0), (2, 'both', 8)] )

        #if we can find an icon, use that, otherwise do the text version
        if self.icon:
            mc.iconTextStaticLabel(style='iconOnly', image1=self.icon)
        else:
            mc.text(label=' _ _ |\n| | | |')
            
        if not self.menu:
            mc.popupMenu(button=1)
            mc.menuItem(label='Help', command=(_showHelpCommand(wikiURL+'#'+self.name)))
        
        mc.text(label=self.info)
        mc.setParent('..')
        mc.separator(height=8, style='single')
        return self