def cacheFileUsdHierarchyOptions(topForm): '''Create controls to insert Maya reference USD cache into USD hierarchy.''' cmds.setParent(topForm) cmds.frameLayout(label=getMayaUsdLibString("kCacheMayaRefUsdHierarchy")) widgetColumn = cmds.columnLayout() rl = mel.eval('createRowLayoutforMayaReference("' + widgetColumn + '", "cacheFilePreviewRow", 2)') with mayaRefUtils.SetParentContext(rl): cmds.iconTextStaticLabel(st="iconAndTextHorizontal", i1="info.png", l=getMayaUsdLibString('kCacheFileWillAppear')) cmds.textField(text=str(_pulledMayaRefPrim.GetParent().GetPath()), editable=False) with mayaRefUtils.SetParentContext(cmds.rowLayout(numberOfColumns=2)): cmds.optionMenuGrp( 'compositionArcTypeMenu', label=getMayaUsdLibString('kOptionAsCompositionArc'), cc=compositionArcChanged) cmds.menuItem(label=getMayaUsdLibString('kMenuPayload')) cmds.menuItem(label=getMayaUsdLibString('kMenuReference')) cmds.optionMenu('listEditedAsMenu', label=getMayaUsdLibString('kOptionListEditedAs'), cc=listEditChanged) cmds.menuItem(label=getMayaUsdLibString('kMenuAppend')) cmds.menuItem(label=getMayaUsdLibString('kMenuPrepend')) variantRb = cmds.radioButtonGrp('variantRadioBtn', nrb=1, label=getMayaUsdLibString('kTextDefineIn'), l1=getMayaUsdLibString('kTextVariant')) rl = mel.eval('createRowLayoutforMayaReference("' + widgetColumn + '", "usdCacheVariantSetRow", 3)') with mayaRefUtils.SetParentContext(rl): cmds.text(label=getMayaUsdLibString('kMayaRefVariantSetName')) cmds.optionMenu('variantSetMenu', cc=variantSetNameChanged) cmds.textField(visible=False) rl = mel.eval('createRowLayoutforMayaReference("' + widgetColumn + '", "usdCacheVariantNameRow", 3)') with mayaRefUtils.SetParentContext(rl): cmds.text(label=getMayaUsdLibString('kMayaRefVariantName')) cmds.optionMenu('variantNameMenu', cc=variantNameChanged) cmds.textField('variantNameText', cc=variantNameTextChanged) newChildRb = cmds.radioButtonGrp( 'newChildPrimRadioBtn', nrb=1, label='', scl=variantRb, l1=getMayaUsdLibString('kButtonNewChildPrim')) cmds.textFieldGrp('primNameText', label=getMayaUsdLibString('kMayaRefPrimName'), cc=primNameTextChanged) cmds.radioButtonGrp(variantRb, edit=True, select=1)
def setOptionMenuList(OMG,itemList,add=False): ''' Set the list of items for the specified optionMenuGrp control @param OMG: OptionMenuGrp to set the item list for @type OMG: str @param itemList: List of items to add to optionMenuGrp @type itemList: list @param add: Add to existing menu items @type add: bool ''' # Check optionMenuGrp if not mc.optionMenuGrp(OMG,q=True,ex=True): raise UIError('OptionMenu "'+OMG+'" does not exist!') # Get existing items exItemList = mc.optionMenuGrp(OMG,q=True,ill=True) # Add items for item in itemList: mc.setParent(OMG) mc.menuItem(l=item) # Remove previous items if exItemList: for item in exItemList: mc.deleteUI(item)
def findReplacePanelUI(self, name, parent, collapse=False): """ Create find and replace panel UI controls. """ mc.frameLayout(width=400, collapsable=True, cl=collapse, label="Find and Replace") mc.columnLayout(name) mc.separator(height=4, style="none") mc.optionMenuGrp("renamePresets", label="Preset: ", changeCommand=lambda *args: self.fillPresets()) for item in self.presetItemList: mc.menuItem(label=item) mc.separator(height=8, style="none") mc.textFieldGrp("findStr", label="Find: ") mc.textFieldGrp("replaceStr", label="Replace: ") mc.separator(height=8, style="none") mc.rowLayout(numberOfColumns=2, columnAttach2=["left", "left"], columnAlign2=["both", "both"], columnOffset2=[142, 8]) mc.checkBox("ignoreCase", label="Ignore case", value=0) mc.setParent(name) mc.separator(height=4, style="none") mc.rowLayout(numberOfColumns=1, columnAttach1="left", columnAlign1="both", columnOffset1=142) mc.button(width=116, label="Replace Text", command=lambda *args: self.replaceTextRE()) mc.setParent(name) mc.separator(height=4, style="none") mc.setParent(parent)
def doOptions(input_referenceObject, input_rotateOrder, input_axis, input_referenceAxis, input_normalizeAxes): """This is the function called when the apply or create button is clicked""" try: # validate selection utils.dg.validateSelection(type='transform', exact=1) # validate reference object referenceObject = cmds.textFieldGrp(input_referenceObject, q=True, tx=True) if len(referenceObject) > 0: utils.dg.verifyNode(referenceObject) # call the command if len(referenceObject) > 0: cmds.am_exposeTransform( ref=referenceObject, ro=utils.kRotateOrderMapping[cmds.optionMenuGrp(input_rotateOrder, q=True, v=True)], a=cmds.floatFieldGrp(input_axis, q=True, v=True), ra=cmds.floatFieldGrp(input_referenceAxis, q=True, v=True), na=cmds.checkBoxGrp(input_normalizeAxes, q=True, v1=True)) else: cmds.am_exposeTransform( ro=utils.kRotateOrderMapping[cmds.optionMenuGrp(input_rotateOrder, q=True, v=True)], a=cmds.floatFieldGrp(input_axis, q=True, v=True), ra=cmds.floatFieldGrp(input_referenceAxis, q=True, v=True), na=cmds.checkBoxGrp(input_normalizeAxes, q=True, v1=True)) except: raise
def commonOptUI(self, name, parent, collapse=False): """ Create common options panel UI controls. """ mc.frameLayout("commonOptRollout", width=400, collapsable=True, cl=collapse, label="Render Layer Overrides") mc.columnLayout(name) mc.separator(height=4, style="none") mc.optionMenuGrp("renderLayer_comboBox", label="Layer: ", changeCommand=lambda *args: self.listOverrides()) for rl in self.renderLayers: mc.menuItem(label=rl) mc.optionMenuGrp("renderLayer_comboBox", edit=True, value=self.currentLayer) mc.separator(height=2, style="none") mc.rowLayout(numberOfColumns=2, columnAttach2=["left", "left"], columnAlign2=["both", "both"], columnOffset2=[4, 0]) mc.iconTextScrollList("listView_overrides", width=360, height=108, allowMultiSelection=True) # table = mc.scriptTable(rows=4, columns=2, label=[(1,"Column 1"), (2,"Column 2")], cellChangedCmd=self.editCell) mc.setParent(name) mc.separator(height=4, style="none") mc.setParent(parent)
def getMaterials(): itemList = cmds.optionMenuGrp(Window_global.op_shaderType, q=1, ils=1) selIndex = cmds.optionMenuGrp(Window_global.op_shaderType, q=1, select=1) matType = cmds.menuItem(itemList[selIndex - 1], q=1, l=1) sels = cmds.ls(mat=1) sels = list(set(sels)) sels.sort() newSels = [] for sel in sels: if not cmds.listConnections(sel, s=0, d=1, type='shadingEngine'): continue newSels.append(sel) if matType == 'All': return newSels else: targetSels = [] for sel in newSels: if cmds.nodeType(sel) == matType: targetSels.append(sel) return targetSels
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 gui() : import maya.cmds as m if m.window("peelMocap", ex=True) : m.deleteUI("peelMocap") win = m.window("peelMocap", width=400, height=400) form = m.formLayout() c1 = m.columnLayout() m.optionMenuGrp("peelMocapMarkerset", l="Markerset:") m.menuItem("motive") m.menuItem("mocapclub") m.textFieldButtonGrp("peelMocapMarkerPrefix", l="Marker Prefix:", bl="Verify", bc=gui_verify) m.textFieldGrp("peelMocapMarkerStatus", en=False, l="" ) m.textScrollList("peelMocapTSL") m.button(l="Select Markers", c=gui_select) m.button(l="Draw Lines", c=gui_drawLines) m.button(l="Test Solver", c=gui_createSolverTest) m.button(l="Create Solver", c=gui_createSolver) m.setParent(form) c2 = m.columnLayout() m.optionMenuGrp("peelMocapBoneset", l="Boneset:") m.menuItem("fbx") m.textFieldButtonGrp("peelMocapBonePrefix", l="Bone Prefix:", bl="Verify", bc=gui_verifyBones) m.textFieldGrp("peelMocapBoneStatus", en=False, l="" ) m.formLayout(form, e=True, attachForm=[ ( c1, "top", 1 ) , ( c1, "left", 1) , (c1, "bottom", 1), ( c2, "top", 1 ) , ( c2, "right", 1) , (c2, "bottom", 1) ], attachControl= [ (c1, "right", 1, c2 ) ]) m.showWindow(win)
def cmdCreate(self, *args): newSystemType = cmds.rowColumnLayout(self.columnNewSystem, q=1, vis=1) assignSystemType = cmds.rowColumnLayout(self.columnAssignSystem, q=1, vis=1) newCurve = cmds.checkBox(self.check, q=1, v=1) sels = self.popupCurves.getFieldTexts() if newSystemType: ctlName = self.popupController.getFieldText() addName = cmds.textFieldGrp(self.addName, q=1, tx=1) if not newCurve: hairSystem = sgRigCurve.makeDynamicCurveKeepSrc(sels, addName) else: hairSystem = sgRigCurve.makeDynamicCurve(sels, addName) sgRigAttribute.connectHairAttribute(ctlName, hairSystem) elif assignSystemType: addName = cmds.textFieldGrp(self.addName, q=1, tx=1) menuItems = cmds.optionMenuGrp(self.option, q=1, itemListLong=1) selectIndex = cmds.optionMenuGrp(self.option, q=1, sl=1) - 1 menuItemLabel = cmds.menuItem(menuItems[selectIndex], q=1, label=1) if not newCurve: hairSystem = sgRigCurve.makeDynamicCurveKeepSrc(sels, addName) else: hairSystem = sgRigCurve.makeDynamicCurve(sels, addName)
def pupMaya2mental(mentalVersion): destPath = os.getenv('DEST_PATH_WIN') rootPath, shadersPath = { 3.8: ('c:/Program Files/Autodesk/mrstand3.8.1-adsk2011/bin', destPath + '/mental3.8.1'), 3.11: ('c:/Program Files/Autodesk/mrstand3.11.1-adsk2014/bin', destPath + '/mental3.11.1') }[mentalVersion] os.putenv('RAY_COMMAND', '"' + rootPath + '/ray.exe"') os.putenv('MR_VERSION', str(mentalVersion)) miModulesPaths, binModulesPaths = modulesPath.getMiBinString() #os.putenv('MI_RAY_INCPATH', shadersPath + '/mi;' + miModulesPaths) #os.putenv('MI_LIBRARY_PATH', shadersPath + '/bin;' + binModulesPaths) #os.putenv('MI_ROOT', rootPath) mel.eval('pup_maya_2_mental(3);') mc.checkBoxGrp('pup_m2mrOverrideEnv', e=True, v1=1) mc.textFieldGrp('pup_m2mrMiRoot', e=True, tx=rootPath) mc.textFieldGrp('pup_m2mrMiInclude', e=True, tx=shadersPath + '/mi;' + miModulesPaths) mc.textFieldGrp('pup_m2mrMiLib', e=True, tx=shadersPath + '/bin;' + binModulesPaths) mc.textFieldGrp('pup_m2mrMiDir', e=True, tx="C:/Temp/") mc.optionMenuGrp('pup_m2mrVerboseM', e=True, sl=5) #mc.textFieldGrp('pup_m2mrCommandLine', e=True, tx= '-finalgather_passes 0 -memory 1000000' ) mc.textFieldGrp('pup_m2mrCommandLine', e=True, tx='-memory 1000000') mc.checkBoxGrp('pup_m2mrUniqueMI', e=True, v1=1) mc.optionMenuGrp('pup_m2mrPriority', e=True, sl=3)
def __init__(s): s.data = {} s.win = cmds.window("Tracker to Attribute") col = cmds.columnLayout(adj=True) s.nuke = cmds.textFieldButtonGrp(l="Tracker File:", bl="Browse", adj=2, bc=s.browse, cc=s.load_tracker) s.tracker = cmds.optionMenuGrp(l="Tracker:", adj=2) + "|OptionMenu" s.stabalize = cmds.optionMenuGrp(l="Stabalize / Angle:", adj=2) + "|OptionMenu" s.outX = cmds.textFieldButtonGrp(l="Output X:", bl="<< CB", adj=2, bc=lambda: s.get_attr(s.outX)) s.outY = cmds.textFieldButtonGrp(l="Output Y:", bl="<< CB", adj=2, bc=lambda: s.get_attr(s.outY)) s.outA = cmds.textFieldButtonGrp(l="Angle:", bl="<< CB", adj=2, bc=lambda: s.get_attr(s.outA)) s.scale = cmds.intFieldGrp(l="Scale X / Y:", v1=1, v2=1, nf=2) s.view = cmds.checkBoxGrp(l="Restrict to range:", v1=True) s.go = cmds.button(l="Keyframe!", en=False, c=s.run) cmds.showWindow()
def nmOuterSpace_setSel(): ''' this function will set the current selected objects under the given namespace. ''' # sel sel = cmds.ls(sl=True) # get curSel = cmds.optionMenuGrp('nmSAK_namespaceOMG', q=True, sl=True) if (curSel == 1): curName = ':' else: curName = cmds.optionMenuGrp('nmSAK_namespaceOMG', q=True, v=True) + ':' # check if (len(sel) > 0): # set for stuff in sel: split = stuff.split(':')[-1] cmds.rename(stuff, curName + split) # line nmGUI_func.nmGUI_runCheck( 'complete', 'Selected objects have been set to "' + curName + '".') else: # line nmGUI_func.nmGUI_runCheck('error', 'Please select one or more objects.')
def cmdCreate(self, *args ): newSystemType = cmds.rowColumnLayout( self.columnNewSystem, q=1, vis=1 ) assignSystemType = cmds.rowColumnLayout( self.columnAssignSystem, q=1, vis=1 ) newCurve = cmds.checkBox( self.check, q=1, v=1 ) sels = self.popupCurves.getFieldTexts() if newSystemType: ctlName = self.popupController.getFieldText() addName = cmds.textFieldGrp( self.addName, q=1, tx=1 ) if not newCurve: hairSystem = sgRigCurve.makeDynamicCurveKeepSrc( sels, addName ) else: hairSystem = sgRigCurve.makeDynamicCurve( sels, addName ) sgRigAttribute.connectHairAttribute( ctlName, hairSystem ) elif assignSystemType: addName = cmds.textFieldGrp( self.addName, q=1, tx=1 ) menuItems = cmds.optionMenuGrp( self.option, q=1, itemListLong=1 ) selectIndex = cmds.optionMenuGrp( self.option, q=1, sl=1 )-1 menuItemLabel = cmds.menuItem( menuItems[selectIndex], q=1, label=1 ) if not newCurve: hairSystem = sgRigCurve.makeDynamicCurveKeepSrc( sels, addName ) else: hairSystem = sgRigCurve.makeDynamicCurve( sels, addName )
def cmdFirst(*args): topObject = cmds.textField(self._uiInstTopObject._field, q=1, tx=1) if cmds.textField(self._uiInstEndObject._field, q=1, en=1): endObject = cmds.textField(self._uiInstEndObject._field, q=1, tx=1) else: endObject = cmds.listRelatives(topObject, c=1)[0] upObject = cmds.textField(self._uiInstUpObject._field, q=1, tx=1) aimIndex = cmds.optionMenuGrp( self._uiInstAimAxis._menu, q=1, select=1) - 1 upIndex = cmds.optionMenuGrp( self._uiInstUpAxis._menu, q=1, select=1) - 1 worldUpIndex = cmds.optionMenuGrp( self._uiInstWorldUpAxis._menu, q=1, select=1) - 1 upTypeIndex = cmds.optionMenuGrp( self._uiInstUpType._menu, q=1, select=1) - 1 indexOver = False if upIndex >= 2: indexOver = True upIndex %= 2 if aimIndex % 3 <= upIndex: upIndex += 1 if indexOver: upIndex += 3 upType = ['object', 'objectRotation'][upTypeIndex] SetJointOrient(topObject, endObject, upObject, aimIndex, upIndex, upType, worldUpIndex)
def attachToSurfaceFromUI(close=True): """ Execute attachToSurface() from UI @param close: """ # Window window = 'attachToSurfaceUI' if not cmds.window(window, q=True, ex=1): raise UIError('AttachToSurface UI does not exist!!') # Get UI data surf = cmds.textFieldGrp('attachToSurfaceTFB', q=True, text=True) # Check surface if not glTools.utils.surface.isSurface(surf): raise UserInputError('Object "' + surf + '" is not a valid nurbs surface!!') trans = cmds.textFieldGrp('attachToSurfaceTransformTFB', q=True, text=True) pre = cmds.textFieldGrp('attachToSurfacePrefixTFG', q=True, text=True) uParam = cmds.floatFieldGrp('attachToSurfaceParamTFB', q=True, v1=True) vParam = cmds.floatFieldGrp('attachToSurfaceParamTFB', q=True, v2=True) closePnt = cmds.checkBoxGrp('attachToSurfaceClosePntCBG', q=True, v1=True) uAttr = cmds.textFieldGrp('attachToSurfaceUAttrTFG', q=True, text=True) vAttr = cmds.textFieldGrp('attachToSurfaceVAttrTFG', q=True, text=True) # Orient orient = cmds.checkBoxGrp('attachToSurfaceOrientCBG', q=True, v1=True) # Orient Options tanU = str.lower(str(cmds.optionMenuGrp('attachToSurfaceUAxisOMG', q=True, v=True))) tanV = str.lower(str(cmds.optionMenuGrp('attachToSurfaceVAxisOMG', q=True, v=True))) align = str.lower(str(cmds.optionMenuGrp('attachToSurfaceAlignToOMG', q=True, v=True))) # Execute command result = glTools.utils.attach.attachToSurface(surface=surf, transform=trans, uValue=uParam, vValue=vParam, useClosestPoint=closePnt, orient=orient, uAxis=tanU, vAxis=tanV, uAttr=uAttr, vAttr=vAttr, alignTo=align, prefix=pre) # Cleanup if close: cmds.deleteUI(window)
def pupMaya2mental(mentalVersion): destPath = os.getenv('DEST_PATH_WIN') rootPath, shadersPath = { 3.8:('c:/Program Files/Autodesk/mrstand3.8.1-adsk2011/bin', destPath + '/mental3.8.1'), 3.11:('c:/Program Files/Autodesk/mrstand3.11.1-adsk2014/bin', destPath + '/mental3.11.1') }[mentalVersion] os.putenv('RAY_COMMAND', '"' + rootPath + '/ray.exe"') os.putenv('MR_VERSION', str( mentalVersion ) ) miModulesPaths, binModulesPaths = modulesPath.getMiBinString() #os.putenv('MI_RAY_INCPATH', shadersPath + '/mi;' + miModulesPaths) #os.putenv('MI_LIBRARY_PATH', shadersPath + '/bin;' + binModulesPaths) #os.putenv('MI_ROOT', rootPath) mel.eval('pup_maya_2_mental(3);') mc.checkBoxGrp('pup_m2mrOverrideEnv', e=True, v1=1) mc.textFieldGrp('pup_m2mrMiRoot', e=True, tx= rootPath ) mc.textFieldGrp('pup_m2mrMiInclude', e=True, tx= shadersPath + '/mi;' + miModulesPaths ) mc.textFieldGrp('pup_m2mrMiLib', e=True, tx= shadersPath + '/bin;' + binModulesPaths ) mc.textFieldGrp('pup_m2mrMiDir', e=True, tx= "C:/Temp/" ) mc.optionMenuGrp('pup_m2mrVerboseM', e=True, sl=5) #mc.textFieldGrp('pup_m2mrCommandLine', e=True, tx= '-finalgather_passes 0 -memory 1000000' ) mc.textFieldGrp('pup_m2mrCommandLine', e=True, tx= '-memory 1000000' ) mc.checkBoxGrp('pup_m2mrUniqueMI', e=True, v1=1) mc.optionMenuGrp('pup_m2mrPriority', e=True, sl=3)
def applySplinify(jointChainOptions, startJointText, endJointText, boneIntSlider, splineTypeOptions, controlIntSlider, startColorSlider, endColorSlider, volumePrsvCheckbox, *args): jointChainOption = cmds.optionMenuGrp(jointChainOptions, q=1, value=1) startJoint = cmds.textFieldGrp(startJointText, q=1, text=1) endJoint = cmds.textFieldGrp(endJointText, q=1, text=1) boneCount = cmds.intSliderGrp(boneIntSlider, q=1, value=1) splineTypeOption = cmds.optionMenuGrp(splineTypeOptions, q=1, value=1) controlCount = cmds.intSliderGrp(controlIntSlider, q=1, value=1) startColor = cmds.colorSliderGrp(startColorSlider, q=1, rgbValue=1) endColor = cmds.colorSliderGrp(endColorSlider, q=1, rgbValue=1) preserveVolume = cmds.checkBoxGrp(volumePrsvCheckbox, q=1, value1=1) if startJoint == '' or endJoint == '': cmds.confirmDialog(title='Error', message="Please fill in all text fields.") return if startJoint == endJoint: cmds.confirmDialog(title='Error', message="Start and end joints are identical.") return wy_splinify.splinify(jointChainOption, startJoint, endJoint, boneCount, splineTypeOption, controlCount, startColor, endColor, preserveVolume)
def setTwinMatchAttrsFromUI(): ''' UI method for Pose Match setup tools Setup pose twin attributes from UI ''' # Get selection sel = mc.ls(sl=True,type=['transform','joint']) if not sel: return # Window win = 'matchRulesUI' if not mc.window(win,q=True,ex=True): raise UserInputError('Pose Match UI does not exist!!') # Pivot pivotObj = str(mc.textFieldButtonGrp('matchRulesPivotTFB',q=True,text=True)) # Axis axis = str(mc.optionMenuGrp('matchRulesAxisOMG',q=True,v=True)).lower() # Mode mode = mc.optionMenuGrp('matchRulesModeOMG',q=True,sl=True) - 1 # Search/Replace search = str(mc.textFieldGrp('matchRulesSearchTFG',q=True,text=True)) replace = str(mc.textFieldGrp('matchRulesReplaceTFG',q=True,text=True)) # Set match rules attributes glTools.common.match.Match().setTwinMatchAttrs(sel,pivotObj,axis,mode,search,replace)
def makeDropDown( scrollListName ): """Creates file type selector""" cmds.optionMenuGrp(scrollListName+'TypeSelect', label='File Type ' )#, changeCommand= lambda *args:changeFileType(), bgc=[1.0,1.0,0.0] cmds.menuItem(label='FBX') cmds.menuItem(label='OBJexport') cmds.menuItem(label='mayaAscii') cmds.menuItem(label='mayaBinary')
def createCNCWindow(preFileDir): """该函数实现创建布料窗体的创建 Description: 无 Arguments: presetName:某个正确的布料预设路径 Returns: 无 """ createNClothWin = cmds.window(title = "Create NCloth", iconName = "CN", widthHeight = (420, 80)) cNFormLayout = cmds.formLayout() nucleusButton = mel.eval('nucleusSolverButton("")') cmds.optionMenuGrp(nucleusButton, edit = True, cw = [1,50]) cButtonRowLayout = cmds.rowLayout(numberOfColumns = 2, columnAttach = [(1, "right", 0),(2, "right", 0)], columnWidth=[(1, 280), (2, 80)]) createNButton = cmds.button(label = "Create", width = 75, command = (lambda x:createNClothP(preFileDir, createNClothWin))) closeNButton = cmds.button(label = "Close", width = 75, command = ('cmds.deleteUI(\"' + createNClothWin + '\", window=True)')) cmds.setParent("..") cmds.formLayout(cNFormLayout, edit=True, attachForm=[(nucleusButton, "top", 12), (nucleusButton, "left", 8), (nucleusButton, "right", 8), (cButtonRowLayout, "bottom", 12),(cButtonRowLayout, "left", 24), (cButtonRowLayout, "right", 24)], attachControl=[(cButtonRowLayout, "top", 12, nucleusButton)]) cmds.setParent("..") cmds.showWindow(createNClothWin)
def _setDropDown(self, nodeName): """ Set the values of the shader drop down """ nodeName = nodeName.split('.')[0] if cmds.columnLayout("foobar", query=True, exists=True): cmds.deleteUI("foobar") cmds.columnLayout("foobar") attrs = cmds.listAttr("%s.shaders" % nodeName, multi=True) shaderFrom = cmds.getAttr("%s.shaderFrom" % nodeName) shaderMenu = cmds.optionMenuGrp(label='Shader: ') if attrs: cmds.menuItem(label="None") for attr in attrs: index = attr.split('[')[1].replace(']', '') at = cmds.getAttr("%s.%s" % (nodeName, attr)) cmds.menuItem(label=at) cmds.optionMenuGrp(shaderMenu, edit=True, changeCommand=functools.partial( self._setDropDownAttr, node=nodeName, menu=shaderMenu)) if attrs and shaderFrom != "": cmds.optionMenuGrp(shaderMenu, edit=True, value=shaderFrom)
def autoUI(*args): global procressControl # Head UI ui = cmds.columnLayout(adj=True, enable=False) # Body UI cmds.frameLayout(l='Joint Labels', mh=mar, mw=mar, bgs=True, cl=True) a1 = cmds.button(l='Toggle Visibility', c=utils.toggleJointLabel) a2 = cmds.button(l='Show', c=lambda *x: mel.eval('displayJointLabels 4;')) a3 = cmds.button(l='Hide', c=lambda *x: mel.eval('displayJointLabels 3;')) autoRow([a1, a2, a3]) # Add Label UI divider('Add Label') cmds.rowLayout(nc=2, adj=1, cat=[1, 'right', -4], rat=[1, 'both', 0]) om1 = cmds.optionMenuGrp(adj=1, rat=[1, 'both', -2], cat=[1, 'right', 0], cc=lambda *x: utils.jointLabel().addTypeFromUI(cmds.optionMenuGrp(om1, q=True, sl=True))) for l in utils.jointLabel().masterList: cmds.menuItem(l=l, dtg=l) cmds.button(l='+', w=20, c=lambda *x: utils.jointLabel().addTypeFromUI(cmds.optionMenuGrp(om1, q=True, sl=True))) cmds.setParent('..') #cmds.button(l='Create Rig', c=parts.autoRig) cmds.setParent('..') # End UI cmds.setParent('..') return ui
def refresh(self): # PrimPath cmds.textFieldGrp(self.primPath, edit=True, text=str(self.prim.GetPath())) # Kind model = Usd.ModelAPI(self.prim) primKind = model.GetKind() if not primKind: # Special case to handle the empty string (for meta data value empty). cmds.optionMenuGrp(self.kind, edit=True, select=1) else: cmds.optionMenuGrp(self.kind, edit=True, value=primKind) # Active cmds.checkBoxGrp(self.active, edit=True, value1=self.prim.IsActive()) # Instanceable cmds.checkBoxGrp(self.instan, edit=True, value1=self.prim.IsInstanceable()) # All other metadata types for k in self.extraMetadata: v = self.prim.GetMetadata( k) if k != 'customData' else self.prim.GetCustomData() cmds.textFieldGrp(self.extraMetadata[k], edit=True, text=str(v))
def updateBasicData(): """ """ # Check SkinClusterData skinData = glTools.gl_global.glSkinClusterData if not skinData: print('No SkinClusterData to load...') return # Get Basic Data from UI skinMethod = cmds.optionMenuGrp('skinCluster_methodOMG', q=True, sl=True) useComponents = cmds.checkBoxGrp('skinCluster_componentCBG', q=True, v1=True) normalizeWt = cmds.optionMenuGrp('skinCluster_normalizeOMG', q=True, sl=True) deformNormal = cmds.checkBoxGrp('skinCluster_deformNorcmdsBG', q=True, v1=True) # Update Basic SkinCluster Data skinData._data['attrValueDict']['skinningMethod'] = skinMethod - 1 skinData._data['attrValueDict']['useComponents'] = useComponents skinData._data['attrValueDict']['normalizeWeights'] = normalizeWt - 1 skinData._data['attrValueDict']['deformUserNormals'] = deformNormal
def cmdCreateRivet(self, *args ): meshName = cmds.textFieldGrp( self.tf_meshName, q=1, tx=1 ) centerIndicesStr = cmds.textFieldGrp( self.tf_centerIndices, q=1, tx=1 ) aimIndicesStr = cmds.textFieldGrp( self.tf_aimIndices, q=1, tx=1 ) upIndicesStr = cmds.textFieldGrp( self.tf_upIndices, q=1, tx=1 ) aimPivIndicesStr = cmds.textFieldGrp( self.tf_aimPivIndices, q=1, tx=1 ) upPivIndicesStr = cmds.textFieldGrp( self.tf_upPivIndices, q=1, tx=1 ) centerIndices = [] aimPivIndices = [] aimIndices = [] upPivIndices = [] upIndices = [] for indexStr in centerIndicesStr.split( ',' ): centerIndices.append( int( indexStr ) ) for indexStr in aimIndicesStr.split( ',' ): aimIndices.append( int( indexStr ) ) for indexStr in upIndicesStr.split( ',' ): upIndices.append( int( indexStr ) ) if aimPivIndicesStr: for indexStr in aimPivIndicesStr.split( ',' ): aimPivIndices.append( int( indexStr ) ) if upPivIndicesStr: for indexStr in upPivIndicesStr.split( ',' ): upPivIndices.append( int( indexStr ) ) aimIndex = cmds.optionMenuGrp( self.op_aimAxis, q=1, select=1 )-1 upIndex = cmds.optionMenuGrp( self.op_upAxis, q=1, select=1 )-1 print aimIndex, upIndex cmdModel.createRivet( meshName, centerIndices, aimPivIndices, aimIndices, upPivIndices, upIndices, aimIndex, upIndex )
def _test_for_hik_issues(ref_): """Fix any human ik issues. Some MotionBurner files have been delivered with human ik left driving the MotionBurner skeleton. This will check for any human ik driver and disable it if it is found. Args: ref_ (FileRef): reference to update """ _hip_rx = ref_.get_plug('Hip_L.rx') if _hip_rx.list_incoming(type='animCurve'): print 'NO HIK ISSUES' return print 'HIK ISSUES DETECTED' # Find source option menu mel.eval('HIKCharacterControlsTool') _hik_src_opt = None for _grp in cmds.lsUI(long=True, type='optionMenuGrp'): if _grp.endswith('|hikSourceList'): _hik_src_opt = _grp.split('|')[-1] break assert _hik_src_opt print 'HIK SOURCE OPTION', _hik_src_opt # Apply None cmds.optionMenuGrp(_hik_src_opt, edit=True, value=" None") mel.eval("hikUpdateCurrentSourceFromUI()") mel.eval("hikUpdateContextualUI()") # assert _hip_rx.list_incoming(type='animCurve') print 'DISABLED HUMAN IK'
def snapToSurfaceFromUI(close=False): ''' Execute snapToSurface() from UI ''' # Window window = 'snapToSurfaceUI' if not mc.window(window,q=True,ex=1): raise UIError('SnapToSurface UI does not exist!!') # Get UI data surface = mc.textFieldGrp('snapToSurfaceTFB',q=True,text=True) # Check surface if not glTools.utils.surface.isSurface(surface): raise UserInputError('Object "'+surface+'" is not a valid nurbs surface!!') # Orient orient = mc.checkBoxGrp('snapToSurfaceOrientCBG',q=True,v1=True) # Orient Options tanU = str.lower(str(mc.optionMenuGrp('snapToSurfaceUAxisOMG',q=True,v=True))) tanV = str.lower(str(mc.optionMenuGrp('snapToSurfaceVAxisOMG',q=True,v=True))) align = str.lower(str(mc.optionMenuGrp('snapToSurfaceAlignToOMG',q=True,v=True))) # Get User Selection sel = mc.ls(sl=True,fl=True) # Execute Command glTools.utils.surface.snapPtsToSurface(surface,sel) # Orient if orient: for obj in sel: try: glTools.utils.surface.orientToSurface(surface=surface,obj=obj,useClosestPoint=True,tangentUAxis=tanU,tangentVAxis=tanV,alignTo=align) except: print('Object "'+obj+'" is not a valid transform!! Unable to orient!') # Cleanup if close: mc.deleteUI(window)
def createUI(self): self._extensionsMenu = cmds.optionMenuGrp( ad2=2, label=maya.stringTable['y_inputSpaceRulesUI.kExtensionsMenuLabel'], changeCommand=self.onExtensionChange) # Fill in the extensions. for extension in FilePathRule._extensionsList: cmds.menuItem(label=extension) # Using the command, the user could select a file extension # which does not exist. try: cmds.optionMenuGrp(self._extensionsMenu, edit=True, value=self.extension) except RuntimeError, err: cmds.optionMenuGrp(self._extensionsMenu, edit=True, value=FilePathRule._extensionsList[0]) err = maya.stringTable['y_inputSpaceRulesUI.kInvalidNode'] msg = cmds.format(err, stringArg=(self.extension, FilePathRule._extensionsList[0])) cmds.warning(msg)
def attachToMeshFromUI(close=False): ''' Execute attachToMesh() from UI ''' # Window window = 'attachToMeshUI' if not mc.window(window,q=True,ex=1): raise UIError('SnapToSurface UI does not exist!!') # Get UI data mesh = mc.textFieldGrp('attachToMeshTFB',q=True,text=True) # Check surface if not glTools.utils.mesh.isMesh(mesh): raise Exception('Object "'+surface+'" is not a valid nurbs surface!!') # Transform obj = mc.textFieldGrp('attachToMeshTransformTFB',q=True,text=True) # Prefix pre = mc.textFieldGrp('attachToMeshPrefixTFG',q=True,text=True) # Orient orient = mc.checkBoxGrp('attachToMeshOrientCBG',q=True,v1=True) # Orient Options normAx = str.lower(str(mc.optionMenuGrp('attachToMeshNormOMG',q=True,v=True))) tanAx = str.lower(str(mc.optionMenuGrp('attachToMeshTanOMG',q=True,v=True))) # Execute command glTools.utils.attach.attachToMesh(mesh=mesh,transform=obj,useClosestPoint=True,orient=orient,normAxis=normAx,tangentAxis=tanAx,prefix=pre) # Cleanup if close: mc.deleteUI(window)
def attachWindow(self): item = cmds.ls('*Blend*JNT*', typ='joint') win = 'AttachWindow' if cmds.window(win, ex=True) is True: cmds.deleteUI(win) cmds.window(win, t=win, w=250, h=350, s=False) cmds.columnLayout(adj=True) cmds.optionMenuGrp('attachMenu', label='Select ', columnWidth=(1, 50)) for e in item: cmds.menuItem(label=e) cmds.setParent('..') cmds.columnLayout() cmds.button(l='Build It!', w=250, ann='Build The Extra BipedRig', c='eb=extraRig()\neb.build()') cmds.setParent('..') cmds.showWindow(win) return
def __init__(self) : #check to see if the window exists: if cmds.window("Box2DTool", exists = True): cmds.deleteUI("Box2DTool") #create the window: window = cmds.window("Box2DTool", title = 'Box2D Tool', sizeable = False) #create the main layout: cmds.columnLayout(columnWidth = 300, adjustableColumn = False, columnAttach = ('both', 10)) #make dockable: allowedAreas = ['right', 'left'] cmds.dockControl( 'Box2D Tool', area='left', content=window, allowedArea=allowedAreas ) self.dim=cmds.floatFieldGrp('dim', numberOfFields=2, label='Dimension', extraLabel='pixel', value1=5, value2=1 ) self.dim=cmds.floatFieldGrp('friction', numberOfFields=1, label='Friction', value1=0.2 ) self.dim=cmds.floatFieldGrp('restitution', numberOfFields=1, label='restitution', value1=0.0 ) self.dim=cmds.floatFieldGrp('density', numberOfFields=1, label='density', value1=0.0 ) cmds.separator() self.dim=cmds.floatFieldGrp('rotation', numberOfFields=1, label='rotation', value1=0.0 ) cmds.separator() cmds.optionMenuGrp( "bodyType",l='Body Type' ) cmds.menuItem(label='b2_staticBody'); cmds.menuItem(label='b2_kinematicBody'); cmds.menuItem(label='b2_dynamicBody'); cmds.button(label = "PlaceBlock", w = 100, h = 25, c = self.placeBlock) cmds.separator() cmds.button( label='Export', command=self.export )
def attachToMeshFromUI(close=False): ''' Execute attachToMesh() from UI ''' # Window window = 'attachToMeshUI' if not mc.window(window,q=True,ex=1): raise UIError('SnapToSurface UI does not exist!!') # Get UI data mesh = mc.textFieldGrp('attachToMeshTFB',q=True,text=True) # Check surface if not glTools.utils.mesh.isMesh(mesh): raise UserInputError('Object "'+surface+'" is not a valid nurbs surface!!') # Transform obj = mc.textFieldGrp('attachToMeshTransformTFB',q=True,text=True) # Prefix pre = mc.textFieldGrp('attachToMeshPrefixTFG',q=True,text=True) # Orient orient = mc.checkBoxGrp('attachToMeshOrientCBG',q=True,v1=True) # Orient Options normAx = str.lower(str(mc.optionMenuGrp('attachToMeshNormOMG',q=True,v=True))) tanAx = str.lower(str(mc.optionMenuGrp('attachToMeshTanOMG',q=True,v=True))) # Execute command glTools.utils.attach.attachToMesh(mesh=mesh,transform=obj,useClosestPoint=True,orient=orient,normAxis=normAx,tangentAxis=tanAx,prefix=pre) # Cleanup if close: mc.deleteUI(window)
def procUI(self, name, parent, collapse=False): """Create panel UI controls - processing. """ mc.frameLayout(width=400, collapsable=True, cl=collapse, borderStyle="etchedIn", label="Processing") mc.columnLayout(name) mc.separator(height=4, style="none") mc.rowLayout(numberOfColumns=1, columnAttach1="left", columnAlign1="both", columnOffset1=142) mc.checkBox("asset", label="Group into Asset Container", value=True) mc.setParent(name) mc.separator(width=396, height=12, style="in") mc.checkBoxGrp("vrayAttr", label="Add Vray Attributes: ", labelArray2=['Gamma', 'Negative Colours'], valueArray2=[False, False], numberOfCheckBoxes=2, columnWidth3=[140, 78, 156]) mc.separator(height=4, style="none") mc.optionMenuGrp("txType", label="Combined Texture: ") for item in self.txTypeItemList: mc.menuItem(label=item) mc.separator(height=8, style="none") mc.setParent(parent)
def commonOptUI(self, name, parent, collapse=False): """ Create common options panel UI controls. """ mc.frameLayout("commonOptRollout", width=400, collapsable=True, cl=collapse, borderStyle="etchedIn", label="Common Options") mc.columnLayout(name) mc.separator(height=4, style="none") mc.optionMenuGrp("cameraPresets", label="Camera Preset: ") mc.menuItem(label="Default") mc.menuItem(label=os.environ['IC_SHOT']) for item in self.cp.getPresets(): mc.menuItem(label=item) mc.separator(width=396, height=12, style="in") mc.rowLayout(numberOfColumns=2, columnAttach2=["left", "left"], columnAlign2=["both", "both"], columnOffset2=[142, 8]) mc.checkBox( "createRig", label="Create Camera Rig", value=mc.optionVar( q='icCreateCameraRig' ), onCommand=lambda *args: mc.optionVar( iv=('icCreateCameraRig', 1) ), offCommand=lambda *args: mc.optionVar( iv=('icCreateCameraRig', 0) ) ) mc.setParent(name) mc.rowLayout(numberOfColumns=2, columnAttach2=["left", "left"], columnAlign2=["both", "both"], columnOffset2=[142, 8]) mc.checkBox( "physicalCam", label="Add V-Ray Physical Camera Attributes", value=mc.optionVar( q='icAddVRayPhysicalCamera' ), enable=mc.pluginInfo( "vrayformaya", query=True, loaded=True ), onCommand=lambda *args: mc.optionVar( iv=('icAddVRayPhysicalCamera', 1) ), offCommand=lambda *args: mc.optionVar( iv=('icAddVRayPhysicalCamera', 0) ) ) mc.setParent(name) mc.separator(height=4, style="none") mc.setParent(parent)
def stretchyIkLimbUI(): ''' UI for stretchyIkLimb() ''' # Window window = 'stretchyIkLimbUI' if mc.window(window,q=True,ex=1): mc.deleteUI(window) window = mc.window(window,t='Stretchy IK Limb') # Layout FL = mc.formLayout() # UI Elements #--- # IK Handle handleTFB = mc.textFieldButtonGrp('stretchyIkLimbTFB',label='IK Handle',text='',buttonLabel='Load Selected') # Prefix prefixTFG = mc.textFieldGrp('stretchyIkLimbPrefixTFG',label='Prefix', text='') # Control controlTFB = mc.textFieldButtonGrp('stretchyIkLimbControlTFB',label='Control Object',text='',buttonLabel='Load Selected') # Scale Axis axisList = ['X','Y','Z'] scaleAxisOMG = mc.optionMenuGrp('stretchyIkLimbAxisOMG',label='Joint Scale Axis') for axis in axisList: mc.menuItem(label=axis) mc.optionMenuGrp(scaleAxisOMG,e=True,sl=1) # Scale Attr scaleAttrTFB = mc.textFieldButtonGrp('stretchyIkLimbScaleAttrTFB',label='Scale Attribute',text='',buttonLabel='Load Selected') # Separator SEP = mc.separator(height=10,style='single') # Buttons createB = mc.button('stretchyIkLimbCreateB',l='Create',c='glTools.ui.ik.stretchyIkLimbFromUI(False)') cancelB = mc.button('stretchyIkLimbCancelB',l='Cancel',c='mc.deleteUI("'+window+'")') # UI callback commands mc.textFieldButtonGrp(handleTFB,e=True,bc='glTools.ui.utils.loadTypeSel("'+handleTFB+'","'+prefixTFG+'",selType="ikHandle")') mc.textFieldButtonGrp(controlTFB,e=True,bc='glTools.ui.utils.loadObjectSel("'+controlTFB+'")') mc.textFieldButtonGrp(scaleAttrTFB,e=True,bc='glTools.ui.utils.loadChannelBoxSel("'+scaleAttrTFB+'")') # Form Layout - MAIN mc.formLayout(FL,e=True,af=[(handleTFB,'top',5),(handleTFB,'left',5),(handleTFB,'right',5)]) mc.formLayout(FL,e=True,ac=[(prefixTFG,'top',5,handleTFB)]) mc.formLayout(FL,e=True,af=[(prefixTFG,'left',5),(prefixTFG,'right',5)]) mc.formLayout(FL,e=True,ac=[(controlTFB,'top',5,prefixTFG)]) mc.formLayout(FL,e=True,af=[(controlTFB,'left',5),(controlTFB,'right',5)]) mc.formLayout(FL,e=True,ac=[(scaleAxisOMG,'top',5,controlTFB)]) mc.formLayout(FL,e=True,af=[(scaleAxisOMG,'left',5),(scaleAxisOMG,'right',5)]) mc.formLayout(FL,e=True,ac=[(scaleAttrTFB,'top',5,scaleAxisOMG)]) mc.formLayout(FL,e=True,af=[(scaleAttrTFB,'left',5),(scaleAttrTFB,'right',5)]) mc.formLayout(FL,e=True,ac=[(SEP,'top',5,scaleAttrTFB)]) mc.formLayout(FL,e=True,af=[(SEP,'left',5),(SEP,'right',5)]) mc.formLayout(FL,e=True,ac=[(createB,'top',5,SEP)]) mc.formLayout(FL,e=True,af=[(createB,'left',5),(createB,'bottom',5)]) mc.formLayout(FL,e=True,ap=[(createB,'right',5,50)]) mc.formLayout(FL,e=True,ac=[(cancelB,'top',5,SEP)]) mc.formLayout(FL,e=True,af=[(cancelB,'right',5),(cancelB,'bottom',5)]) mc.formLayout(FL,e=True,ap=[(cancelB,'left',5,50)]) # Show Window mc.showWindow(window)
def layoutForLayer(self, layer): """ Build the UI for the specified layer. We need to access the UI data later in callbacks. So we store the data inside a dictionary for reference layer. """ ui = {} #frlt = cmds.frameLayout( collapsable=True, borderStyle="out", label="Layer %d" % layer ) locLayer = maya.stringTable['y_cameraSetTool.kLayerNumberString'] frlt = cmds.frameLayout(collapsable=True, label=locLayer + " %d" % layer) ui['frame'] = frlt self._layerFrameUI.append(ui) cmds.columnLayout(adjustableColumn=True) ui['layerPrefix'] = cmds.textFieldGrp( label=maya.stringTable['y_cameraSetTool.kLabelPrefix'], text=self._template.layerPrefixForLayer(layer)) ui['menuGrp'] = cmds.optionMenuGrp( label=maya.stringTable['y_cameraSetTool.kRigType']) opValue = rigTypeLayer = self._template.rigTypeForLayer(layer) rigs = cmds.stereoRigManager(listRigs=True) for r in rigs: cmds.menuItem(label=r) if not opValue in rigs: cmds.menuItem(label=opValue) cmds.optionMenuGrp(ui['menuGrp'], edit=True, value=opValue) # For some reason, the only way I can get the check box to line # up is if I embed it in a form layout. # form = cmds.formLayout() ui['ckbox'] = cmds.checkBox( label=maya.stringTable['y_cameraSetTool.kAutoCreate']) ui['icon'] = cmds.iconTextButton( style="iconOnly", image="removeRenderable.png", annotation=maya.stringTable['y_cameraSetTool.kDelete'], width=20, height=20) cmds.checkBox(ui['ckbox'], edit=True, value=self._template.autoCreateSet(layer)) cmds.formLayout(form, edit=True, attachForm=[(ui['ckbox'], "left", 125), (ui['ckbox'], "top", 0), (ui['ckbox'], "bottom", 0), (ui['icon'], "top", 0), (ui['icon'], "bottom", 0), (ui['icon'], "right", 5)], attachNone=[(ui['ckbox'], "right"), (ui['icon'], "left")]) self._setCallbacks(layer) cmds.setParent('..') cmds.setParent('..') cmds.setParent('..')
def uvSetOptions(self): window_name = "uvSetOptions" if cmds.window(window_name, q=True, exists=True): cmds.deleteUI(window_name) self.optionWindow = cmds.window(window_name, title="Lightmap Options") tabs = cmds.tabLayout(innerMarginWidth=5, innerMarginHeight=5) standardLayout = cmds.columnLayout(parent=self.optionWindow, adj=True) self.uvSetChoice = cmds.optionMenuGrp(label="Source UV Set") for uvSet in self.uvList: #lists selections' uv sets cmds.menuItem(label=uvSet) self.lightmapBox = cmds.textFieldGrp(label="New UV Set Name", text=self.lightmap) self.presetSelect = cmds.optionMenuGrp(self.presetSelect, label="Spacing Presets", cc=self.presetValue) for preset in self.spacingPresets: cmds.menuItem(label=preset) cmds.floatSliderGrp(self.shellSpacingSlider, label="Percentage Space:", v=3.200, step=0.001, max=5.000, field=True) print cmds.floatSliderGrp(self.shellSpacingSlider, q=True, v=True) cmds.button(label="Generate Lightmap", width=200, c=self.copyAndLayoutCheck) advancedLayout = cmds.columnLayout(parent=self.optionWindow, adj=True) layoutObjectsCollection = cmds.radioCollection() #radial button, creates new layout layoutObjectsCollection_layout = cmds.columnLayout() cmds.text(label = "Layout objects:", p=layoutObjectsCollection_layout) rbl = cmds.radioButton(label="Per object(overlapping)", p=layoutObjectsCollection_layout, onc=lambda *args: self.perObjectLayout(0)) rbl = cmds.radioButton(label="Single or multiple objects(non-overlapping)", p=layoutObjectsCollection_layout, onc=lambda *args: self.perObjectLayout(1), sl=True ) prescaleCollection = cmds.radioCollection() #radial button, creates new layout prescaleCollection_layout = cmds.columnLayout() cmds.text(label = "Prescale:", p=prescaleCollection_layout) rbl = cmds.radioButton(label="None", p=prescaleCollection_layout, onc=lambda *args: self.prescaleLayout(0)) rbl = cmds.radioButton(label="Object", p=prescaleCollection_layout, onc=lambda *args: self.prescaleLayout(1)) rbl = cmds.radioButton(label="World", p=prescaleCollection_layout, onc=lambda *args: self.prescaleLayout(2), sl=True) collection = cmds.radioCollection() #radial button, creates new layout collection_layout = cmds.columnLayout() cmds.text(label = "Shell Layout:", p=collection_layout) rbl = cmds.radioButton(label="Into region", p=collection_layout, onc=lambda *args: self.shellLayout(0), sl=True) rbl = cmds.radioButton(label="Along U", p=collection_layout, onc=lambda *args: self.shellLayout(1)) rbl = cmds.radioButton(label="None", p=collection_layout, onc=lambda *args: self.shellLayout(2)) collection = cmds.radioCollection() #radial button, creates new layout collection_layout = cmds.columnLayout() cmds.text(label = "Scale:", p=collection_layout) rbl = cmds.radioButton(label="None", p=collection_layout, onc=lambda *args: self.scaleLayout(0)) rbl = cmds.radioButton(label="Uniform", p=collection_layout, onc=lambda *args: self.scaleLayout(1), sl=True) rbl = cmds.radioButton(label="Stretch", p=collection_layout, onc=lambda *args: self.scaleLayout(2)) rotateCollection = cmds.radioCollection() #radial button, creates new layout rotateCollection_layout = cmds.columnLayout() cmds.text(label = "Rotate:", p=rotateCollection_layout) rbl = cmds.radioButton(label="None", p=rotateCollection_layout, onc=lambda *args: self.rotationLayout(0)) rbl = cmds.radioButton(label="90 degrees", p=rotateCollection_layout, onc=lambda *args: self.rotationLayout(1), sl=True) rbl = cmds.radioButton(label="Free", p=rotateCollection_layout, onc=lambda *args: self.rotationLayout(2)) cmds.tabLayout( tabs, edit=True, tabLabel=((standardLayout, 'General'), (advancedLayout, 'Advanced')) ) cmds.showWindow(self.optionWindow)
def assetUi(self, prntLo): ''' Build ui for switching texture for asset. ''' self.assetWdgNameDic['assetOptMenuGrp'] = cmds.optionMenuGrp(p = prntLo, label = self.assetNamespace) cmds.optionMenuGrp(self.assetWdgNameDic['assetOptMenuGrp'], e = True, cc = partial(self.texResOptCC, self.assetWdgNameDic['assetOptMenuGrp']), columnWidth = [(1, 120)], columnAttach = [(1, 'left', 5), (2, 'left', 5)]) cmds.menuItem(label = 'high') cmds.menuItem(label = 'low')
def toggleComponentControls(self, componentType, option): mc.optionMenuGrp("%sItems" % componentType, edit=True, enable=option) if option == True: self.toggleComponentSubControls(componentType) else: mc.textField("%sInstObj" % componentType, edit=True, enable=False) mc.symbolButton("%sLoadSel" % componentType, edit=True, enable=False)
def importLocatorPoint(self): ployName = rig.textField(self.ploygonTF, q=True, tx=True) col = rig.intField(self.columnIF, q=True, v=True) row = rig.intField(self.rowIF, q=True, v=True) conPre = rig.textField(self.inputName, q=True, tx=True) size = rig.floatSliderGrp(self.inputSizeFSG, q=True, v=True) shape = rig.optionMenuGrp(self.inputShapeOM, q=True, sl=True) color = rig.optionMenuGrp(self.inputColorOM, q=True, sl=True) SM_importControllerTem(ployName, col, row, conPre, size, shape, color)
def __switchMaterial(): global convertFrom global convertTo temp = '' temp = convertTo convertTo = convertFrom convertFrom = temp convertFromOptionMenu mc.optionMenuGrp('convertFromOptionMenu', e=1, v=convertFrom) mc.optionMenuGrp('convertToOptionMenu', e=1, v=convertTo)
def setCurrentCharacter(char): if not isCharacterDefinition(char): raise Exception('%s is not a valid HIKCharacterNode!' % char) cmds.optionMenuGrp("hikCharacterList", e=True, v=char) mel.eval('hikUpdateCurrentCharacterFromUI()') mel.eval('hikUpdateContextualUI()') current_char = getCurrentCharacter() return current_char
def resetOrientJointVariables(*args): #Fixup options cmds.optionVar(iv=("orientJointHeirarchyOV", 1)) cmds.checkBox("heirarchyCB", e=True, v=1) cmds.optionVar(iv=("OV_upVectorType", 3)) cmds.optionMenuGrp("OMG_upVectorType", e=True, sl=3) cmds.optionVar(iv=("OV_aimVectorType", 1)) cmds.optionMenuGrp("OMG_aimVectorType", e=True, sl=1)
def exportPointDataUI(): """ Main UI for the exportPointData module """ # Get current frame range startFrame = cmds.playbackOptions(q=True, min=True) endFrame = cmds.playbackOptions(q=True, max=True) # Window window = 'exportPointDataUI' if cmds.window(window, q=True, ex=True): cmds.deleteUI(window) window = cmds.window(window, t='Export Point Data', s=False) # Layout CL = cmds.columnLayout(adj=True) # UI Elements pathTBG = cmds.textFieldButtonGrp('exportPoint_pathTBG', label='Path', buttonLabel='...') camTBG = cmds.textFieldButtonGrp('exportPoint_camTBG', label='Camera (2D only)', buttonLabel='Select') rangeIFG = cmds.intFieldGrp('exportPoint_rangeIFG', nf=2, label='Frame Range', v1=startFrame, v2=endFrame) resIFG = cmds.intFieldGrp('exportPoint_resIFG', nf=2, label='Resolution', v1=2348, v2=1152) refIFG = cmds.intFieldGrp('exportPoint_refIFG', nf=1, label='Offset Base Frame', v1=startFrame) resOMG = cmds.optionMenuGrp('exportPoint_resOMG', label='Resolution Preset') export2DB = cmds.button('exportPoint_export2DB', label='Export 2D Point Data', c='glTools.ui.exportPointData.export2DFromUI()') export2DOffsetB = cmds.button('exportPoint_export2DOffsetB', label='Export 2D Offset Data', c='glTools.ui.exportPointData.export2DOffsetFromUI()') export3DB = cmds.button('exportPoint_export3DB', label='Export 3D Point Data', c='glTools.ui.exportPointData.export3DFromUI()') export3DRotB = cmds.button('exportPoint_export3DRotB', label='Export 3D Rotate Data', c='glTools.ui.exportPointData.export3DRotationFromUI()') closeB = cmds.button('exportPoint_closeB', label='Close', c='cmds.deleteUI("' + window + '")') # Resolution presets cmds.setParent(resOMG) cmds.menuItem(label='WIDE(full)') cmds.menuItem(label='WIDE(half)') cmds.menuItem(label='WIDE(quarter)') # UI Callbacks cmds.textFieldButtonGrp(pathTBG, e=True, bc='glTools.ui.utils.exportFolderBrowser("' + pathTBG + '")') cmds.textFieldButtonGrp(camTBG, e=True, bc='glTools.ui.utils.loadTypeSel("' + camTBG + '",selType="transform")') cmds.optionMenuGrp(resOMG, e=True, cc='glTools.tools.exportPointData.setResolution()') # Popup menu cmds.popupMenu(parent=camTBG) for cam in cmds.ls(type='camera'): if cmds.camera(cam, q=True, orthographic=True): continue camXform = cmds.listRelatives(cam, p=True, pa=True)[0] cmds.menuItem(l=camXform, c='cmds.textFieldButtonGrp("exportPoint_camTBG",e=True,text="' + camXform + '")') # Show Window cmds.window(window, e=True, w=435, h=275) cmds.showWindow(window)
def getAttachDir(projectOptionMenu, cameraOptionMenu): """得到服务器上传路径""" projectName = cmds.optionMenuGrp(projectOptionMenu, query = True, value = True) cameraName = cmds.optionMenuGrp(cameraOptionMenu, query = True, value = True) if projectName == "None" or projectName == "Can't Find " + serverLetter or cameraName == "None": return "" else: tFolder = serverLetter + projectName + "/Data/" + cameraName + "/solCache/" #服务器项目文件路径 if os.path.exists(tFolder): return tFolder else: return ""
def takeUvSnapshot(self, *args): fileName = cmds.textField(self.uvImagePath, q=True, text=True) resolution = cmds.optionMenuGrp( self.uvImageResolution, q=True, value=True) imageFormat = cmds.optionMenuGrp( self.uvImageFormat, q=True, value=True) tileNumber = cmds.optionMenuGrp( self.uvImageTileNumber, q=True, value=True) if (tileNumber[3] == "0" or tileNumber[3] == 0): uMin = 9.0 vMin = float(int(tileNumber[2]) - 1) else: uMin = float(int(tileNumber[3]) - 1) vMin = float(tileNumber[2]) uMax = float(uMin + 1.0) vMax = float(vMin + 1.0) if resolution == "8k": xRes = 8192 yRes = 8192 elif resolution == "4k": xRes = 4096 yRes = 4096 elif resolution == "2k": xRes = 2048 yRes = 2048 elif resolution == "1k": xRes = 1024 yRes = 1024 elif resolution == "512": xRes = 512 yRes = 512 cmds.uvSnapshot( name=fileName, aa=True, fileFormat=imageFormat, xResolution=xRes, yResolution=yRes, overwrite=True, redColor=255, greenColor=255, blueColor=255, uMax=uMax, uMin=uMin, vMax=vMax, vMin=vMin)
def updateUICondition( *args ): autoAxis = cmds.checkBox( WinA_Global.chk_autoAxis, q=1, v=1 ) if autoAxis: cmds.optionMenuGrp( WinA_Global.omg_aimAxis, e=1, en=0 ) else: cmds.optionMenuGrp( WinA_Global.omg_aimAxis, e=1, en=1 ) createUp = cmds.checkBox( WinA_Global.chk_createUp, q=1, v=1 ) if createUp: cmds.checkBox( WinA_Global.chk_editUp, e=1, en=1 ) else: cmds.checkBox( WinA_Global.chk_editUp, e=1, en=0 )
def create(self): if cmds.window( self.winName, ex=1 ): cmds.deleteUI( self.winName, wnd=1 ) cmds.window( self.winName, title= self.title ) cmds.columnLayout() columnWidth = self.width -2 firstWidth = ( columnWidth - 2 ) * 0.4 secondWidth = ( columnWidth -2 ) - firstWidth cmds.rowColumnLayout( nc=1, cw=[(1,self.width-2)]) tf_meshName = cmds.textFieldGrp( l='Target Mesh : ', cw=[(1,firstWidth),(2,secondWidth)] ); UI_meshPopup() tf_centerIndices = cmds.textFieldGrp( l='Center Indices : ', cw=[(1,firstWidth),(2,secondWidth)] ); UI_indicesPopup( tf_meshName ) tf_aimIndices = cmds.textFieldGrp( l='Aim Indices : ', cw=[(1,firstWidth),(2,secondWidth)] ); UI_indicesPopup( tf_meshName ) tf_upIndices = cmds.textFieldGrp( l='Up Indices : ', cw=[(1,firstWidth),(2,secondWidth)] ); UI_indicesPopup( tf_meshName ) cmds.separator() tf_aimPivIndices = cmds.textFieldGrp( l='Aim Piv Indices : ', cw=[(1,firstWidth),(2,secondWidth)] ); UI_indicesPopup( tf_meshName ) tf_upPivIndices = cmds.textFieldGrp( l='Up Piv Indices : ', cw=[(1,firstWidth),(2,secondWidth)] ); UI_indicesPopup( tf_meshName ) cmds.setParent( '..' ) firstWidth = ( columnWidth - 2 ) * 0.5 secondWidth = ( columnWidth -2 ) - firstWidth textWidth = firstWidth*0.6 menuWidth = firstWidth - textWidth cmds.rowColumnLayout( nc=2, cw=[(1,firstWidth),(2,secondWidth)]) optionAimAxis = cmds.optionMenuGrp( l= 'Aim Axis : ' , cw=[(1,textWidth),(2,menuWidth)]) cmds.menuItem( l='X' );cmds.menuItem( l='Y' );cmds.menuItem( l='Z' ); cmds.menuItem( l='-X' );cmds.menuItem( l='-Y' );cmds.menuItem( l='-Z' ); optionUpAxis = cmds.optionMenuGrp( l= 'Up Axis : ' , cw=[(1,textWidth),(2,menuWidth)]) cmds.menuItem( l='X' );cmds.menuItem( l='Y' );cmds.menuItem( l='Z' ); cmds.menuItem( l='-X' );cmds.menuItem( l='-Y' );cmds.menuItem( l='-Z' ); cmds.optionMenuGrp( optionUpAxis, e=1, select=2 ) cmds.setParent( '..' ) cmds.rowColumnLayout( nc=2, cw=[(1,firstWidth),(2,secondWidth)]) cmds.button( l='Create', h=25, c=self.cmdCreateRivet ) cmds.button( l='Cancel', h=25, c=self.cmdCancel ) cmds.window( self.winName, e=1, w = self.width, h = self.height ) cmds.showWindow( self.winName ) self.tf_meshName = tf_meshName self.tf_centerIndices = tf_centerIndices self.tf_aimIndices = tf_aimIndices self.tf_upIndices = tf_upIndices self.tf_aimPivIndices = tf_aimPivIndices self.tf_upPivIndices = tf_upPivIndices self.op_aimAxis = optionAimAxis self.op_upAxis = optionUpAxis
def variantSets_changeCommmand(unused, omg, node, variantSetName): val = cmds.optionMenuGrp(omg, q=True, value=True) variantAttr = 'usdVariantSet_%s'%variantSetName if not cmds.attributeQuery(variantAttr, node=node, exists=True): cmds.addAttr(node, ln=variantAttr, dt='string', internalSet=True) cmds.setAttr('%s.%s'%(node,variantAttr), val, type='string') # Add the resolved variant selection as a UI label resolvedVariant = '' usdPrim = UsdMaya.GetPrim(node) if usdPrim: variantSet = usdPrim.GetVariantSet(variantSetName) if variantSet: resolvedVariant = variantSet.GetVariantSelection() cmds.optionMenuGrp(omg, edit=True, extraLabel=resolvedVariant)
def resetIShatterGUI(self, *args): ''' ''' self._IScontextTool.resetVoronoiParameters() cmds.button(self._ISaddBtn, edit = True, label = 'Select an Object') cmds.button(self._ISdelBtn, edit = True, enable = False) cmds.text(self._ISiterationsTxt, edit = True, label = ' Iterations ') cmds.button(self._ISprocessBtn, edit = True, enable = False) cmds.optionMenuGrp(self._ISmethodGrp, edit = True, select = 1) cmds.intField(self._ISiterationsLoopField, edit = True, value = 50, enable = True) cmds.intField(self._ISiterationsRingField, edit = True, value = 1, enable = False) cmds.floatField(self._ISoffsetField, edit = True, value = 0.00, enable = False) cmds.checkBox(self._ISborderEdgesCbx, edit = True, value = False, enable = False) cmds.checkBox(self._IShideObjectsCbx, edit = True, value = False, enable = False)
def changeAttachProject(attachDirTextField, projectOptionMenu, cameraOptionMenu): """通过选择不同的项目文件修改目标路径""" cameraNameList = getCameraName(projectOptionMenu) #拿到cameraOptionMenu的项 cMenuItemList = getCameraItems(cameraOptionMenu) #拿到cameraOptionMenu的item for each in cMenuItemList: #删除旧项 cmds.deleteUI(each) cmds.optionMenuGrp(cameraOptionMenu, edit = True) for cameraName in cameraNameList: #添加新项 cmds.menuItem(label = cameraName) tFolder = getAttachDir(projectOptionMenu, cameraOptionMenu) cmds.textField(attachDirTextField, edit = True, text = tFolder, editable = False)
def createUI(self): cmds.scrollLayout(childResizable=True,) cmds.columnLayout(adjustableColumn=True) #cmds.setParent("..") cmds.rowLayout(numberOfColumns=1, columnAlign1='left') cmds.textFieldButtonGrp('outputFolder', label='Output Folder', cw3=(90,320, 50), text="", buttonLabel='...', buttonCommand=lambda *args: self.browseObjFilename()) cmds.setParent("..") cmds.rowLayout(numberOfColumns=2, columnAlign2=('left', 'right')) cmds.intFieldGrp('resolution', label='Resolution', value1=512, ct2=('left', 'left'), cw2=(90,110), w=230) cmds.intFieldGrp('aa_samples', label='Camera Samples (AA)', cw2=(150,60), value1=3, w=200) cmds.setParent("..") cmds.rowLayout(numberOfColumns=2, columnAlign2=('left', 'right')) cmds.optionMenuGrp('filter', label='Filter ') cmds.menuItem( label='blackman_harris' ) cmds.menuItem( label='box' ) cmds.menuItem( label='catrom' ) cmds.menuItem( label='catrom2d' ) cmds.menuItem( label='closest' ) cmds.menuItem( label='cone' ) cmds.menuItem( label='cook' ) cmds.menuItem( label='cubic' ) cmds.menuItem( label='disk' ) cmds.menuItem( label='farthest' ) cmds.menuItem( label='gaussian' ) cmds.menuItem( label='heatmap' ) cmds.menuItem( label='mitnet' ) cmds.menuItem( label='sync' ) cmds.menuItem( label='triangle' ) cmds.menuItem( label='variance' ) cmds.menuItem( label='video' ) cmds.optionMenuGrp('filter', e=True, w=230, ct2=('left', 'left'), cw2=(90,110), v='gaussian') cmds.floatFieldGrp('filterWidth', label='Filter Width', w=200, ct2=('left', 'left'), cw2=(150,60), value1=2.0) cmds.setParent("..") cmds.rowLayout(numberOfColumns=1, columnAlign1='both') cmds.textFieldGrp('shader', label='Shader Override', ct2=('left', 'left'), cw2=(90,110), text="", w=400) cmds.setParent("..") cmds.rowLayout(numberOfColumns=4, columnAlign4=('left', 'left', 'left', 'right')) cmds.text( ' ') cmds.button(label='Render', al='right', w=85, h=25, command=lambda *args: self.doExport()) cmds.text( ' ') cmds.button(label='Cancel', al='right', w=85, h=25, command=lambda *args: self.doCancel()) cmds.setParent("..")
def copyAndLayout(self): self.currentMap = cmds.optionMenuGrp(self.uvSetChoice, q=True, v=True) cmds.polyCopyUV(self.selFace, cm=True, uvi=self.currentMap, uvs=self.inputLightmap) cmds.polyMultiLayoutUV(scale=1, rotateForBestFit=2, layout=2, ps=3.2, uvs=self.inputLightmap) cmds.TextureViewWindow() #opens uv texture editor cmds.select(self.sel) #selects original objects to get out of face selection cmds.deleteUI(self.optionWindow)
def populateBrowse(self): # Make sure the path exists and access is permitted if os.path.isdir(self.path) and os.access(self.path, os.R_OK): # Clear the textScrollList cmds.textScrollList(self.browseForm.scroll, edit=True, ra=True) # Append the '..'(move up a director) as the first item cmds.textScrollList(self.browseForm.scroll, edit=True, append='..') # Populate the directories and non-directories for organization dirs = [] nonDir = [] # list the files in the path files = os.listdir(str(self.path)) if len(files) > 0: # Sort the directory list based on the names in lowercase # This will error if 'u' objects are fed into a list files.sort(key=str.lower) # pick out the directories for i in files: if i[0] != '.': if os.path.isdir(os.path.join(self.path, i)): dirs.append(i) else: nonDir.append(i) # Add the directories first for i in dirs: cmds.textScrollList(self.browseForm.scroll, edit=True, append=self.dirStr + i) # Add the files next for i in nonDir: # print i # show the files based on the current filter if fnmatch.fnmatch(i, '*' + cmds.optionMenuGrp(self.actionForm.opt, query=True, v=True)): cmds.textScrollList(self.browseForm.scroll, edit=True, append=i)
def buildFilter(self): self.opt = cmds.optionMenuGrp(self.opt, label='Filter:', cc=self.cmdFilter, cw2=[40, 75], height=20) for i, item in enumerate(self.filters): itm = (item + '_%02d_menuItem' % i) cmds.menuItem(itm, l=item) attachForm = [(self.opt, 'bottom', 5), (self.opt, 'left', 0)] cmds.formLayout(self.form, edit=True, attachForm=attachForm)
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)