def addMultiAttr(): #Create a variable for the window name winName = 'blend' winTitle = 'rh_addMultiAttr' #Delete the window if it exists if cmds.window(winName, exists=True): cmds.deleteUI(winName, window=True) #Build the main window cmds.window(winName, title=winTitle, sizeable=True) cmds.textFieldButtonGrp('Obj',label='Object :', text='', ed = False,buttonLabel='Load Sel',bc = 'sel()') cmds.columnLayout(adjustableColumn=True) cmds.textFieldGrp('Attr',l='Attribute:',text='') cmds.columnLayout(adjustableColumn=True) cmds.floatFieldGrp('minAttr', numberOfFields=1, label='Min Value', value1=0) cmds.columnLayout(adjustableColumn=True) cmds.floatFieldGrp('maxAttr', numberOfFields=1, label='Max Value', value1=0) cmds.columnLayout(adjustableColumn=True) cmds.button(label='Contact', command='Connect()') cmds.columnLayout(adjustableColumn=True) #Show the window cmds.showWindow(winName) cmds.window(winName, edit=True, width=300, height=120)
def j_MirrorBlendShape(): ''' UI ''' global text1 global text2 global text3 j_MainWindow = "" if (mc.window(j_MainWindow, exists = 1 )): mc.deleteUI(j_MainWindow) j_MainWindow = mc.window(title = u"镜像表情", wh = (300,160)) mc.columnLayout() mc.text(l = "") text1 = mc.textFieldButtonGrp( l = u"BaseObject:", buttonLabel = u" < < < < ", buttonCommand = 'xanthus.j_MirrorBlendShape.j_getObj(1)', cw3 = (90,120,100),h = 30) text2 = mc.textFieldButtonGrp(l = u"In-Between:", buttonLabel = u" < < < < ", buttonCommand = "xanthus.j_MirrorBlendShape.j_getObj(2)", cw3 = (90,120,100),h = 30,enable = 0) text3 = mc.textFieldButtonGrp(l = u"BlendShape:", buttonLabel = u" < < < < ", buttonCommand = "xanthus.j_MirrorBlendShape.j_getObj(3)", cw3 = (90,120,100),h = 30) mc.text(l = "",h = 10) mc.setParent('..') mc.rowLayout(nc = 2 ,cw2= (150,150),ct2 = ("left","left") ,co2 = (8,0) ) mc.button(l = u" 镜 像 ", w = 135, h= 30,c = "xanthus.j_MirrorBlendShape.j_MakeMirror()") mc.button(l = u" 重 置 ", w = 135, h= 30,c = "xanthus.j_MirrorBlendShape.j_Reset()") mc.setParent('..') mc.columnLayout mc.text(l = " copyright@ xanthus by Jiangjishi ", enable = 0) mc.showWindow(j_MainWindow)
def win(*args): '''Window used to update the mesh ''' #if any windows are open that deal with updating the mesh, close them winList=['atom_meshUpdateWin', 'keyMeshdirDialogWin'] for win in winList: if cmds.window(win, ex=True): cmds.deleteUI(win) #create the window cmds.window('atom_meshUpdateWin', title = 'Atom Mesh Update') cmds.columnLayout(co=['both',5],adj=True, rs=5) path = os.path.join(cmds.workspace(query=True, o=True), 'scenes/anim/template_rig/CharactersWork/SantaPup/RIG/mesh_update_info') button_state = True #Test if the mesh_update_folder is the current path, this will usually be false if os.path.exists(path) != True: print path path = cmds.workspace(query=True, o=True) button_state=False print 'mesh_update_info folder not found. Browse to folder to continue.' cmds.textFieldButtonGrp('atom_meshUpdatePath_tfbg', label='Path:', tx=path, buttonLabel='Set Path', ct3=['left','both','left'], co3=[0,0,5],cl3=['left', 'center', 'center'], ad3=2, cw3=[35,100,80], bc='from atom import atom_updateMesh_lib\natom_updateMesh_lib.dirDialog()') cmds.button('atom_meshUpdate_button',l='Update Mesh', c ='from atom import atom_updateMesh_lib\natom_updateMesh_lib.updateMeshCMD()', en=button_state ) cmds.scriptJob(runOnce=True,uid=['atom_meshUpdateWin', 'from atom import atom_updateMesh_lib\natom_updateMesh_lib.deleteDirDialog()']) cmds.showWindow('atom_meshUpdateWin')
def ruMainWindow(): ruWin = "riggUtils" if mc.window(ruWin,q=True,ex=True): mc.deleteUI(ruWin) mc.window(ruWin,title = "Rigging Utilities") mc.scrollLayout(horizontalScrollBarThickness=16) ruMainColumn = mc.columnLayout(columnAttach=("both",5),rowSpacing=10,columnWidth=320) mc.frameLayout(label="General",bs="etchedOut",w=300,mw=5,cll=1) mc.button(label='Show Axis',command='mc.toggle(state=True, localAxis=True)') mc.button(label='Hide Axis',command='mc.toggle(state=False, localAxis=True)') mc.frameLayout(label="Non T-Pose joint placer",bs="etchedOut",w=300,mw=5,cll=1,p=ruMainColumn) mc.columnLayout(rs=5,adj=1) mc.button(l="Create Helper Locator",c =ruCreateLocator) mc.button(l="Create Joint on Helper Locator",c =ruCreateJointLocator) mc.floatSliderGrp("ruJointRadius",en=1,label="Joint Radius",field=True,minValue=0,maxValue=5,fieldMinValue=0,fieldMaxValue=5,value=0.5,cw3=(70,30,10),dc=ruJointRadius) mc.frameLayout(label="Fingers Utils",bs="etchedOut",w=300,mw=5,cll=1,p=ruMainColumn) mc.columnLayout(rs=5,adj=1) mc.floatSliderGrp("ruJointOrientation",en=1,label="Finger Orient",field=True,minValue=0,maxValue=5,fieldMinValue=0,fieldMaxValue=5,value=0.5,cw3=(70,30,10),dc=ruOrientJoint) mc.frameLayout(label="Finger Renaming",bs="etchedOut",w=300,mw=5,cll=1) mc.optionMenu('ruFinger',l='Choose finger') mc.menuItem(l='Thumb') mc.menuItem(l='Index') mc.menuItem(l='Middle') mc.menuItem(l='Ring') mc.menuItem(l='Pinky') mc.textFieldButtonGrp( label='Template string', text='', buttonLabel='Rename', bc=ruRenameFinger, cw3=[120,70,70],ct3=['left','left','left'],co3=[2,2,2] ) mc.showWindow(ruWin)
def get_ui_values(): global engine_path, folder, file_name, export_batch, resolution_x, resolution_y, exposure, gamma, \ ray_number, time, seed, export_animation, start_frame, end_frame, export_normals, invert_normals, check_Z, materials engine_path = cmds.textFieldButtonGrp(engine_field, query=True, text=True) folder = cmds.textFieldButtonGrp(directory_field, query=True, text=True) file_name = cmds.textFieldGrp(file_field, query=True, text=True) export_batch = cmds.checkBoxGrp(batch_field, query=True, value1=True) resolution_x = cmds.intFieldGrp(resolution_field, query=True, value1=True) resolution_y = cmds.intFieldGrp(resolution_field, query=True, value2=True) exposure = cmds.floatSliderGrp(exposure_field, query=True, value=True) gamma = cmds.floatSliderGrp(gamma_field, query=True, value = True) ray_number = cmds.intSliderGrp(rays_field, query=True, value=True) seed = cmds.intSliderGrp(seed_field, query=True, value=True) time = cmds.intSliderGrp(time_field, query=True, value=True) export_animation = cmds.checkBoxGrp(animation_field, query=True, value1=True) start_frame = cmds.intFieldGrp(frame_range_field, query=True, value1=True) end_frame = cmds.intFieldGrp(frame_range_field, query=True, value2=True) export_normals = cmds.checkBoxGrp(normals_export_field, query=True, value1=True) invert_normals = cmds.checkBoxGrp(normals_invert_field, query=True, value1=True) check_Z = cmds.checkBoxGrp(check_Z_field, query = True, value1=True) materials = [] for mat in range(5): materials.append(cmds.floatFieldGrp(eval('material_%i_field' % (mat)), query=True, value=True))
def clearSeachField(): """ """ # Clear Text Field cmds.textFieldButtonGrp('refEdits_nodeSearchTFG', e=True, text='') # Reload Node List loadNodeList()
def jointPerVertexUI(): ''' UI for jointPerVertex() ''' # Window win = 'jntPerVtxUI' if mc.window(win,q=True,ex=1): mc.deleteUI(win) win = mc.window(win,t='Create Joint Per Vertex') # Layout cl = mc.columnLayout() # UI Elements prefixTFG = mc.textFieldGrp('jntPerVtx_prefixTFG',label='Prefix', text='') suffixTFG = mc.textFieldGrp('jntPerVtx_suffixTFG',label='Suffix', text='jnt') oriSurfaceTFB = mc.textFieldButtonGrp('jntPerVtx_oriSurfaceTFB',label='Orient Surface',text='',buttonLabel='Load Selected') # Buttons createB = mc.button('jntPerVtx_createB',l='Create',c='glTools.tools.jointPerVertex.jointPerVertexFromUI(False)') cancelB = mc.button('jntPerVtx_cancelB',l='Cancel',c='mc.deleteUI("'+win+'")') # UI callbacks mc.textFieldButtonGrp(oriSurfaceTFB,e=True,bc='glTools.ui.utils.loadObjectSel("'+oriSurfaceTFB+'","")') # Show Window mc.showWindow(win)
def browseFile(rootDir, control, extFilter): """browseFile :param rootDir: :param control: :param extFilter: :return: """ path = cmds.textFieldButtonGrp(control, q=True, text=True) startDir = path if isRelative(path): startDir = os.path.join(rootDir, path) fileNames = cmds.fileDialog2( fileMode=1, startingDirectory=os.path.dirname(startDir), dialogStyle=1, fileFilter=extFilter ) if fileNames is not None: fileName = cmds.workspace(projectPath=fromNativePath(fileNames[0])) cmds.textFieldButtonGrp( control, e=True, text=fileName, forceChangeCommand=True )
def stretchyIkSplineFromUI(close=False): ''' ''' # Window window = 'stretchyIkSplineUI' if not mc.window(window,q=True,ex=1): raise UIError('StretchyIkSpline UI does not exist!!') # Get UI data ik = mc.textFieldButtonGrp('stretchyIkSplineTFB',q=True,text=True) pre = mc.textFieldGrp('stretchyIkSplinePrefixTFG',q=True,text=True) scaleAxis = str.lower(str(mc.optionMenuGrp('stretchyIkSplineAxisOMG',q=True,v=True))) scaleAttr = mc.textFieldButtonGrp('stretchyIkSplineScaleAttrTFB',q=True,text=True) blendCtrl = mc.textFieldButtonGrp('stretchyIkSplineBlendCtrlTFB',q=True,text=True) blendAttr = mc.textFieldGrp('stretchyIkSplineBlendAttrTFG',q=True,text=True) method = mc.optionMenuGrp('stretchyIkSplineMethodOMG',q=True,sl=True)-1 minPercent = mc.floatSliderGrp('stretchyIkSplineMinPFSG',q=True,v=True) maxPercent = mc.floatSliderGrp('stretchyIkSplineMaxPFSG',q=True,v=True) # Execute command if method: # Parametric glTools.builder.stretchyIkSpline_parametric.StretchyIkSpline_parametric().build(ikHandle=ik,scaleAttr=scaleAttr,blendControl=blendCtrl,blendAttr=blendAttr,scaleAxis=scaleAxis,minPercent=minPercent,maxPercent=maxPercent,prefix=pre) else: # Arc Length glTools.builder.stretchyIkSpline_arcLength.StretchyIkSpline_arcLength().build(ikHandle=ik,scaleAttr=scaleAttr,blendControl=blendCtrl,blendAttr=blendAttr,scaleAxis=scaleAxis,prefix=pre) # Cleanup if close: mc.deleteUI(window)
def __init__(self): #(Initialization) ### Initialize, definitions if(mc.window("ms_orientObject",exists=True)): mc.deleteUI("ms_orientObject",window=True) mc.window("ms_orientObject",title="Orient Object v1.0",rtf=True) mc.columnLayout() mc.text(" ") mc.rowLayout(nc=4,cw4=(25,130,150,200) ) mc.text(" ") mc.text("Orient object A to object B.") mc.text("Unparents during operation, so ") mc.text("constraints should not be applied yet.") mc.setParent("..") mc.text(" ") mc.separator(w=500) self.aObjFld = mc.textFieldButtonGrp( label='Object A:',bl='Load',bc=self.loadAObj,text='pCube1') self.bObjFld = mc.textFieldButtonGrp( label='Object B:',bl='Load',bc=self.loadBObj,text='inside_cube_small') mc.separator(w=500) mc.rowLayout(nc=2,cw2=(200,300)) mc.text(" ") mc.button(label="-=Match Orientation=-",c=self.orient) mc.setParent("..") mc.showWindow("ms_orientObject")
def __init__(self,*args): if(cmds.window("rbbnChainBuilder",exists=True)): cmds.deleteUI("rbbnChainBuilder",window=True) cmds.window("rbbnChainBuilder",title="Build Ribbon Rig v1.0", rtf=True) cmds.columnLayout() self.prefixFld = cmds.textFieldGrp(label='Prefix',text='L_upLegRbbn_') self.ribbonFld = cmds.textFieldButtonGrp( label="Ribbon:", buttonLabel="Load", bc = self.loadRibbon)#,text='main_plane' ) self.startFld = cmds.textFieldButtonGrp( label="Start Control:", buttonLabel="Load", bc = self.loadStart,text='cnt_1' ) self.endFld = cmds.textFieldButtonGrp( label="End Control:", buttonLabel="Load", bc = self.loadEnd,text='cnt_2' ) self.numFld = cmds.intFieldGrp(label='Controls:',nf=1,v1=5) self.skinFld = cmds.intFieldGrp(label='Skin Joints:',nf=1,v1=5) self.buildFld = cmds.radioButtonGrp(nrb=2,labelArray2=('U','V'),label='Build along:',sl=1) cmds.frameLayout(label='Control Options: ',fn='boldLabelFont',cll=False) cmds.columnLayout() self.crvCreateFld = cmds.radioButtonGrp(nrb=2,labelArray2=('Yes','No'),label='Create bend-bo controls?',sl=1) self.radFld = cmds.floatFieldGrp(label='Radius:',nf=1,v1=0.2) self.crvNrFld = cmds.radioButtonGrp(nrb=3,labelArray3=('X','Y','Z'),label='Controller normal Axis:',sl=2) cmds.setParent("..") cmds.setParent("..") cmds.rowLayout(nc=2,cw2=(200,100)) cmds.text(' ') cmds.button(label = " Create", c = self.buildRig,w=100 ) cmds.setParent('..') cmds.showWindow("rbbnChainBuilder")
def jointPerVertexUI(): """ UI for jointPerVertex() """ # Window win = "jntPerVtxUI" if cmds.window(win, q=True, ex=1): cmds.deleteUI(win) win = cmds.window(win, t="Create Joint Per Vertex") # Layout cl = cmds.columnLayout() # UI Elements prefixTFG = cmds.textFieldGrp("jntPerVtx_prefixTFG", label="Prefix", text="") suffixTFG = cmds.textFieldGrp("jntPerVtx_suffixTFG", label="Suffix", text="jnt") oriSurfaceTFB = cmds.textFieldButtonGrp( "jntPerVtx_oriSurfaceTFB", label="Orient Surface", text="", buttonLabel="Load Selected" ) # Buttons createB = cmds.button("jntPerVtx_createB", l="Create", c="glTools.tools.jointPerVertex.jointPerVertexFromUI(False)") cancelB = cmds.button("jntPerVtx_cancelB", l="Cancel", c='cmds.deleteUI("' + win + '")') # UI callbacks cmds.textFieldButtonGrp(oriSurfaceTFB, e=True, bc='glTools.ui.utils.loadObjectSel("' + oriSurfaceTFB + '","")') # Show Window cmds.showWindow(win)
def getChannel(tfbg, *args): """gets the selected channel of the selected objects""" obj = "" channel = "" cBox = mel.eval('$temp=$gChannelBoxName') sel = cmds.ls(sl=True, l=True) if sel: if not len(sel)==1: cmds.warning("You have to select ONE node!") else: obj = sel[0] else: cmds.warning("You have to select ONE node!") if sel: channels = cmds.channelBox(cBox, q=True, sma=True, ssa=True, sha=True, soa=True) if channels: if not len(channels) == 1: cmds.warning("You have to select ONE channel!") else: channel = channels[0] else: cmds.warning("You have to select ONE channel!") if obj and channel: full = "%s.%s"%(obj, channel) cmds.textFieldButtonGrp(widgets[tfbg], e=True, tx=full)
def import2dTrackUI(): """ """ # Build UI Window window = 'import2dTrackUI' if cmds.window(window, q=True, ex=True): cmds.deleteUI(window) window = cmds.window(window, title='Import 2D Track', wh=[500, 350]) # Build UI Elements cmds.columnLayout(adjustableColumn=True) perspCamListTSL = cmds.textScrollList('importTrack_camListTSL', numberOfRows=8, ams=False) fileTFB = cmds.textFieldButtonGrp('importTrack_fileTFB', label='2D Track File', buttonLabel='Browse') cmds.textFieldButtonGrp(fileTFB, e=True, bc='glTools.ui.utils.loadFilePath("' + fileTFB + '",fileFilter="*.*")') cmds.textFieldGrp('importTrack_nameTFG', label="Point Name", text='trackPoint1') cmds.floatFieldGrp('importTrack_widthFFG', numberOfFields=1, label='Source Pixel Width', value1=2348) cmds.floatFieldGrp('importTrack_heightFFG', numberOfFields=1, label='Source Pixel Height', value1=1566) cmds.button(label='Import Track', c='import glTools.tools.import2dTrack;reload(glTools.tools.import2dTrack);glTools.tools.import2dTrack.import2dTrack()') cmds.button(label='Close', c='cmds.deleteUI("' + window + '")') # Build Camera List camList = cmds.listCameras(p=True) for cam in camList: cmds.textScrollList(perspCamListTSL, e=True, a=cam) # Show Window cmds.showWindow(window)
def multObjExport(): uiWindow_objLoopExport = cmds.window('uiWindow_objLoopExport', title="Mass OBJ exporter", iconName='uiWindow_objLoopExport', widthHeight=(330, 160) ) cmds.columnLayout('uiColWrapper', w = 375, adjustableColumn=False, parent = 'uiWindow_objLoopExport' ) cmds.text( label='Settings', align='left', parent = 'uiColWrapper') cmds.textFieldButtonGrp('Dir', label='Directory Path', cw3 = [80,190,50], text='(browse for directory)', buttonLabel='browse', buttonCommand=browseIt, parent = 'uiColWrapper') cmds.button('startExport', label = "Export Selected", parent = 'uiColWrapper', width = 322, command = startExport) cmds.showWindow( uiWindow_objLoopExport )
def cacheFilePath(self, *args): filename = mc.file(q=1, sn=1) scenename = filename.rsplit('_', 4)[1] shotname = filename.rsplit('_', 3)[1] cachePath = self.basePath + '/' + scenename + '/' + shotname mc.textFieldButtonGrp(self.txtProp, e = True, text = cachePath) return cachePath
def makeRelativeUI(): ''' User Interface for skinCluster.makeRelative() ''' # Window win = 'makeRelativeUI' if mc.window(win,q=True,ex=True): mc.deleteUI(win) win = mc.window(win,t='SkinCluster - Make Relative') # Form Layout makeRelativeFL = mc.formLayout(numberOfDivisions=100) # SkinCluster option menu skinClusterOMG = mc.optionMenuGrp('makeRelativeSkinClusterOMG',label='SkinCluster') for skin in mc.ls(type='skinCluster'): mc.menuItem(label=skin) # Relative To TextField makeRelativeTFB = mc.textFieldButtonGrp('makeRelativeToTFB',label='RelativeTo',text='',buttonLabel='Load Selected') # Button makeRelativeBTN = mc.button(l='Make Relative',c='glTools.ui.skinCluster.makeRelativeFromUI()') # UI Callbacks mc.textFieldButtonGrp(makeRelativeTFB,e=True,bc='glTools.ui.utils.loadTypeSel("'+makeRelativeTFB+'","transform")') # Form Layout - MAIN mc.formLayout(makeRelativeFL,e=True,af=[(skinClusterOMG,'left',5),(skinClusterOMG,'top',5),(skinClusterOMG,'right',5)]) mc.formLayout(makeRelativeFL,e=True,af=[(makeRelativeTFB,'left',5),(makeRelativeTFB,'right',5)]) mc.formLayout(makeRelativeFL,e=True,ac=[(makeRelativeTFB,'top',5,skinClusterOMG)]) mc.formLayout(makeRelativeFL,e=True,af=[(makeRelativeBTN,'left',5),(makeRelativeBTN,'right',5),(makeRelativeBTN,'bottom',5)]) mc.formLayout(makeRelativeFL,e=True,ac=[(makeRelativeBTN,'top',5,makeRelativeTFB)]) # Open window mc.showWindow(win)
def loadSelIntoTFBG(tfbg): objs = mc.ls(sl=True) if len(objs)>0: mc.textFieldButtonGrp(tfbg,e=True,tx=objs[0]) print mc.textFieldButtonGrp(tfbg,q=True,tx=True)
def setDBPath(self, *args): fileFilters = "Database (*.db *.sqlite) (*.db *.sqlite)" path = cmds.fileDialog2(fileMode=1, caption="Open .db File", dialogStyle=2, okCaption="Open", startingDirectory=self.basedir, fileFilter=fileFilters) if path == None: return cmds.textFieldButtonGrp("tfbDBPath", e=True, tx=path[0])
def linkShaders(self, *args): links = self.getLinksFromDB() if links == None: return selection = cmds.ls(sl=True) if len(selection) > 0: selection = cmds.listRelatives(selection, allDescendents=True, noIntermediate=True) # If shader file is available import it shaderPath = cmds.textFieldButtonGrp("tfbShaderPath", q=True, tx=True) if len(shaderPath) > 0: cmds.file(shaderPath, i=True) cmds.textFieldButtonGrp("tfbShaderPath", e=True, tx="") # Link shaders for link in links: mesh = link[0] shader = link[1] if cmds.checkBox("cbSubstring", q=True, value=True): substring = cmds.textField("tfSubstring", q=True, text=True) mesh = substring + mesh if cmds.objExists(mesh): cmds.select(mesh) cmds.hyperShade(assign=shader) print "'" + mesh + "' linked" print "Finished linking."
def locatorCurveUI(): ''' UI for locatorCurve() ''' # Window window = 'locatorCurveUI' if mc.window(window,q=True,ex=1): mc.deleteUI(window) window = mc.window(window,t='Locator Curve') # Layout cl = mc.columnLayout() # UI Elements #--- # Curve curveTFB = mc.textFieldButtonGrp('locatorCurveTFB',label='Source Curve',text='',buttonLabel='Load Selected') # Prefix prefixTFG = mc.textFieldGrp('locatorCurvePrefixTFG',label='Prefix', text='') # Scale scaleFSG = mc.floatSliderGrp('locatorCurveScaleFSG',label='Locator Scale',field=True,minValue=0.0,maxValue=1.0,fieldMinValue=0.0,fieldMaxValue=10.0,value=0.05,pre=3) # Edit Points editPointCBG = mc.checkBoxGrp('locatorCurveEditPointCBG',numberOfCheckBoxes=1,label='Use Edit Points',v1=False) # Buttons createB = mc.button('locatorCurveCreateB',l='Create',c='glTools.ui.curve.locatorCurveFromUI(False)') cancelB = mc.button('locatorCurveCancelB',l='Cancel',c='mc.deleteUI("'+window+'")') # TFB commands mc.textFieldButtonGrp(curveTFB,e=True,bc='glTools.ui.utils.loadCurveSel("'+curveTFB+'","'+prefixTFG+'")') # Show Window mc.showWindow(window)
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 uniformRebuildCurveUI(): ''' UI for uniformRebuild() ''' # Window window = 'uniformRebuildCurveUI' if mc.window(window,q=True,ex=1): mc.deleteUI(window) window = mc.window(window,t='Uniform Rebuild Curve') # Layout cl = mc.columnLayout() # Curve curveTFB = mc.textFieldButtonGrp('uniformRebuildCurveTFB',label='Source Curve',text='',buttonLabel='Load Selected') # Prefix prefixTFG = mc.textFieldGrp('uniformRebuildCurvePrefixTFG',label='Prefix',text='') # Replace Original replaceCBG = mc.checkBoxGrp('uniformRebuildCurveReplaceCBG',numberOfCheckBoxes=1,label='Replace Original',v1=False) # Spans spanISG = mc.intSliderGrp('uniformRebuildCurveSpansISG',field=True,label='Rebuild Spans',minValue=2,maxValue=10,fieldMinValue=2,fieldMaxValue=100,value=6) # Buttons createB = mc.button('uniformRebuildCurveCreateB',l='Create',c='glTools.ui.curve.uniformRebuildCurveFromUI(False)') createCloseB = mc.button('uniformRebuildCurveCreateCloseB',l='Create and Close',c='glTools.ui.curve.uniformRebuildCurveFromUI(True)') cancelB = mc.button('uniformRebuildCurveCancelB',l='Cancel',c='mc.deleteUI("'+window+'")') # TFB commands mc.textFieldButtonGrp(curveTFB,e=True,bc='glTools.ui.utils.loadCurveSel("'+curveTFB+'","'+prefixTFG+'")') # Show Window mc.showWindow(window)
def __init__(self): self.name = "pythant" self.title = "Pythant" #creates the ui window, replacing any existing ui windows if (cmds.window(self.name, q=1, exists=1)): cmds.deleteUI(self.name) self.window = cmds.window(self.name, title=self.title) self.form = cmds.columnLayout(adjustableColumn=True, columnAlign="center", rowSpacing=10) cmds.intFieldGrp("numAnts", label="Number of ants:", value1=1, cal=[1,"left"]) cmds.intFieldGrp("startFrame", label="Start frame:", value1=1, nf=1,cal=[1,"left"]) cmds.intFieldGrp("endFrame", label="End frame:",nf=1,value1=50,cal=[1,"left"]) cmds.text( label="Select the curves:",align="left") cmds.textScrollList("curves",numberOfRows=3,allowMultiSelection=True,h=100) cmds.button(label="OK",w=20, align="left",c=self.getCurves) cmds.textFieldButtonGrp("groundObj", label="Select the Ground:",buttonLabel='OK', bc=self.getGround,cal=[1,"left"]) cmds.checkBox("isFlat",label="Is this a flat ground",value=1) cmds.floatSliderGrp("Velocity",field=True, label="Velocity (mm/s):",min=1, max=40,value=20, cal=[1,"left"]) #cmds.floatSliderGrp("strideFreq",field=True, label="Stride Frequency:",min=1, max=10,value=5, cal=[1,"left"]) cmds.floatSliderGrp("load",field=True, label="Load (mg):",min=0, max=4,value=0, cal=[1,"left"]) # cmds.textFieldButtonGrp("force", label="External Force", buttonLabel='OK', bc = self.getForce, cal=[1, "left"]) cmds.text( label='The external force is setup with a directional light named forceVector.') cmds.text( label='The force magnitude (N) is specified with the custom attribute "Force Magnitude".') cmds.text(label='The lighting direction is the force direction.') cmds.button(label='Run', w=100, c=self.accept) cmds.button(label='Reset', w=100, c=self.reset) cmds.showWindow(self.window) cmds.window(self.window, edit = True, widthHeight=(415, 580))
def loadDirectoryPath(textField,caption='Load Directory',startDir=None): ''' Select a file path to load into a specified textField. @param textField: TextField UI object to load file path to @type textField: str @param caption: File selection UI caption string @type caption: str @param startDir: Directory to start browsing from. In None, use the default or last selected directory. @type startDir: str ''' # Get File Path dirPath = mc.fileDialog2( dialogStyle=2, fileMode=3, caption=caption, okCaption='Load', startingDirectory=startDir ) # Check File Path if not dirPath: print('Invalid directory path!') return # Load File Path to TextField if mc.textField(textField,q=True,ex=True): mc.textField(textField,e=True,text=dirPath[0]) elif mc.textFieldGrp(textField,q=True,ex=True): mc.textFieldGrp(textField,e=True,text=dirPath[0]) elif mc.textFieldButtonGrp(textField,q=True,ex=True): mc.textFieldButtonGrp(textField,e=True,text=dirPath[0]) else: print('UI element "'+textField+'" is of type "'+mc.objectTypeUI(textField)+'"! Expected textField, textFieldGrp or textFieldButtonGrp.') return # Return Result return dirPath[0]
def snapToClosestVertexUI(): ''' UI for snapToClosestVertex() ''' # Window window = 'snapToClosestVtxUI' if mc.window(window,q=True,ex=1): mc.deleteUI(window) window = mc.window(window,t='Snap To Closest Vertex') # Layout FL = mc.formLayout(numberOfDivisions=100) # =============== # - UI Elements - # =============== # Mesh meshTFB = mc.textFieldButtonGrp('snapToMeshVtxTFB',label='Target Mesh',text='',buttonLabel='Load Selected') # UI callback commands mc.textFieldButtonGrp(meshTFB,e=True,bc='glTools.ui.utils.loadMeshSel("'+meshTFB+'")') # Buttons snapB = mc.button('snapToMeshSnapB',l='Snap To Vertex',c='glTools.ui.mesh.snapToClosestVertexFromUI(False)') cancelB = mc.button('snapToMeshCancelB',l='Cancel',c='mc.deleteUI("'+window+'")') # Form Layout - MAIN mc.formLayout(FL,e=True,af=[(meshTFB,'top',5),(meshTFB,'left',5),(meshTFB,'right',5)]) mc.formLayout(FL,e=True,ac=[(snapB,'bottom',5,cancelB)],af=[(snapB,'left',5),(snapB,'right',5)]) mc.formLayout(FL,e=True,af=[(cancelB,'left',5),(cancelB,'right',5),(cancelB,'bottom',5)]) # Show Window mc.showWindow(window)
def setShaderPath(self, *args): fileFilters = "Maya File(*.mb *.ma)" path = cmds.fileDialog2(fileMode=1, caption="Set Shader Path", dialogStyle=2, okCaption="Save", startingDirectory=self.basedir, fileFilter=fileFilters) if path == None: return cmds.textFieldButtonGrp("tfbShaderPath", e=True, tx=path[0])
def browseDirectory(rootDir, control): """browseDirectory :param rootDir: :param control: :return: """ path = cmds.textFieldButtonGrp(control, q=True, text=True) startDir = path if isRelative(path): startDir = os.path.join(rootDir, path) dirNames = cmds.fileDialog2( fileMode=3, startingDirectory=startDir, dialogStyle=1 ) if dirNames is not None: dirName = cmds.workspace(projectPath=fromNativePath(dirNames[0])) cmds.textFieldButtonGrp( control, e=True, text=dirName, forceChangeCommand=True )
def ui(self): if cmds.window('MultiAxesRigSetupWin',exists=True): cmds.deleteUI('MultiAxesRigSetupWin' ,window=True) window = cmds.window( 'MultiAxesRigSetupWin' , title="Multi Axis Rig Setup v%s"%self.version ) cmds.columnLayout( adjustableColumn=True ) cmds.columnLayout( adjustableColumn=True ) self.nameFld = cmds.textFieldGrp( label='Rig Name' ) cmds.setParent( '..' ) cmds.columnLayout( adjustableColumn=True ) self.baseFld = cmds.textFieldButtonGrp( label='Base Object (Shoulder)', bl='Load', bc=self._loadBase ) cmds.setParent('..') cmds.columnLayout( adjustableColumn=True ) self.tgtFld = cmds.textFieldButtonGrp( label='Target Object (Elbow)', bl='Load', bc=self._loadTgt ) cmds.setParent('..') cmds.columnLayout( adjustableColumn=True ) self.controlFld = cmds.textFieldButtonGrp( label='Control to put attrs on', bl='Load', bc=self._loadControl ) cmds.setParent('..') cmds.columnLayout( adjustableColumn=True ) cmds.button( label='Create Rig', c=self._callCreateRig ) cmds.setParent('..') cmds.showWindow( window )
def add_source_mesh(*args): """ # edits the text of the given textFieldButtonGrp # add the name of the selected objects """ obj = cmds.ls(selection=True)[0] cmds.textFieldButtonGrp(source_field, edit=True, text=obj)
def getShaderList(self, *args): #retrieve the dict of shaders from file self.path = cmds.textFieldButtonGrp(self.widgets["destinationTFBG"], q=True, tx=True) getFile = open(self.path, "r") #getFile.read(self.path) for line in getFile: print line getFile.close() print "connections = %s" % connections
def stretchyIkLimbFromUI(close=False): ''' Execute stretchyIkLimb() from UI ''' # Window window = 'stretchyIkLimbUI' if not mc.window(window,q=True,ex=1): raise UIError('StretchyIkChain UI does not exist!!') # Get UI data ik = mc.textFieldButtonGrp('stretchyIkLimbTFB',q=True,text=True) pre = mc.textFieldGrp('stretchyIkLimbPrefixTFG',q=True,text=True) ctrl = mc.textFieldButtonGrp('stretchyIkLimbControlTFB',q=True,text=True) scaleAxis = str.lower(str(mc.optionMenuGrp('stretchyIkLimbAxisOMG',q=True,v=True))) scaleAttr = mc.textFieldButtonGrp('stretchyIkLimbScaleAttrTFB',q=True,text=True) # Execute command glTools.tools.stretchyIkLimb.StretchyIkLimb().build(ikHandle=ik,control=ctrl,scaleAttr=scaleAttr,scaleAxis=scaleAxis,prefix=pre) # Cleanup if close: mc.deleteUI(window)
def CreateBlendShape(self): copyMesh = self.blendShapeMesh+'_copyToWork_'+self.newNameBlendShape if cmds.nodeType(blendShapeNode(self.blendShapeMesh)) == 'blendShape' : if cmds.blendShape(self.BlendShape[0],q=1,wc=True) != 0: tragetBlendShapeIndex=cmds.listAttr(self.BlendShape[0]+'.weight',multi=True) if tragetBlendShapeIndex.__contains__(self.newNameBlendShape): blendShapeExists(self.newNameBlendShape) return else: pass print 'ok' duplicateMesh(self.blendShapeMesh,copyMesh) SculptGeometryTool = "SculptGeometryTool" mel.eval(SculptGeometryTool) if int(self.HideBox) == 1: cmds.setAttr(self.blendShapeMesh+'.v',0) cmds.select(copyMesh) cmds.textFieldButtonGrp('newNameText',edit=True,bl='Finish',ed=False)
def zbw_mmAddMObjs(*args): """ adds textFields to the UI for adding target objects for the message attrs """ #delete text confirm dialogue if it exists zbw_mmDeleteConfirm() #figure out what objects are already parented children = cmds.rowColumnLayout("mmRCLayout" , q=True, ca=True) #figure out where stuff goes (2 column layout, so divide by 2), 1 based if children: currentNum = len(children)/2 + 1 currentTFG = "attr" + str(currentNum) currentTFBG = "obj" + str(currentNum) #if no objects exist . . . else: currentTFG = "attr1" currentTFBG = "obj1" cmds.textFieldGrp(currentTFG, l="addedAttr (ln)", cal=(1, "left"), cw2=(100, 150), p="mmRCLayout") cmds.textFieldButtonGrp(currentTFBG, l="messageObj", cal=(1, "left"), cw3=(75,150,50), p="mmRCLayout", bl="get", bc=partial(zbw_mmAddTarget, currentTFBG))
def makeGui(): texFix_Window = cmds.window('texFix_Window', title="Texture Search/Source Tool - V%s"%(version), iconName='texFix_Window', widthHeight=(windowWidth+15, 400) ) scrollLayout = cmds.scrollLayout("scrollLayout", w=windowWidth, cr=1, p="texFix_Window" ) cmds.columnLayout('uiColWrapper', w = (windowWidth - 10), adj=1, adjustableColumn=True, p="scrollLayout") cmds.text(l = "Automatic 1-click texture resource tool", bgc=[1,1,1], p = 'uiColWrapper') cmds.separator( height=10, style='double', p = 'uiColWrapper') cmds.textFieldButtonGrp('Dir', label="Root path for search", ad3=2 , cw3 = [105,380,50], text=defaultSearchPath, buttonLabel='browse', buttonCommand=browseIt, parent = 'uiColWrapper') cmds.button('populateResultArea', l = "-Display Texture Paths-", bgc = [.35, .35, .35], h=40, c = populatePathList, parent = 'uiColWrapper' ) cmds.button('StartTextureSearch', l = "-Fix Texture Paths-", bgc = [.35, .6, .35], h=40, en=0, c = resourceAllTextures, parent = 'uiColWrapper' ) cmds.separator( height=10, style='double', p = 'uiColWrapper') cmds.columnLayout('uiColWrapper2', w = (windowWidth - 10), adjustableColumn=True, p="scrollLayout") cmds.showWindow( texFix_Window )
def loadMeshSel(textField,prefixTextField=''): ''' Load selected curve into UI text field @param textField: TextField UI object to load mesh selection into @type textField: str @param prefixTextField: TextField UI object to load curve name prefix into @type prefixTextField: str ''' # Get user selection sel = mc.ls(sl=True) # Check selection if not sel: return if not glTools.utils.mesh.isMesh(sel[0]): raise UserInputError('Object "'+sel[0]+'" is not a valid polygon mesh!!') # Update UI mc.textFieldButtonGrp(textField,e=True,text=sel[0]) if prefixTextField: if not mc.textFieldGrp(prefixTextField,q=True,text=True): prefix = glTools.utils.stringUtils.stripSuffix(sel[0]) mc.textFieldGrp(prefixTextField,e=True,text=prefix)
def connectToSgNode(): sgNode = mc.textFieldButtonGrp('SGNodeWin', q=1, tx=1) renderShader = mc.listConnections(sgNode + '.surfaceShader', p=1) if renderShader: mc.connectAttr(renderShader[0], sgNode + '.aiSurfaceShader', f=1) mc.connectAttr('dx11Shader4.outColor', sgNode + '.surfaceShader', f=1) mc.connectAttr('LaMa_AS101.displacement', sgNode + '.displacementShader', f=1) else: mc.warning('can not find the render shader !!')
def load_tracker(s, path): """ Load nuke file """ # Clear out any existing tracks. path = path.strip() remove = cmds.optionMenu(s.tracker, q=True, ill=True) or [] remove += cmds.optionMenu(s.stabalize, q=True, ill=True) or [] if remove: cmds.deleteUI(remove) if path: s.data = logic.get_tracks(path) cmds.textFieldButtonGrp(s.nuke, e=True, tx=path) # Add current tracks. cmds.menuItem(l=NONE, p=s.stabalize) for track in s.data: cmds.menuItem(l=track, p=s.tracker) cmds.menuItem(l=track, p=s.stabalize) cmds.button(s.go, e=True, en=True)
def hyperRender(): gamma = mc.floatSliderGrp("gamma", q=True, v=True) width = mc.intFieldGrp("Resolution", q=True, value1=True) height = mc.intFieldGrp("Resolution", q=True, value2=True) fr = mc.textFieldButtonGrp("setFile", q=True, text=True) + "/" mc.eval mc.select(lights) mc.select(meshes, add=True) mc.showHidden(a=True) for m in meshes: hideChildren(m) for l in lights: mc.hide(l) for mesh in meshes: # hideChildren(mesh) for light in lights: mc.select(cl=True) mc.select(mesh) mc.select(light, add=True) showChildren(mesh) mc.showHidden(light) name = mesh + light + "output" mc.setAttr("defaultArnoldDriver.ai_translator", "png", type="string") mc.setAttr("defaultArnoldDriver.pre", name, type="string") arnoldRender(width, height, True, True, 'RenderCam_', ' -layer defaultRenderLayer') #render stuff here editor = 'renderView' #render_output = mc.renderer(editor, e=True) # mc.eval('renderWindowRender redoPreviousRender renderView') # editor = 'renderView' formatManager = createImageFormats.ImageFormats() formatManager.pushRenderGlobalsForDesc("PNG") mc.renderWindowEditor(editor, e=True, ga=gamma, com=True, cme=True, writeImage=fr + name + '.png') exec("print 'file saved to' + fr+name+'.png'") formatManager.popRenderGlobals() mc.hide(light) hideChildren(mesh)
def loadWorldSpaceDataFromUI(): """ """ # Check Window window = 'loadSkinClusterWorldSpaceUI' if not cmds.window(window, q=True, ex=1): return # Get UI data targetGeo = cmds.textFieldButtonGrp('loadSkinData_targetGeoTFB', q=True, text=True) searchStr = cmds.textFieldButtonGrp('loadSkinData_searchStrTFB', q=True, text=True) replaceStr = cmds.textFieldButtonGrp('loadSkinData_replaceStrTFB', q=True, text=True) # Load SkinCluster Data loadWorldSpaceData(geo=targetGeo, search=searchStr, replace=replaceStr)
def renamePreMade(): """Function that renames User's geo to match our naming conventions""" userObj = cmds.textFieldButtonGrp("treadName", query=True, text=True) if not userObj: cmds.confirmDialog(t="Select a piece", m="Please choose a tread geometry") return cmds.select(userObj) userObj = cmds.rename("TreadMesh")
def buildGUI(self,*args): if(cmds.window("followCntWin",exists=True)): cmds.deleteUI("followCntWin",window=True) win = cmds.window("followCntWin",title="Follow Control Setup v1.05",rtf=True,menuBar=True) m=cmds.menu(label="Help",helpMenu=True) cmds.menuItem( m, label='Directions',command=self.helpWin ) cmds.columnLayout(adjustableColumn=True) cmds.frameLayout(l='Step 1: Set up rivet and control',cl=False,cll=False,w=500) cmds.columnLayout(adjustableColumn=True) self.nameField = cmds.textFieldButtonGrp(label="Name:",bl="Load",bc=self.loadName,text="control1") cmds.text("\nSelect two edges.\n") cmds.rowLayout(nc=2,cw2=(200,110)) cmds.text(" ") cmds.button(label="Setup",c=self.createRivet) cmds.setParent('..') cmds.setParent('..') cmds.setParent('..') cmds.frameLayout(l='Step 2: Finalize Control',cl=False,cll=False,w=500) cmds.columnLayout(columnAttach=('both', 5),adjustableColumn=True) self.controlField = cmds.textFieldButtonGrp(label="Control:",bl="Load",bc=self.loadControl,text="") self.rivetField = cmds.textFieldButtonGrp(label="Rivet:",bl="Load",bc=self.loadRivet,text="") self.jointField = cmds.textFieldButtonGrp(label="Constrain to:",bl="Load",bc=self.loadJoint,text="") cmds.text("Make sure to select the vertices to influence. \n",font='boldLabelFont') cmds.text(' ') cmds.rowLayout(nc=2,cw2=(200,110)) cmds.text(" ") cmds.button(label="Finish",c=self.setupControl) cmds.setParent('..') cmds.setParent('..') cmds.setParent('..') cmds.showWindow(win)
def exportDataUI(): """ UI for selectively saving Rig data. """ rig = Rig() dataPath = rig.setDataPath() # Build Window window = rig.EXPORT_DATA_UI if cmds.window(window, q=True, ex=1): cmds.deleteUI(window) window = cmds.window(window, t='RIG: Export Data') # Layout FL = cmds.formLayout() # UI Elements dataPathTBG = cmds.textFieldButtonGrp(rig.EXPORT_PATH_TBG, label='Data Path', buttonLabel='...', text=dataPath) dataListTSL = cmds.textScrollList(rig.EXPORT_LIST_TSL, ams=True) reloadB = cmds.button('rigExportData_reloadB', label='Reload', c='glTools.rig.ui.reloadDataUIList()') exportB = cmds.button('rigExportData_exportB', label='Export', c='glTools.rig.ui.exportDataFromUI()') cancelB = cmds.button('rigExportData_cancelB', label='Close', c='cmds.deleteUI("' + window + '")') # UI Callbacks cmds.textFieldButtonGrp(dataPathTBG, e=True, bc='glTools.ui.utils.exportFolderBrowser("' + dataPathTBG + '")') cmds.textFieldButtonGrp(dataPathTBG, e=True, cc='glTools.ui.utils.loadFileList("' + dataListTSL + '","' + cmds.textFieldButtonGrp( dataPathTBG, q=True, text=True) + '",filesOnly=True,filterStr=".pkl")') # Form Layout cmds.formLayout(FL, e=True, af=[(dataPathTBG, 'top', 5), (dataPathTBG, 'left', 5), (dataPathTBG, 'right', 5)]) cmds.formLayout(FL, e=True, ac=[(dataListTSL, 'top', 5, dataPathTBG), (dataListTSL, 'bottom', 5, reloadB)], af=[(dataListTSL, 'left', 5), (dataListTSL, 'right', 5)]) cmds.formLayout(FL, e=True, ac=[(reloadB, 'bottom', 5, exportB)], af=[(reloadB, 'left', 5), (reloadB, 'right', 5)]) cmds.formLayout(FL, e=True, ac=[(exportB, 'bottom', 5, cancelB)], af=[(exportB, 'left', 5), (exportB, 'right', 5)]) cmds.formLayout(FL, e=True, af=[(cancelB, 'left', 5), (cancelB, 'right', 5), (cancelB, 'bottom', 5)]) # Load Deformer List reloadDataUIList() # Show Window cmds.showWindow(window)
def jointPerVertexUI(): """ UI for jointPerVertex() """ # Window win = 'jntPerVtxUI' if cmds.window(win, q=True, ex=1): cmds.deleteUI(win) win = cmds.window(win, t='Create Joint Per Vertex') # Layout cl = cmds.columnLayout() # UI Elements prefixTFG = cmds.textFieldGrp('jntPerVtx_prefixTFG', label='Prefix', text='') suffixTFG = cmds.textFieldGrp('jntPerVtx_suffixTFG', label='Suffix', text='jnt') oriSurfaceTFB = cmds.textFieldButtonGrp('jntPerVtx_oriSurfaceTFB', label='Orient Surface', text='', buttonLabel='Load Selected') # Buttons createB = cmds.button( 'jntPerVtx_createB', l='Create', c='glTools.tools.jointPerVertex.jointPerVertexFromUI(False)') cancelB = cmds.button('jntPerVtx_cancelB', l='Cancel', c='cmds.deleteUI("' + win + '")') # UI callbacks cmds.textFieldButtonGrp(oriSurfaceTFB, e=True, bc='glTools.ui.utils.loadObjectSel("' + oriSurfaceTFB + '","")') # Show Window cmds.showWindow(win)
def setProjectUI(): if cmds.window("projectWin", exists=True): cmds.deleteUI("projectWin") win = cmds.window("projectWin", t="Set Project", w=450, h=100) cmds.columnLayout("CLO") current = getCurrent() #is this the best way to do this? cmds.textFieldGrp("currTFG", l="Current Project:", tx=current, ed=False, cw=[(1, 100), (2, 300), (3, 50)], cal=[(1, "left"), (2, "left"), (3, "left")]) cmds.separator(h=10, style="single") cmds.textFieldButtonGrp("TFBG", l="Select Project Path: ", bl="<<<", cw=[(1, 100), (2, 300), (3, 50)], cal=[(1, "left"), (2, "left"), (3, "left")], bc=getLoc) cmds.separator(h=10, style="single") cmds.rowColumnLayout(nc=3, cw=[(1, 200), (2, 150), (3, 100)]) cmds.button("doBut", l="Change/Set Project Location!", w=200, h=30, bgc=(.6, .8, .6), c=setProject) cmds.button("closeBut", l="Close Window", w=150, bgc=(.8, .8, .6), c=closeWin) cmds.button("killBut", l="Turn This\nOff!", w=100, bgc=(.8, .6, .6), c=killJobs) cmds.showWindow(win) cmds.window(win, e=True, w=450, h=100)
def drawFrameLayout( self, frameTitle, textureTypeAttrList ): # , attrNameList cw1 = 100 cw2 = 60 cmds.setParent( self.listTextures ) cmds.frameLayout( label = frameTitle, borderVisible = True, borderStyle = 'etchedIn', marginHeight = 0, cll = True, cl = False ) cmds.columnLayout( columnAttach=( 'left', 0 ), rowSpacing = 0, adjustableColumn = True ) for i in range( len( self.fileTextures ) ): labelType = "Not Found" labelColor = ( 0.5, 0.0, 0.0 ) fileNodeName = self.fileTextures[ i ] fileNodeType = cmds.objectType( fileNodeName ) fileName = '' for ( textureType, attrName ) in textureTypeAttrList : #print "textureType = %s attrName = %s" % ( textureType, attrName ) if fileNodeType != textureType : continue fileTextureName = cmds.getAttr( fileNodeName + "." + attrName ) print ( '>> fileTextureName = %s' ) % fileTextureName if fileTextureName is not None and fileTextureName != '' : fileName = str( fileTextureName ) if cmds.file( fileTextureName, q=True, exists=True ) : labelType = "Absolute" labelColor = (1.0, 0.5, 0.0) fileName = cmds.workspace( projectPath = fileTextureName ) if self.isRelative( fileName ): labelType = "Relative" labelColor = (0.0, 0.5, 0.0) cmds.rowLayout( numberOfColumns=2, columnWidth1=cw2, adjustableColumn2=2 ) cmds.iconTextButton( style='textOnly', label=labelType, width=cw2, h=16, bgc=labelColor ) cmds.textFieldButtonGrp( cw=( 1, cw1 ), adj=2, label=fileNodeName, buttonLabel="select", text=fileName, cc=partial( self.onFileNameChanged, fileNodeName, attrName ), bc=partial( self.selectFileNode, fileNodeName ) ) cmds.setParent( '..' )
def ikHandleFromUI(close=False): ''' Execute ikHandle() from UI ''' # Window window = 'ikHandleUI' if not mc.window(window,q=True,ex=1): raise UIError('IkHandle UI does not exist!!') # Get UI data startJ = mc.textFieldButtonGrp('ikHandleStartJointTFB',q=True,text=True) endJ = mc.textFieldButtonGrp('ikHandleEndJointTFB',q=True,text=True) pre = mc.textFieldGrp('ikHandlePrefixTFG',q=True,text=True) solver = mc.optionMenuGrp('ikHandleSolverOMG',q=True,v=True) curve = mc.textFieldButtonGrp('ikHandleCurveTFB',q=True,text=True) offset = mc.floatSliderGrp('ikHandleOffsetFSG',q=True,v=True) # Execute command glTools.tools.ikHandle.build(startJoint=startJ,endJoint=endJ,solver=solver,curve=curve,ikSplineOffset=offset,prefix=pre) # Cleanup if close: mc.deleteUI(window)
def _convert(self, *args): u"""カラーコードを変換""" code = cmds.textFieldButtonGrp(self.color_code_field, q=True, tx=True) if len(code) == 7 and code.startswith("#"): code = code[1:] if len(code) != 6: return try: int(code, 16) except ValueError, e: print(e) return
def exportFBX(): #Get the file path chosen by the user FilePath = cmds.textFieldButtonGrp("File_Path", q=True, text=True) #Save the selected objects as .fbx and tell the user cmds.file(FilePath, force=True, options="v=0", type="FBX export", pr=True, es=True) print("File exported to ", FilePath)
def __init__(self): windowName = 'objsToPar_win' if cmds.window(windowName, exists=True): cmds.deleteUI(windowName) cmds.window(windowName, title="w19_objsToPar_win", sizeable=0) cmds.columnLayout(adj=True) cmds.textFieldButtonGrp('w19_parName', label='nParticle Node', text='new', buttonLabel='Get from sel', h=40, ed=False, cw3=(80, 150, 80), bc=self.w19_parName) cmds.checkBox('w19_initialState', l='Initial State', v=True, h=40) cmds.button('w19_do', label='Objects to particles', h=40, c=self.w19_do_cmd) cmds.showWindow(windowName)
def export3DRotationFromUI(): ''' export3DRotationData from UI ''' # Get selection sel = mc.ls(sl=True, fl=True, type=['transform', 'joint']) if not sel: print 'No valid transform selected for export!!' return # Get UI data path = mc.textFieldButtonGrp('exportPoint_pathTBG', q=True, text=True) start = mc.intFieldGrp('exportPoint_rangeIFG', q=True, v1=True) end = mc.intFieldGrp('exportPoint_rangeIFG', q=True, v2=True) # Check UI data if start > end: print('Invalid range specified!') return if not path.endswith('/'): path += '/' # For each point for pt in sel: # Generate export file path sel_name = pt.split(':')[-1].replace('.', '_').replace('[', '_').replace( ']', '') filepath = path + sel_name + '_3Drot.txt' # Check path if os.path.isfile(filepath): chk = mc.confirmDialog(t='Warning: File exists', message='File "' + filepath + '" already exist! Overwrite?', button=['Yes', 'No'], defaultButton='Yes', cancelButton='No', dismissString='No') if chk == 'No': continue # Isolate Select - ON setIsolateSelect(pt, 1) # Export data glTools.tools.exportPointData.export3DRotationData(filepath, pt, start, end, rotateOrder='zxy') # Isolate Select - OFF setIsolateSelect(pt, 0)
def CreateFinishtextFieldButton(): buttonLebal = cmds.textFieldButtonGrp('newNameText',query=True,bl=True) if buttonLebal == 'Finish': cmds.textFieldButtonGrp('newNameText',edit=True,bl='Create',ed=True) CreativeBlendShape().FinishBlendShape() cmds.textFieldButtonGrp('newNameText',edit=True,tx='') if buttonLebal == 'Create': CreativeBlendShape().CreateBlendShape() cmds.textFieldButtonGrp('newNameText',edit=True)
def createButtonCmd(self, *args): mirrorSel = mc.radioButtonGrp("selLegMirrorType_rbg", q=True, select=True) lrSel = mc.radioButtonGrp("selLegType_rbg", q=True, select=True) cbTwists = mc.checkBox("selCreateTwists_cb", q=True, v=True) cbAnkleTwist = mc.checkBox("selAnkleTwist_cb", q=True, v=True) cbSwitchSetup = mc.checkBox("selAddIKFKSwitching_cb", q=True, v=True) cbGeo = mc.checkBox("selGeo_cb", q=True, v=True) cbHip = mc.checkBox("selSpineEnd_cb", q=True, v=True) bndJnt = mc.textFieldButtonGrp("jointLoad_tfbg", q=True, text=True) jntIKHipCheck = mc.textFieldButtonGrp("jntIKHip_tfbg", q=True, text=True) grpDNTTorsoCheck = mc.textFieldButtonGrp("grpTorsoDNT_tfbg", q=True, text=True) ctrlBodyCheck = mc.textFieldButtonGrp("ctrlBody_tfbg", q=True, text=True) ctrlRootTransCheck = mc.textFieldButtonGrp("rootTrans_tfbg", q=True, text=True) cra3 = CRA3(mirrorSel, lrSel, cbTwists,cbAnkleTwist, cbSwitchSetup, cbGeo, cbHip, bndJnt, jntIKHipCheck, grpDNTTorsoCheck, ctrlBodyCheck, ctrlRootTransCheck )
def loadSurfaceSel(textField, prefixTextField=''): """ Load selected surface into UI text field @param textField: TextField UI object to load surface selection into @type textField: str @param prefixTextField: TextField UI object to load surface name prefix into @type prefixTextField: str """ # Get user selection sel = cmds.ls(sl=True) # Check selection if not sel: return if not glTools.utils.surface.isSurface(sel[0]): raise UserInputError('Object "' + sel[0] + '" is not a valid nurbs surface!!') # Update UI cmds.textFieldButtonGrp(textField, e=True, text=sel[0]) if prefixTextField: if not cmds.textFieldGrp(prefixTextField, q=True, text=True): prefix = glTools.utils.stringUtils.stripSuffix(sel[0]) cmds.textFieldGrp(prefixTextField, e=True, text=prefix)
def modelUpdateExportSetting(self, *args): exportNode = cmds.textScrollList(self.modelExportNodesTextScrollList, q=1, selectItem=1) cmds.textFieldButtonGrp(self.modelExportFileNameTextFieldButtonGrp, edit=1, enable=1, text='') fbxExport.addFBXNodeAttrs(exportNode[0]) if exportNode: cmds.textFieldButtonGrp(self.modelExportFileNameTextFieldButtonGrp, edit=1, text=cmds.getAttr(exportNode[0] + '.exportName')) cmds.checkBoxGrp(self.modelExportCheckBoxGrp, edit=1, enable=1, value1=cmds.getAttr(exportNode[0] + '.export'))
def queryUIForExportSettings(self, *args): ''' use the ui update an dictionary object to pass on to animAbc ''' #query the ui expDict = {} widgetsToCheck = { 'verbose': 'verboseCheck', 'uvWrite': 'uvWriteCheck', 'noNormals': 'noNormalsCheck', 'stripNamespaces': 'stripNamespacesCheck', 'renderOnly': 'renderOnlyCheck', 'writeVisibility': 'writeVisibilityCheck', 'worldSpace': 'worldSpaceCheck', 'wholeFrameGeo': 'wholeFrameGeoCheck', 'attrList': 'attrListTextField', 'attrPrefixList': 'attrPrefixListTextField', 'userPropList': 'userPropListTextField', 'userPrefixList': 'userPrefixListTextField', 'copyLookLocal': 'copyLookLocalCheck' } #time range flags expDict['startFrame'] = cmds.floatFieldGrp( self.widgets['frameRangeGrp'], query=True, value1=True) expDict['endFrame'] = cmds.floatFieldGrp(self.widgets['frameRangeGrp'], query=True, value2=True) expDict['timeStep'] = cmds.floatFieldGrp(self.widgets['timeStepGrp'], query=True, value1=True) #checkboxs and text fields for option, widget in widgetsToCheck.items(): if 'Check' in widget: expDict[option] = cmds.checkBox(self.widgets[widget], query=True, value=True) if 'TextField' in widget: tempList = cmds.textField(self.widgets[widget], query=True, text=True).split(';') if tempList[0] != '': expDict[option] = tempList #file browser overridePath = cmds.textFieldButtonGrp(self.widgets['filePathGrp'], query=True, text=True) if overridePath != '': expDict['baseCachePath'] = overridePath self.jobOptions.update(expDict) #print expDict animAbc.cacheSelectedContent(self.jobOptions) self.closeWindow() return
def playBlast(self, *args): """ Create instance of BlastMaster, then play blast based on user settings. If play blast is successful, Write persistent data to TG_BM_NODE """ #Get the scene name and format it for display sceneName = ' ' temp = cmds.file(query=True, sn=True) if (temp): #Not empty temp2 = os.path.split(temp) sceneName = temp2[1] #SequenceShot.Take from file name info = sceneName[:-3] #Pass GUI data as a dictionary guiData = { 'info': info, 'name': cmds.textFieldGrp(self.nameField, query=True, text=True), 'comment': cmds.textFieldGrp(self.commentField, query=True, text=True), 'camera': cmds.optionMenu(self.camMenu, query=True, value=True), 'phase': cmds.optionMenu(self.phaseMenu, query=True, value=True), 'image': cmds.textFieldButtonGrp(self.imageField, query=True, text=True), 'slate': cmds.textFieldButtonGrp(self.slateField, query=True, text=True), 'maya_scene': sceneName, 'dir': cmds.textFieldGrp(self.dirField, query=True, text=True) } blast = bm.BlastMaster() blast.playBlast(guiData)
def curveToLocatorsUI(): ''' UI for curveToLocators() ''' # Window window = 'curveToLocatorsUI' if mc.window(window,q=True,ex=1): mc.deleteUI(window) window = mc.window(window,t='Curve To Locators') # Layout fl = mc.formLayout(numberOfDivisions=100) # UI Elements #--- # Curve curveTFB = mc.textFieldButtonGrp('curveToLocatorsTFB',label='Target Curve',text='',buttonLabel='Load Selected') # Locator List locListTSL = mc.textScrollList('curveToLocatorsTSL',numberOfRows=8,allowMultiSelection=True) # TSL Buttons locAddB = mc.button('attachToCurveAddLocB',l='Add',c='glTools.ui.utils.addToTSL("'+locListTSL+'")') locRemB = mc.button('attachToCurveRemLocB',l='Remove',c='glTools.ui.utils.removeFromTSL("'+locListTSL+'")') # Buttons createB = mc.button('attachToCurveCreateB',l='Create',c='glTools.ui.curve.curveToLocatorsFromUI(False)') cancelB = mc.button('attachToCurveCancelB',l='Cancel',c='mc.deleteUI("'+window+'")') # Form Layout mc.formLayout(fl,e=True,af=[(curveTFB,'top',5),(curveTFB,'left',5),(curveTFB,'right',5)]) mc.formLayout(fl,e=True,ac=[(locListTSL,'top',5,curveTFB),(locListTSL,'bottom',5,locAddB)]) mc.formLayout(fl,e=True,af=[(locListTSL,'left',5),(locListTSL,'right',5)]) mc.formLayout(fl,e=True,ac=[(locAddB,'bottom',1,locRemB)]) mc.formLayout(fl,e=True,af=[(locAddB,'left',5),(locAddB,'right',5)]) mc.formLayout(fl,e=True,ac=[(locRemB,'bottom',1,createB)]) mc.formLayout(fl,e=True,af=[(locRemB,'left',5),(locRemB,'right',5)]) mc.formLayout(fl,e=True,ac=[(createB,'bottom',1,cancelB)]) mc.formLayout(fl,e=True,af=[(createB,'left',5),(createB,'right',5)]) mc.formLayout(fl,e=True,af=[(cancelB,'bottom',5),(cancelB,'left',5),(cancelB,'right',5)]) # TFB commands mc.textFieldButtonGrp(curveTFB,e=True,bc='glTools.ui.utils.loadCurveSel("'+curveTFB+'")') # Show Window mc.showWindow(window)
def createButtonCmd(self, *args): mirrorSel = mc.radioButtonGrp("selArmMirrorType_rbg", q=True, select=True) lrSel = mc.radioButtonGrp("selArmType_rbg", q=True, select=True) cbGeo = mc.checkBox("selGeo_cb", q=True, v=True) cbSwitchSetup = mc.checkBox("selAddIKFKSwitching_cb", q=True, v=True) cbToggleSpineStretch = mc.checkBox("selStretchSpineToggle_cb", q=True, v=True) cbSpecialStretch = mc.checkBox("selSpecialStretch_cb", q=True, v=True) bndJnt = mc.textFieldButtonGrp("jointArmsLoad_tfbg", q=True, text=True) jntShoulderRootCheck = mc.textFieldButtonGrp( "jointShoulderJntLoad_tfbg", q=True, text=True) jntIKShoulderCheck = mc.textFieldButtonGrp("jntIKShoulderLoad_tf", q=True, text=True) grpDNTTorsoCheck = mc.textFieldButtonGrp("grpTorsoDNTLoad_tf", q=True, text=True) ctrlRootCheck = mc.textFieldButtonGrp("rootTrans_tfbg", q=True, text=True) grpSpineToggleCheck = mc.textFieldButtonGrp("grpheadShoulders_tfbg", q=True, text=True) cra5 = CRA5(mirrorSel, lrSel, cbGeo, cbSwitchSetup, cbToggleSpineStretch, cbSpecialStretch, bndJnt, jntShoulderRootCheck, jntIKShoulderCheck, grpDNTTorsoCheck, ctrlRootCheck, grpSpineToggleCheck)
def stretchyIkSplineFromUI(close=False): ''' ''' # Window window = 'stretchyIkSplineUI' if not mc.window(window,q=True,ex=1): raise UIError('StretchyIkSpline UI does not exist!!') # Get UI data ik = mc.textFieldButtonGrp('stretchyIkSplineTFB',q=True,text=True) pre = mc.textFieldGrp('stretchyIkSplinePrefixTFG',q=True,text=True) scaleAxis = str.lower(str(mc.optionMenuGrp('stretchyIkSplineAxisOMG',q=True,v=True))) scaleAttr = mc.textFieldButtonGrp('stretchyIkSplineScaleAttrTFB',q=True,text=True) blendCtrl = mc.textFieldButtonGrp('stretchyIkSplineBlendCtrlTFB',q=True,text=True) blendAttr = mc.textFieldGrp('stretchyIkSplineBlendAttrTFG',q=True,text=True) useClosestPnt = mc.checkBoxGrp('stretchyIkSplineClosestPointCBG',q=True,v1=True) method = mc.optionMenuGrp('stretchyIkSplineMethodOMG',q=True,sl=True)-1 minPercent = mc.floatSliderGrp('stretchyIkSplineMinPFSG',q=True,v=True) maxPercent = mc.floatSliderGrp('stretchyIkSplineMaxPFSG',q=True,v=True) # Execute command if method: # Parametric glTools.tools.stretchyIkSpline.stretchyIkSpline_parametric( ikHandle=ik, scaleAxis=scaleAxis, scaleAttr=scaleAttr, blendControl=blendCtrl, blendAttr=blendAttr, useClosestPoint=useClosestPnt, minPercent=minPercent, maxPercent=maxPercent, prefix=pre) else: # Arc Length glTools.tools.stretchyIkSpline.stretchyIkSpline_arcLength( ikHandle=ik, scaleAxis=scaleAxis, scaleAttr=scaleAttr, blendControl=blendCtrl, blendAttr=blendAttr, prefix=pre) # Cleanup if close: mc.deleteUI(window)