def rh_dynamicJoint(): #Create a variable for the window name winName = 'DynamicJoint' winTitle = 'rh_DynamicJoint_prototype_v0.23' #Delete the window if it exists if pm.window(winName, exists = True): pm.deleteUI(winName, window = True) #Build the main window pm.window(winName, title = winTitle, sizeable = True) #name field pm.textFieldGrp('NameTFG',label = 'Set up name:', text = 'Ribbon45hp', ed = True) pm.columnLayout(adjustableColumn = True) #side pm.radioButtonGrp('ColSel',nrb = 3,label = 'Side:',la3 = ['l','m','r'],sl = 1) pm.columnLayout(adjustableColumn = True) #axis pm.radioButtonGrp('AxisSel',nrb = 3,label = 'Axis:',la3 = ['x','y','z'],sl = 1) pm.columnLayout(adjustableColumn = True) #ccSize pm.floatSliderGrp('Cc_Size',label = 'Control Size:',f = True,min = 1,max = 10,fmn = 1,fmx = 100,v = 1) pm.columnLayout(adjustableColumn = True) #joint number pm.intSliderGrp('Joint_Num',label = 'Number Of Joints:',f = True,min = 4,max = 49,fmn = 1,fmx = 100,v = 4) pm.columnLayout(adjustableColumn = True) #inbound pm.button(label = 'Ready For Tasking', command = 'inbound()') pm.columnLayout(adjustableColumn = True) #bringTheRain pm.button(label = 'Target Acquire', command = 'bringTheRain()') pm.columnLayout(adjustableColumn = True) #Show the window pm.showWindow(winName) pm.window(winName, edit = True, width = 378, height = 210)
def addUIElement(uiType, attribute, uiLabel, callback, renderGlobalsNodeName): ui = None if uiType == 'bool': ui = pm.checkBoxGrp(label=uiLabel) if callback is not None: pm.checkBoxGrp(ui, edit=True, cc=callback) if uiType == 'int': ui = pm.intFieldGrp(label=uiLabel, numberOfFields=1) if callback is not None: pm.intFieldGrp(ui, edit=True, cc=callback) if uiType == 'float': ui = pm.floatFieldGrp(label=uiLabel, numberOfFields=1) if callback is not None: pm.floatFieldGrp(ui, edit=True, cc=callback) if uiType == 'enum': ui = pm.attrEnumOptionMenuGrp(label=uiLabel, at=attribute, ei=getEnumList(attribute)) # attrEnumOptionGrp has no cc callback, so I create a script job if callback is not None: attribute = pm.Attribute(renderGlobalsNodeName + "." + attribute) pm.scriptJob(attributeChange=[attribute, callback], parent=ui) if uiType == 'color': ui = pm.attrColorSliderGrp(label=uiLabel, at=attribute) if uiType == 'string': ui = pm.textFieldGrp(label=uiLabel) if callback is not None: pm.textFieldGrp(ui, edit=True, cc=callback) if uiType == 'vector': ui = pm.floatFieldGrp(label=uiLabel, nf=3) if callback is not None: pm.floatFieldGrp(ui, edit=True, cc=callback) return ui
def addUIElement(uiType, attribute, uiLabel, callback, renderGlobalsNodeName): ui = None if uiType == 'bool': ui = pm.checkBoxGrp(label=uiLabel) if callback is not None: pm.checkBoxGrp(ui, edit=True, cc=callback) if uiType == 'int': ui = pm.intFieldGrp(label=uiLabel, numberOfFields = 1) if callback is not None: pm.intFieldGrp(ui, edit=True, cc = callback) if uiType == 'float': ui = pm.floatFieldGrp(label=uiLabel, numberOfFields = 1) if callback is not None: pm.floatFieldGrp(ui, edit=True, cc= callback) if uiType == 'enum': ui = pm.attrEnumOptionMenuGrp(label = uiLabel, at=attribute, ei = getEnumList(attribute)) # attrEnumOptionGrp has no cc callback, so I create a script job if callback is not None: attribute = pm.Attribute(renderGlobalsNodeName + "." + attribute) pm.scriptJob(attributeChange=[attribute, callback], parent=ui) if uiType == 'color': ui = pm.attrColorSliderGrp(label=uiLabel, at=attribute) if uiType == 'string': ui = pm.textFieldGrp(label=uiLabel) if callback is not None: pm.textFieldGrp(ui, edit=True, cc=callback) if uiType == 'vector': ui = pm.floatFieldGrp(label=uiLabel, nf=3) if callback is not None: pm.floatFieldGrp(ui, edit=True, cc=callback) return ui
def options_box_setup(self): self.optvars.add('zSplitBlendShapesBlendDistance', 'float', 2) self.optvars.add('zSplitBlendShapesPlane', 'int', 2) self.optvars.add('zSplitBlendShapesPlaneOrigin', 'float', 0) self.optvars.add('zSplitBlendShapesNamingPattern', 'string', '<name>_<L|R>') parent = pm.columnLayout(adjustableColumn=1) pm.optionMenuGrp('sbsList', label='Blend shape:', cc=self.fill_blend_target) self.fill_blend_shapes('sbsList|OptionMenu', False) pm.optionMenuGrp('sbsLeftOutput', label='Left output:') self.fill_blend_shapes('sbsLeftOutput|OptionMenu', True) pm.optionMenuGrp('sbsRightOutput', label='Right output:') self.fill_blend_shapes('sbsRightOutput|OptionMenu', True) # If something is selected, try to find a blend shape to select by default. selection = pm.ls(sl=True) if selection: history = pm.listHistory(selection) blend_shapes = pm.ls(history, type='blendShape') if blend_shapes: default_blend_shape = blend_shapes[0] self.select_blend_shape(default_blend_shape) pm.optionMenuGrp('sbsTargetList', label='Blend target:') self.fill_blend_target() pm.floatSliderGrp('sbsBlendDistance', label='Blend distance', field=True, min=0, max=10, fieldMinValue=0, fieldMaxValue=1000) pm.radioButtonGrp('sbsPlane', label='Plane:', numberOfRadioButtons=3, labelArray3=('XY', 'YZ', 'XZ')) pm.floatSliderGrp('sbsPlaneOrigin', label='Plane origin', v=0, min=0, max=1000) pm.textFieldGrp('sbsNamingPattern', label='Naming pattern')
def __init__(self, id, label='', default_value='', project=None): super(UiTextField, self).__init__(id, default_value=default_value, project=project) # Create the element itself. pm.textFieldGrp(id, label=label, tx=default_value, tcc=self.set_value)
def saveData(self): os.chdir(self.final_path + '/' + FOLDER_NAME) # print(os.getcwd()) file_ini = open(FILE_NAME, 'w+') file_ini.write('[General] \n') file_ini.write("tilt_ctrl_data=" + str(pm.textFieldGrp(self.tiltCtrl, q=True, text=True)) + '\n') file_ini.write("mesh_data=" + str(pm.textFieldGrp(self.mesh, q=True, text=True)) + '\n') file_ini.write("parent_data=" + str(pm.textFieldGrp(self.target, q=True, text=True)) + '\n') file_ini.write( "offset_data=" + str(pm.textFieldGrp(self.offset_ctrl, q=True, text=True)) + ' \n') file_ini.write("axisZ_data=" + str(pm.checkBox("myChBxZ", q=True, value=True)) + '\n') file_ini.write("axisX_data= " + str(pm.checkBox("myChBxX", q=True, value=True)) + '\n') file_ini.close() return (file_ini)
def __init__(self): winName = 'SineRigWin333' if pm.window(winName, exists=1): pm.deleteUI(winName,window=1) win = pm.window(winName, t='SineRig') pm.columnLayout(adj=1) pm.text('X Axis should be joint chain aim axis.') # Control self.cnt_fld = pm.textFieldButtonGrp(l='Control',bl='Load') pm.textFieldButtonGrp( self.cnt_fld, e=1, bc=lambda: pm.textFieldButtonGrp(self.cnt_fld,e=1,text=pm.ls(sl=1)[0]) ) # Name self.name_fld = pm.textFieldGrp(l='Name') # Base jnt self.base_fld = pm.textFieldButtonGrp(l='Base Joint',bl='Load') pm.textFieldButtonGrp( self.base_fld, e=1, bc=lambda: pm.textFieldButtonGrp(self.base_fld,e=1,text=pm.ls(sl=1)[0]) ) # Tip jnt self.tip_fld = pm.textFieldButtonGrp(l='Tip Joint',bl='Load') pm.textFieldButtonGrp( self.tip_fld, e=1, bc=lambda: pm.textFieldButtonGrp(self.tip_fld,e=1,text=pm.ls(sl=1)[0]) ) # Create button pm.button(l="Create",c=self.createRig) ##### Development Aide pm.textFieldButtonGrp(self.cnt_fld,e=1,text='TopFin_Base_ctrlA') pm.textFieldGrp(self.name_fld,e=1,text='Fin') pm.textFieldButtonGrp(self.base_fld,e=1,text='TopFinA_jnt_1') pm.textFieldButtonGrp(self.tip_fld,e=1,text='TopFinA_jnt_12') pm.showWindow(win)
def AddInputs(self): try: selAttrs = [ x for x in pm.channelBox( "mainChannelBox", q=1, selectedMainAttributes=1) ] # UI management self.inputs1 = pm.textFieldGrp(self.Input1, e=True, tx=selAttrs[0]) try: self.inputs2 = pm.textFieldGrp(self.Input2, e=True, tx=selAttrs[1]) except IndexError: pass try: self.inputs3 = pm.textFieldGrp(self.Input3, e=True, tx=selAttrs[2]) except IndexError: pass except TypeError: pass
def renaming(): preName = pm.textFieldGrp('pre',q = 1,tx = 1) sideB = pm.radioButtonGrp('side',q = 1,sl = 1) sideList = ['l','r','m'] objName = pm.textFieldGrp('obj',q = 1,tx = 1) startNum = pm.textFieldGrp('starNum',q = 1,tx = 1) paddingNum = pm.textFieldGrp('paddingNum',q = 1,tx = 1) suffixName = pm.textFieldGrp('suffix',q = 1,tx = 1) jointEnd = pm.checkBox('je',q = 1,v = 1) sels = pm.ls(sl = 1) for num,sel in enumerate(sels): if len(str(startNum)) < paddingNum: number = str(0) + str(startNum) preNames = '' if preName != '': preNames = preName + '_' name = preNames + objName + '_' + sideList[sideB] + '_' + number + '_' + suffixName pm.rename(sel,name) if jointEnd == 1: name = preNames + objName + '_' + sideList[sideB] + '_' + number + '_' + 'je' pm.rename(sels[-1],name) print name startNum = int(startNum) + 1
def createAssetCallBack(self, *args): name = pm.textFieldGrp('CrAsset_nameField', q=True, tx=True) if not name: return pm.confirmDialog( title='error', ma='center', message='please choose a name for the asset', button=['OK'], defaultButton='OK', dismissString='OK') workflow = pm.optionMenuGrp('CrAsset_workflowOpt', q=True, v=True) code = pm.textFieldGrp('CrAsset_codeField', q=True, tx=True) itemDict = database.createItem(self.type, name, self.path, workflow, code) print itemDict if itemDict == 'codeExists': return pm.confirmDialog(title='error', ma='center', message='this code already exists', button=['OK'], defaultButton='OK', dismissString='OK') pm.layoutDialog(dismiss='ok')
def newProjectCallback(self, *args): proj = ProjectSettingsWidget() proj.createProjectSettingsWidget() proj.new = True proj.parentWidget = self pm.textFieldGrp(proj.projNameTxt, e=True, editable=True) pm.textFieldGrp(proj.prefixTxt, e=True, editable=True)
def getModuleInstance(self): cName = pm.textFieldGrp(self.cNameT,q = 1,text = 1) side = pm.textFieldGrp(self.sideT,q = 1,text = 1) cntSizeV = pm.floatFieldGrp(self.cntSize,q = 1,value1 = 1) self.__pointerClass = Hierarchy(side,size = cntSizeV,characterName = cName) return self.__pointerClass
def createRig(self, *args): BlendSineRig.BlendSineRig( control=pm.textFieldButtonGrp(self.cnt_fld, q=1, text=1), name=pm.textFieldGrp(self.name_fld, q=1, text=1), numJnts=pm.textFieldGrp(self.numJnts_fld, q=1, text=1), curve=pm.textFieldButtonGrp(self.crv_fld, q=1, text=1), fwdBackCrvs=pm.textScrollList(self.fwd_sFld, q=1, ai=1), sideToSideCrvs=pm.textScrollList(self.side_sFld, q=1, ai=1), )
def createAssetPrompt(self): code = '' proj = database.getProjectDict() if self.type == 'asset': code = "%04d" % proj['nextAsset'] elif self.type == 'shot': code = "%04d" % proj['nextShot'] form = pm.setParent(q=True) f = pm.formLayout(form, e=True, width=150) row = pm.rowLayout(nc=2, adj=2) pm.picture(image='sphere.png', w=50, h=50) col = pm.columnLayout(adjustableColumn=True) nameField = pm.textFieldGrp('CrAsset_nameField', label='Name', cw=(1, 70), text='', adj=2, cat=[(1, 'left', 5), (2, 'left', 5)], editable=True) codeField = pm.textFieldGrp('CrAsset_codeField', label='Code', cw=(1, 70), text=code, adj=2, cat=[(1, 'left', 5), (2, 'left', 5)], editable=True) workflow = pm.optionMenuGrp('CrAsset_workflowOpt', label='Workflow', cw=(1, 70), cat=[(1, 'left', 5), (2, 'left', 5)]) proj = database.getProjectDict() for key in proj['workflow']: context = set([ proj['workflow'][key][x]['type'] for x in proj['workflow'][key] ]) if self.type in context: pm.menuItem(label=key) b1 = pm.button(p=f, l='Cancel', c=self.abortCreateCallback) b2 = pm.button(p=f, l='OK', c=self.createAssetCallBack) spacer = 5 top = 5 edge = 5 pm.formLayout(form, edit=True, attachForm=[(row, 'right', edge), (row, 'top', top), (row, 'left', edge), (row, 'right', edge), (b1, 'right', edge), (b1, 'bottom', edge), (b2, 'left', edge), (b2, 'bottom', edge)], attachNone=[], attachControl=[], attachPosition=[(b1, 'right', spacer, 90), (b2, 'left', spacer, 10)])
def __init__(self): windowID = 'selNodeWnd' if pm.window('selNodeWnd', exists=1): pm.deleteUI('selNodeWnd') tmpl = pm.uiTemplate(windowID + '_uiTmpl', force=1) tmpl.define('columnLayout', adj=1, cat=('both', 5), rs=5) tmpl.define('button', h=40) tmpl.define('textFieldGrp', cl2=['center', 'left'], ad2=2, cw2=[30, 40]) tmpl.define('checkBoxGrp', v1=0, cw=[1, 80]) wnd = pm.window(windowID, t='Sel Node Editor', s=1, rtf=1, toolbox=1) with tmpl: with pm.columnLayout(): with pm.horizontalLayout() as createLayout: pm.textFieldGrp( 'nameTxt', l='Node Name', ann=self.uiAnn['kwTxt'], cw2=[80, 80], cal=[1, 'left'], en=1, tx="userNode", ) pm.button('createNodeBtn', l='Create Node', ann=self.uiAnn['createNode'], w=30, c=self.createNodeBtnCmd) with pm.horizontalLayout() as kwTxtLayout: pm.textFieldGrp('kwTxt', l='Searching KeyWords', ann=self.uiAnn['kwTxt'], cw2=[110, 40], cal=[1, 'left'], en=1) with pm.horizontalLayout() as btnLayout3: pm.button('readNodeBtn', l='Read Node', ann=self.uiAnn['selNode'], c=self.readNodeBtnCmd) pm.button('addToNodeBtn', l='Add to Node', ann=self.uiAnn['addToNode'], c=self.addToNodeBtnCmd) pm.button('reMoveFrmNodeBtn', l='Remove Frm Node', ann=self.uiAnn['reMoveFrmNode'], c=self.reMoveFrmNodeCmd) wnd.show()
def windowADD(*args): tw = 250 cw = 50 fw = 350 hw = fw / 2 fh = 50 if pm.window("myWin", exists=1): pm.deleteUI("myWin") win = pm.window("myWin", title="ADD ATTRIBUTES", w=fw, h=100, sizeable=0) mainLayout = pm.columnLayout(w=fw) startLayout = pm.rowColumnLayout(cw=((1, tw), (2, cw), (3, cw)), nc=3, cal=((1, 'left'), (2, 'left'), (3, 'left')), co=((1, 'left', 1), (2, 'left', 1), (3, 'left', 1)), parent=mainLayout) pm.textFieldGrp('stringText', w=tw, text='diffTex', parent=startLayout) pm.button(label="ADD S", w=cw, c=addStringAttr) pm.button(label="DEL S", w=cw, c=delStringAttr) pm.textFieldGrp('boolText', w=tw, text='diffTexTog diffUdim diffVrtxTog') pm.button(label="ADD B", w=cw, c=addBoolAttr) pm.button(label="DEL B", w=cw, c=delBoolAttr) pm.textFieldGrp('colorText', w=tw, text='diffCol') pm.button(label="ADD C", w=cw, c=addColorAttr) pm.button(label="DEL C", w=cw, c=delColorAttr) pm.textFieldGrp('floatText', w=tw, text='emptyVal') pm.button(label="ADD F", w=cw, c=addFloatAttr) pm.button(label="DEL F", w=cw, c=delFloatAttr) pm.textFieldGrp('intText', w=tw, text='instanceID') pm.button(label="ADD I", w=cw, c=addIntAttr) pm.button(label="DEL I", w=cw, c=delIntAttr) midLayout = pm.rowColumnLayout(cw=((1, hw), (2, hw)), co=((1, 'left', 1), (2, 'left', 1)), nc=2, parent=mainLayout) pm.button(label='ADD ALL', w=hw, h=fh, parent=midLayout, c=addAll) pm.button(label='DELETE ALL', w=hw, h=fh, parent=midLayout, c=delAll) pm.button(label='MASTER MATERIAL gen + assing', w=fw, h=fh, parent=mainLayout, c=genMat) pm.button(label='MASTER MATERIAL assing', w=fw, h=fh, parent=mainLayout, c=assignMat) pm.showWindow(win)
def getTarget(self): try: ctrl = pm.selected()[0] ctrl_name = ctrl.name() result1 = str(ctrl_name) pm.textFieldGrp(self.target, edit=True, tx=str(result1)) except: pass
def getOffsetCtrl(self): try: ctrl = pm.selected()[0] ctrl_name = ctrl.name() result2 = str(ctrl_name) pm.textFieldGrp(self.offset_ctrl, edit=True, tx=str(result2)) except: pass
def toggleMatchup(self, *a): get_bool = pm.radioButtonGrp('matchup_toggle', q=True, sl=True) if get_bool == 1: pm.textFieldGrp('away_team_txt', e=True, enable=False) elif get_bool == 2: pm.textFieldGrp('away_team_txt', e=True, enable=True) else: pm.warning( 'SORT CONTROL ERROR: Please select single-team or matchup.') return
def __init__(self, mainUI): self.mainUI = mainUI with pm.window(title='Create') as self.window: with pm.columnLayout(): self.name = pm.textFieldGrp(label='Name:') self.value = pm.textFieldGrp(label='Value:') with pm.rowColumnLayout(nc=2): pm.button(label='create', c=self._apply) pm.button(label='Cancel', c=self._cancel) self.window.show()
def multi_nameChange(component, *args): sel_lights = pm.ls(sl=True, lights=True, dag=True) newName = pm.textFieldGrp(component, q=True, text=True) newName = re.sub('\s+', '_', newName) for light in sel_lights: trans = pm.listRelatives(light, parent=True, fullPath=True)[0] pm.rename(trans, newName) pm.textFieldGrp(component, e=True, text='') refreshWindow(*args)
def update_velocity_grid_export(self, param_name): grp = "OpenVDBVelocityGrids" attr_value = pm.getAttr(param_name) pm.textFieldGrp(grp, edit=True, text="" if attr_value is None else attr_value, changeCommand=lambda val: pm.setAttr(param_name, val)) pm.scriptJob(parent=grp, replacePrevious=True, attributeChange=[param_name, lambda: pm.textFieldGrp(grp, edit=True, text=pm.getAttr(param_name))]) self.setup_velocity_grid_popup(grp, param_name)
def oVariables(self): """Defining the starting variables""" self.geo = str(pm.textFieldGrp(self.mesh, q=True, text=True)) self.geoShape = pm.PyNode(self.geo).getShape() self.tiltctrl = str(pm.textFieldGrp(self.tiltCtrl, q=True, text=True)) bbox = pm.exactWorldBoundingBox(self.geo) self.mesh_ctrl_parent = str( pm.textFieldGrp(self.target, q=True, text=True)) self.mesh_ctrl_offset = str( pm.textFieldGrp(self.offset_ctrl, q=True, text=True))
def _newAssetInfoConfirmed(self, args): sceneName = _pmCore.textFieldGrp(self._sceneName, query=True, text=True) directory = _pmCore.textFieldGrp(self._filePath, query=True, text=True) description = _pmCore.scrollField(self._description, query=True, text=True) category = _pmCore.optionMenuGrp(self._category, value=True, query=True) if not sceneName or not directory or not description: _pmCore.confirmDialog(title='Invalid Asset Info', message='Asset info for "Scene Name", "Directory" and "Description" can not be empty.', button='OK') return self._newAssetInfoClose() fileID = _MayaFunctions.saveScene(sceneName, directory, description, category) if self._addedCallback: self._addedCallback(fileID, category)
def createRig(self, *args): BlendSineRig.BlendSineRig(control=pm.textFieldButtonGrp( self.cnt_fld, q=1, text=1), name=pm.textFieldGrp( self.name_fld, q=1, text=1), numJnts=pm.textFieldGrp( self.numJnts_fld, q=1, text=1), curve=pm.textFieldButtonGrp( self.crv_fld, q=1, text=1), fwdBackCrvs=pm.textScrollList( self.fwd_sFld, q=1, ai=1), sideToSideCrvs=pm.textScrollList( self.side_sFld, q=1, ai=1),)
def update_channel(self, channel_name, param_name): grp = "OpenVDB%sChannelGrp" % channel_name attr_value = pm.getAttr(param_name) pm.textFieldGrp(grp, edit=True, text="" if attr_value is None else attr_value, changeCommand=lambda val: pm.setAttr(param_name, val)) pm.scriptJob(parent=grp, replacePrevious=True, attributeChange=[param_name, lambda : pm.textFieldGrp(grp, edit=True, text=pm.getAttr(param_name))]) self.clear_popups(grp) pm.popupMenu(parent=grp, postMenuCommand=lambda popup, popup_parent: AEvdb_visualizerTemplate.setup_popup_menu_elems(popup, popup_parent, param_name))
def option_box_load(self): pm.floatSliderGrp('sbsBlendDistance', edit=True, v=self.optvars['zSplitBlendShapesBlendDistance']) pm.radioButtonGrp('sbsPlane', edit=True, select=self.optvars['zSplitBlendShapesPlane']) pm.floatSliderGrp('sbsPlaneOrigin', edit=True, v=self.optvars['zSplitBlendShapesPlaneOrigin']) pm.textFieldGrp('sbsNamingPattern', edit=True, text=self.optvars['zSplitBlendShapesNamingPattern'])
def getModuleInstance(self): baseNameT = pm.textFieldGrp(self.baseNameT,q = 1,text = 1) sideT = pm.textFieldGrp(self.sideT,q = 1,text = 1) cntAxisT = pm.textFieldGrp(self.cntAxisT,q = 1,text = 1) cntSizeBodyV = pm.floatFieldGrp(self.cntSizeBody,q = 1,value1 = 1) cntSizeIkV = pm.floatFieldGrp(self.cntSizeIk,q = 1,value1 = 1) segmentN = pm.intFieldGrp(self.segment,q = 1,v = 1) mainMetaNode = pm.optionMenu(self.mainMetaNodeM,q = 1,v = 1) self.__pointerClass = SpineModule(baseName = baseNameT,side = sideT,bodySize = cntSizeBodyV,ctrlAxis = cntAxisT, ikSize = cntSizeIkV,segment = segmentN,metaMain = mainMetaNode) return self.__pointerClass
def animateExportUI(): winName = 'animateUI' if(pm.window(winName,q=1,ex=1)): pm.deleteUI(winName) pm.window(winName,ret=1,mb=1) pm.columnLayout('columnLayout8',adj=1) pm.checkBoxGrp('exportType',ncb=3, label='export Type : ', la3=[': transform', ': rotate', ': custom']) pm.textFieldGrp('exportPath',l = 'export Path : ',adj = 0, cl2 = ['right','center'],tx = 'asdd') pm.button('export',c = 'animateExport()') pm.showWindow(winName)
def nameRulesWindow(self): win = window( t='Choose what is displayed to indicate the side of the joints and controllers.' ) with columnLayout(adj=True): jl = textFieldGrp(l='Joint Left Side', tx=self.settings['joint_left']) jr = textFieldGrp(l='Joint Right Side', tx=self.settings['joint_right']) cl = textFieldGrp(l='Control Left Side', tx=self.settings['control_left']) cr = textFieldGrp(l='Control Right Side', tx=self.settings['control_right']) def setSides(): jlText = jl.getText().strip() jrText = jr.getText().strip() clText = cl.getText().strip() crText = cr.getText().strip() if jlText == jrText or clText == crText: confirmDialog( m='The left and right sides must be different\n(but the control and joint text for the same side can be the same)' ) return if not clText or not crText or not jlText or not jrText: confirmDialog(m='You cannot leave any side empty.') return self.settings['joint_left'] = jlText self.settings['joint_right'] = jrText self.settings['control_left'] = clText self.settings['control_right'] = crText settings.JOINT_SIDE_CODE_MAP['left'] = jlText settings.JOINT_SIDE_CODE_MAP['right'] = jrText settings.CONTROL_SIDE_CODE_MAP['left'] = clText settings.CONTROL_SIDE_CODE_MAP['right'] = crText deleteUI(win) button(l='Apply', c=Callback(setSides)) showWindow()
def putProjectSettings(self): self.projDict['projectName'] = pm.textFieldGrp(self.projNameTxt, q=True, text=True) self.projDict['prefix'] = pm.textFieldGrp(self.prefixTxt, q=True, text=True) self.projDict['status'] = pm.optionMenuGrp(self.statusOpt, q=True, v=True) self.projDict['workLocation'] = pm.textFieldButtonGrp(self.workLocTxt, q=True, text=True) self.projDict['publishLocation'] = pm.textFieldButtonGrp( self.publishLocTxt, q=True, text=True) self.projDict['imagesWorkLocation'] = pm.textFieldButtonGrp( self.imgWorkLocTxt, q=True, text=True) self.projDict['imagesPublishLocation'] = pm.textFieldButtonGrp( self.imgPublishLocTxt, q=True, text=True) self.projDict['cacheLocation'] = pm.textFieldButtonGrp( self.cacheLocTxt, q=True, text=True) self.projDict[ 'assetCollection'] = self.projDict['projectName'] + '_asset' self.projDict[ 'shotCollection'] = self.projDict['projectName'] + '_shot' nameTemplateString = pm.textFieldGrp(self.nameTemplTxt, q=True, text=True) self.projDict['assetNameTemplate'] = nameTemplateString.split(',') cacheTemplateString = pm.textFieldGrp(self.cacheTemplTxt, q=True, text=True) self.projDict['cacheNameTemplate'] = cacheTemplateString.split(',') self.projDict['fps'] = pm.textFieldGrp(self.fpsTxt, q=True, text=True) self.projDict['mayaVersion'] = pm.optionMenuGrp(self.mayaVersionOpt, q=True, v=True) self.projDict['renderer'] = pm.optionMenuGrp(self.rendererOpt, q=True, v=True) res = pm.optionMenuGrp(self.resolutionOpt, q=True, v=True) self.projDict['resolution'] = [ int(res.split('x')[0]), int(res.split('x')[1]) ] self.projDict['assetFolders'] = self.assetTreeView.putFolderTree() self.projDict['shotFolders'] = self.shotTreeView.putFolderTree()
def _updateAssetClicked(self): if self._currentSelectedAsset == None: raise RuntimeError('Nothing selected.') sceneName = _pmCore.textFieldGrp(self._uiWidget[_UiWidgetEnum.sceneNameTextField], query=True, text=True) filePath = _pmCore.textFieldGrp(self._uiWidget[_UiWidgetEnum.filePathTextField], query=True, text=True) category = _pmCore.optionMenuGrp(self._uiWidget[_UiWidgetEnum.categoryCombox], query=True, value=True) description = _pmCore.scrollField(self._uiWidget[_UiWidgetEnum.descriptionTextField], query=True, text=True) _Database.setFileCategory(self._currentSelectedAsset, category) _Database.setFileDescription(self._currentSelectedAsset, description) _Database.setFilename(self._currentSelectedAsset, sceneName) _Database.setFilePath(self._currentSelectedAsset, filePath) _pmCore.iconTextButton(self._uiWidget[_UiWidgetEnum.assetBtnList][self._assetBtnName(self._currentSelectedAsset)], edit=True, label=sceneName) self._refreshAssetButtonView()
def loadBtn(self, *a): home_team = pm.textFieldGrp('home_team_txt', q=True, text=True) diag = pm.checkBox('diagnose_tgl', q=True, value=True) if home_team == '': pm.warning( 'Build Scene ERROR Please enter a team name / tricode before proceeding.' ) if (pm.radioButtonGrp('matchup_toggle', q=True, sl=True)) == 1: build.loadTeamsStadium(home_team, diagnostic=diag) elif (pm.radioButtonGrp('matchup_toggle', q=True, sl=True)) == 2: away_team = pm.textFieldGrp('away_team_txt', q=True, text=True) build.loadTeamsStadium(home_team, away_team, diagnostic=diag)
def show(self): if pm.window("transferAnimTool", ex=True): pm.deleteUI("transferAnimTool") pm.window("transferAnimTool", title=u"动画传递助手", cc=lambda *args: self.close_main_window()) form_layout = pm.formLayout() layout = pm.columnLayout(adj=1, rs=5) pm.textFieldButtonGrp("templateTextField", label=u"模板文件", bl=u"指定文件", cw3=[70, 200, 100], adj=2, text=self.template_path, bc=lambda *args: self.load_template_file()) pm.textFieldGrp("namespaceTextField", label="Namespace:", cw2=[70, 200], adj=2, text=self.namespace, cc=lambda *args: self.set_namespace()) pm.button(label=u"传递动画!", c=lambda *args: self.transfer_anim()) pm.setParent("..") pm.formLayout( form_layout, edit=True, attachForm=[ (layout, 'top', 10), (layout, 'left', 10), (layout, 'right', 10), (layout, 'bottom', 10), # (btn, 'left', 10), # (btn, 'right', 10), # (output_frame, 'left', 10), # (output_frame, 'right', 10), # (output_frame, 'bottom', 10), ], attachControl=[ # (btn, 'top', 5, layout), # (output_frame, 'top', 5, btn), # (file_export_list_frame, 'bottom', 5, export_options_frame), # (export_options_frame, 'bottom', 5, execute_button), ]) pm.showWindow("transferAnimTool")
def getObj(*args): #clear list clearList() #get selected obj and put it in field sel = pm.ls( sl = True ) [0] pm.textFieldGrp( widgets['objTFG'], e = True, tx = sel ) attr = '%s.space'%sel print attr #for that attr grab all of the values valuesRaw = pm.attributeQuery( 'space', node = sel, le = True )[0] values = valuesRaw.split( ':') for i in range( 0, len( values )): widgets['value%s'%i] = pm.button( l = values[i], w = 300, h = 50, c = partial(match, i))
def inbound(): global jointGuides,setUpName,jointGuidesGrp,side setUpName = pm.textFieldGrp('NameTFG', tx = True,q = True) colorSel = pm.radioButtonGrp('ColSel',q = True,sl = True) if colorSel == 1: side = 'l' elif colorSel == 2: side = 'm' elif colorSel == 3: side = 'r' numOfJoints = pm.intSliderGrp('Joint_Num',q = True,v = True) jointGuidesGrp = pm.group(em = 1,n = getUniqueName(side,setUpName + 'Gud', 'grp')) for num in range(numOfJoints): loc = pm.spaceLocator(n = getUniqueName(side,setUpName,'loc')) pm.move(0,num * 2,0,loc) jointGuides.append(loc) loc.setParent(jointGuidesGrp) jointGuides.reverse() for num,loc in enumerate(jointGuides): if num < (len(jointGuides) - 1): jointGuides[num].setParent(jointGuides[num + 1]) jointGuides.reverse()
def __init__(self, questions_file): self.file = open(questions_file, 'r') self.questions = self.file.readlines() self.file.close() self.main_layout = pm.columnLayout() self.name_field = pm.textFieldGrp(label= 'Quiz Name') self.layout = pm.rowColumnLayout(numberOfColumns= 2, columnWidth= ([1, 75], [2, 475])) pm.columnLayout() pm.text(label= 'Questions') self.question_scroll_list = pm.textScrollList(width= 60, height= 400, selectCommand= pm.Callback(self.read_questions), allowMultiSelection= True) pm.setParent(self.layout) pm.columnLayout() pm.text(label= 'Questions Info') self.question_scroll_field = pm.scrollField(wordWrap= True, height= 400, width= 475) pm.setParent(self.main_layout) pm.button(label= 'Create Quiz', command= pm.Callback(self.create_quiz), width= 550, height= 50) self.list_questions()
def append_output_item(): # todo: bug fix - 属性应该是一对一,当前是一对多,后续版本应该强制验证 namespace = pm.textFieldGrp("namespaceField", q=True, text=True) source_controller = pm.textField("sourceObjectField", q=True, text=True) if namespace in source_controller: source_controller = source_controller.split(":")[1] key = "%s.%s" % (source_controller, pm.textScrollList( "sourceObjectAttrScrollList", q=True, si=True)[0]) target_controller = pm.textField("targetObjectField", q=True, text=True) if namespace in target_controller: target_controller = target_controller.split(":")[1] value = "%s.%s" % (target_controller, pm.textScrollList("targetObjectAttrScrollList", q=True, si=True)[0]) item = "%s:%s" % (key, value) print(item) current_items = pm.textScrollList("outputItemScrollList", q=True, ai=True) if item not in current_items: pm.textScrollList("outputItemScrollList", e=True, a=item) print("--------------")
def displayOptions( self ): """Build the interface""" self.interface['TimeRange'] = cmds.radioButtonGrp( numberOfRadioButtons=2, label='Time Range', labelArray2=['Time Slider', 'Start/End'], onCommand=self.disableTimeRange ) self.interface['StartTime'] = cmds.intFieldGrp( label='Start Time' ) self.interface['EndTime'] = cmds.intFieldGrp( label='End Time' ) self.interface['Focals'] = cmds.textFieldGrp( label='Focals' ) self.interface['Cameras'] = cmds.textScrollList( allowMultiSelection=True, width=200, height=100 ) # self.interface['CamerasLabel'] = cmds.text( label='Cameras' ) self.formAttachPosition() cmds.formLayout( self.optionsForm, e=True, attachForm=( [ self.interface['TimeRange'], 'top', 10 ], [ self.interface['Cameras'], 'bottom', 100 ], [ self.interface['Cameras'], 'left', 150 ], ), attachControl=( [ self.interface['StartTime'], 'top', 0, self.interface['TimeRange'] ], [ self.interface['EndTime'], 'top', 0, self.interface['StartTime'] ], [ self.interface['Focals'], 'top', 0, self.interface['EndTime'] ], [ self.interface['Cameras'], 'top', 10, self.interface['Focals'] ], # [ self.interface['CamerasLabel'], 'top', 10, self.interface['Focals'] ], # [ self.interface['CamerasLabel'], 'right', -90, self.interface['Cameras'] ], ), attachNone=( [ self.interface['Cameras'], 'left' ], [ self.interface['Cameras'], 'right' ], ) ) self.editMenuResetCmd() # Set the default values in the interface
def rename(self, *args): v1 = pm.checkBoxGrp(self.cbFld, q=1, v1=1) v2 = pm.checkBoxGrp(self.cbFld, q=1, v2=1) if v1 and v2: pm.warning('Only select one Type: FK or IK. No action taken.') return name = pm.textFieldGrp( self.nameFld, q=1, text=1) # Rename base control baseCnt = pm.PyNode('vks_explicit1') baseCnt.rename('%s_baseCnt' % name) # Get joints pm.select('vks_skin_joint_1', hi=1) jnts = pm.ls(sl=1, type='joint') count = 1 for each in jnts: pc = each.listConnections(et=1, type='parentConstraint')[0] print pc pc.rename('%s_joint_%s_parentConstraint' % (name, count)) each.rename('%s_joint_%s' % (name, count)) pm.select(each, r=1) pm.mel.eval('ToggleLocalRotationAxes;') count += 1 # FK parametric controls if v1: pm.select('vks_parametric*Shape') sel = pm.ls(sl=1) count = 1 for each in sel: prnt = each.getParent() prnt.rename('%s_cnt_%s' % (name, count)) count += 1
def gui(): win = 'rigid_body_win' if pm.window(win, exists= True): pm.deleteUI(win) if pm.windowPref(win, exists= True): pm.windowPref(win, remove= True) global obj_scroll_list, name_field, tab_layout my_win = pm.window(win, title= 'BAKE', toolbox= True, width= 300) tab_layout = pm.tabLayout() ui_creator = pm.columnLayout(adjustableColumn= False) name_field = pm.textFieldGrp(label = 'System Name', text= 'Name', columnWidth2= [145, 150]) obj_scroll_list = pm.textScrollList(width= 300, height= 200, allowMultiSelection= True) pm.rowColumnLayout(nc=3, columnWidth= ([1,100], [2,100], [1,100])) pm.button(label= 'Load', command= pm.Callback(load_objects), width= 100) pm.button(label= '+', command= pm.Callback(add_objects), width= 100) pm.button(label= '-', command= pm.Callback(remove_objects), width= 100) pm.setParent('..') pm.button(label= 'Create Baking System', height= 50, width= 300, command= pm.Callback(create_baking_system)) pm.tabLayout( tab_layout, edit=True, tabLabel=((ui_creator, 'Setup'))) my_win.show()
def gui(): ''' # gui for the script ''' win = 'rigid_body_win' if pm.window(win, exists= True): pm.deleteUI(win) if pm.windowPref(win, exists= True): pm.windowPref(win, remove= True) global obj_scroll_list, name_field, tab_layout my_win = pm.window(win, title= 'BAKE', toolbox= True, width= 300) tab_layout = pm.tabLayout() ui_creator = pm.columnLayout(adjustableColumn= False) name_field = pm.textFieldGrp(label = 'System Name', text= 'Name', columnWidth2= [145, 150]) obj_scroll_list = pm.textScrollList(width= 300, height= 200, allowMultiSelection= True) pm.rowColumnLayout(nc=3, columnWidth= ([1,100], [2,100], [1,100])) pm.button(label= 'Load', command= pm.Callback(load_objects), width= 100) pm.button(label= '+', command= pm.Callback(add_objects), width= 100) pm.button(label= '-', command= pm.Callback(remove_objects), width= 100) pm.setParent('..') pm.button(label= 'Create Baking System', height= 50, width= 300, command= pm.Callback(create_baking_system)) pm.tabLayout( tab_layout, edit=True, tabLabel=((ui_creator, 'Setup'))) my_win.show()
def __init__(self): title = 'pbRenderableCurve' version = 1.02 if pm.window('pbRCurve', exists=True): pm.deleteUI('pbRCurve') with pm.window('pbRCurve', title='{0} | {1}'.format(title, version), s=False) as window: with pm.columnLayout(): with pm.frameLayout(l='Selection:', cll=True, bs='out'): with pm.columnLayout(): self.selField = pm.textFieldGrp(text='No Curves Selected', ed=False, l='Curve:', cw2=[72, 192]) with pm.rowLayout(nc=2): self.bRenderable = pm.checkBox(l='Renderable', cc=self.bcRenderable) with pm.frameLayout(l='Mesh Settings:', cll=True, bs='out') as self.meshUI: with pm.columnLayout(): with pm.rowLayout(nc=4): self.useNormal = pm.checkBox(l='Use Normal', cc=self.bcUseNormal) self.normalVector = [pm.intField(width=62, en=False, value=0, cc=self.setNormal), pm.intField(width=62, en=False, value=1, cc=self.setNormal), pm.intField(width=62, en=False, value=0, cc=self.setNormal)] self.meshAttrs = [AttrSlider(maxValue=128, name='Thickness', obj=getCurves, type_='float', fmn=0.0001), AttrSlider(value=3, minValue=3, maxValue=64, name='Sides', obj=getCurves, fmn=3, fmx=100), AttrSlider(minValue=1, maxValue=32, name='Samples', obj=getCurves, fmn=1, fmx=128)] with pm.frameLayout('Shell Settings:', cll=True, bs='out') as self.shellUI: with pm.columnLayout(): self.bShell = pm.checkBox(l='Enable Shell', cc=self.bcShell) self.shellAttrs = [AttrSlider(value=1, minValue=-64, maxValue=64, name='ShellThickness', obj=getCurves, type_='float'), AttrSlider(value=1, minValue=1, maxValue=64, name='ShellDivisions', obj=getCurves, fmn=1, fmx=32)] window.show() pm.scriptJob(event=['SelectionChanged', self.refresh], protected=True, p=window) self.refresh()
def initUI(self): pm.setUITemplate("DefaultTemplate", pushTemplate=True) form = pm.formLayout() binMeshExportPath = pm.optionVar.get('mtap_binMeshExportPath', pm.workspace.path + "/geo/export.binarymesh") prefix = pm.optionVar.get('mtap_binMeshExportPathPrefix', "prefix") createProxy = pm.optionVar.get('mtap_binMeshCreateProxy', True) percentage = pm.optionVar.get('mtap_binMeshPercentage', 0.1) createStandin = pm.optionVar.get('mtap_binMeshCreateStandin', True) oneFilePerMesh = pm.optionVar.get('mtap_binMeshOneFilePerMesh', False) useTransform = pm.optionVar.get('mtap_binMeshUseTransform', False) with pm.columnLayout('StandinLayout') as StandinLayout: with pm.frameLayout('StandinLayout', label="Standin export options", collapsable=False): with pm.columnLayout('StandinColumnLayout'): self.pathUI = pm.textFieldButtonGrp(label="Standin directory", text=binMeshExportPath, buttonLabel="File", buttonCommand=self.fileBrowser) self.prefixUI = pm.textFieldGrp(label="Prefix", text=prefix) self.createProxyUI = pm.checkBoxGrp(label="Create proxy", value1=createProxy) self.percentageUI = pm.floatFieldGrp(label="Percentage", value1=percentage) self.createStdInUI = pm.checkBoxGrp(label="Create StandIn", value1=createStandin) self.oneFilePerMeshUI = pm.checkBoxGrp(label="One File Per Mesh", value1=oneFilePerMesh) self.doTransformUI = pm.checkBoxGrp(label="Use Transform", value1=useTransform) with pm.rowColumnLayout(numberOfColumns=2): pm.button(label="Create BinaryMesh", c=self.doit) pm.button(label="Cancel", c=self.cancel) pm.formLayout(form, edit=True, attachForm=[(StandinLayout, 'top', 5), (StandinLayout, 'bottom', 5), (StandinLayout, 'right', 5), (StandinLayout, 'left', 5)]) pm.setUITemplate("DefaultTemplate", popTemplate=True)
def readNodeBtnCmd(self, *arg): kwTxtVal = pm.textFieldGrp('kwTxt', q=1, tx=1).replace(' ', '').split(',') if kwTxtVal: if cmds.listRelatives(cmds.ls(sl=1), ad=1, pa=1): readObjs = cmds.ls( selNode.read( cmds.ls(sl=1) + cmds.listRelatives(cmds.ls(sl=1), ad=1, pa=1))) else: readObjs = cmds.ls(selNode.read(cmds.ls(sl=1))) objs = [] for obj in readObjs: num = len(kwTxtVal) for txt in range(0, num): if kwTxtVal[txt] in obj: objs.append(obj) cmds.select(objs) else: print cmds.listRelatives(cmds.ls(sl=1), ad=1, pa=1) if cmds.listRelatives(cmds.ls(sl=1), ad=1, pa=1): readObjs = cmds.ls( selNode.read( cmds.ls(sl=1) + cmds.listRelatives(cmds.ls(sl=1), ad=1, pa=1))) else: readObjs = cmds.ls(selNode.read(cmds.ls(sl=1))) cmds.select(readObjs) print "#-----------------#" for obj in readObjs: print "# %s" % obj print "# Object(s) selected."
def multi_BasicSettings(): # Basic Settings pm.text(l='', h=5) multi_nameField = pm.textFieldGrp('hp3dNameField', l='Name', text='', cw=[2, 150], cc=fun.partial(multi_nameChange, 'hp3dNameField'), fcc=True) pm.rowColumnLayout(nc=2) pm.text(l='Basic Settings', w=75, al='left', en=False) pm.separator(w=marginWidth-75, h=14) pm.setParent(multiLight_layout) multi_color = pm.colorSliderGrp('hp3dColorSlider', label='Color', rgb=(1, 1, 1), cw=[3, 20], dc=fun.partial(multi_colorChange, '.color', 'all', 'hp3dColorSlider')) multi_intensity = pm.floatSliderGrp('hp3dIntensitySlider', label='Intensity', field=True, v=1.000, fmx=1000000000, pre=3, cw=[3, 20], dc=fun.partial(multi_floatChange, '.intensity', 'all', 'hp3dIntensitySlider')) # pm.text(l='', h=3) # GUI SPACER pm.rowColumnLayout(nc=2) pm.text(l='', w=142) # GUI SPACER global multi_illDefault_box multi_illDefault_box = pm.checkBox(l='Illuminates by Default', v=1, cc=multi_illDefault) pm.setParent(multiLight_layout) pm.rowColumnLayout(nc=3) pm.text(l='', w=142) # GUI SPACER multi_emitDiff_box = pm.checkBox('hp3dEmitDiffCheckbox', l='Emit Diffuse', v=1, w=120, cc=fun.partial(multi_checkboxChange, '.emitDiffuse', 'all', 'hp3dEmitDiffCheckbox')) multi_emitSpec_box = pm.checkBox('hp3dEmitSpecCheckbox', l='Emit Specular', v=1, cc=fun.partial(multi_checkboxChange, '.emitSpecular', 'all', 'hp3dEmitSpecCheckbox')) pm.setParent(multiLight_layout) pm.rowColumnLayout(nc=3) pm.text(l='Decay Rate', w=140, al='right') pm.text(l='', w=3) multi_decayRate_menu = pm.optionMenu('hp3dDecayRateMenu', bgc=primary_componentColor, cc=fun.partial(multi_menuChange, '.decayRate', 'not directional', 'hp3dDecayRateMenu')) pm.menuItem(l='No Decay', da=0) pm.menuItem(l='Linear', da=1) pm.menuItem(l='Quadratic', da=2) pm.menuItem(l='Cubic', da=3) pm.setParent(multiLight_layout)
def __init__(self): self.tricode_list = [] self._scene_type = { 1: 'Team Logo Update', 2: 'Blue City Weekly', 3: 'New Years\' Six Elements', 4: 'Playoff Elements', 5: 'Current Scene Only' } # WINDOW UI SHIT self.wh = (500, 500) self.setTitle('CFB Versioning Tool') self.setResizeToFitChildren(1) main = pm.formLayout() ui_text_tricodes = pm.textFieldGrp('ui_text_tricodes', l='Tricode List (comma-separated)', cw2=[200, 200], cl2=['right', 'right'], p=main) ui_btn_go = pm.button('ui_btn_go', l='B U I L D', c=self.btn_go, p=main) main.redistribute()
def __init__(self, questions_file): self.file = open(questions_file, 'r') self.questions = self.file.readlines() self.file.close() self.main_layout = pm.columnLayout() self.name_field = pm.textFieldGrp(label='Quiz Name') self.layout = pm.rowColumnLayout(numberOfColumns=2, columnWidth=([1, 75], [2, 475])) pm.columnLayout() pm.text(label='Questions') self.question_scroll_list = pm.textScrollList( width=60, height=400, selectCommand=pm.Callback(self.read_questions), allowMultiSelection=True) pm.setParent(self.layout) pm.columnLayout() pm.text(label='Questions Info') self.question_scroll_field = pm.scrollField(wordWrap=True, height=400, width=475) pm.setParent(self.main_layout) pm.button(label='Create Quiz', command=pm.Callback(self.create_quiz), width=550, height=50) self.list_questions()
def getUIData(self, *args): self.prefix = pm.textFieldGrp(self.nameFld, query=True, text=True) self.loc1 = pm.textFieldButtonGrp(self.loc1Fld, query=True, text=True) self.loc2 = pm.textFieldButtonGrp(self.loc2Fld, query=True, text=True) self.loc3 = pm.textFieldButtonGrp(self.loc3Fld, query=True, text=True) self.shoulder = pm.textFieldButtonGrp(self.upperTorsoFld, query=True, text=True) self.cog = pm.textFieldButtonGrp(self.lowerTorsoFld, query=True, text=True) self.world = pm.textFieldButtonGrp(self.worldFld, query=True, text=True) self.hand_cnt = pm.textFieldButtonGrp(self.handCntFld, query=True, text=True) self.aim = pm.radioButtonGrp(self.aimFld, q=True, sl=True) self.aimPolarity = pm.radioButtonGrp(self.aimPolarityFld, q=True, sl=True) self.up = pm.radioButtonGrp(self.upFld, q=True, sl=True) self.upPolarity = pm.radioButtonGrp(self.upPolarityFld, q=True, sl=True) self.normal = pm.radioButtonGrp(self.nrFld, query=True, sl=True) self.radius = pm.floatFieldGrp(self.rFld, query=True, value1=True) self.build = pm.radioButtonGrp(self.buildFld, query=True, sl=True)
def finalize(*args): Input_spineJoints = pm.intFieldGrp("spineNumberField", q=True, v1=True) Input_RigPrefix = pm.textFieldGrp("RigPrefix", q=True, tx=True) AutoRig_JT.finaliseRig(Input_spineJoints,Input_RigPrefix)
def layersReplace(self, attribute): if attribute is not "none": self.thisNode = pm.PyNode(attribute).node() log.debug("layersReplace {0}".format(attribute)) pm.setUITemplate("attributeEditorTemplate", pushTemplate=True) materialEntries = self.thisNode.materialEntryMtl.numElements() #print "layersReplace: node has ", self.thisNode.materialEntryMtl.numElements(), "layers" if self.layersUi is not None: pm.deleteUI(self.layersUi) with pm.columnLayout(adj=True, parent=self.uiParent) as self.layersUi: for layerNumber in range(materialEntries): layerIndex = self.thisNode.materialEntryMtl.elementByPhysicalIndex(layerNumber).index() with pm.frameLayout(label="Layer {0}".format(layerNumber), collapsable=True, collapse=False): print "create layer", layerNumber with pm.columnLayout(adj=True): attribute = self.thisNode.materialEntryMtl[layerIndex] tf = pm.textFieldGrp(label="Shader", editable=False) if attribute.isConnected(): tf.setText(attribute.inputs(p=1)[0]) pm.attrColorSliderGrp(label="Material", at=attribute) attribute = self.thisNode.materialEntryAmount[layerIndex] pm.attrColorSliderGrp(label="Amount", at=attribute) with pm.columnLayout(adj=True): pm.button(label="Remove Layer", c=pm.Callback(self.removeLayer, layerIndex), height=18) pm.button(label="Layer Up", c=pm.Callback(self.moveLayerUp, layerIndex), height=18) pm.button(label="Layer Down", c=pm.Callback(self.moveLayerDown, layerIndex), height=18) pm.setUITemplate("attributeEditorTemplate", popTemplate=True)
def __init__(self): self.main_layout = pm.columnLayout(adjustableColumn= True) self.layout01 = pm.rowColumnLayout(numberOfColumns= 3, columnWidth=([1, 150],[2, 150], [3, 250])) pm.columnLayout() pm.text(label= 'Shaders') self.shader_scroll_list01 = pm.textScrollList(width= 150, height= 200, selectCommand= pm.Callback(self.get_output_geo)) pm.button(label= 'Refresh', width= 150, command= pm.Callback(self.update_shaders_list)) pm.setParent(self.layout01) pm.columnLayout() pm.text(label= 'Shader Geo') self.shader_geo_scroll_list = pm.textScrollList(width= 150, height= 200, allowMultiSelection= True) #self.check_box = pm.checkBox(label= 'select node') pm.setParent(self.layout01) pm.columnLayout() pm.text(label= 'Scene Geo') self.scene_geo_scroll_list = pm.textScrollList(width= 250, height= 200, allowMultiSelection= True) pm.button(label= 'Refresh', width= 275, command= pm.Callback(self.update_scene_geo_list)) pm.setParent(self.main_layout) self.layout02 = pm.rowColumnLayout(numberOfColumns= 2, columnWidth=([1, 275],[2, 275])) pm.columnLayout(adjustableColumn= True) pm.text(label= 'Shaders') self.shader_scroll_list02 = pm.textScrollList(width= 275, height= 200) pm.button(label= 'Assign', width= 275, command= pm.Callback(self.assign_to_geometry)) pm.setParent(self.layout02) pm.columnLayout(adjustableColumn= True) pm.text(label= 'Create Shaders') self.option_menu = pm.optionMenu( label='Material Type', width= 200) pm.menuItem( label='mia_material_x') pm.menuItem( label='blinn') pm.menuItem( label='lambert') pm.menuItem( label='phong') pm.menuItem( label='rampShader') pm.menuItem( label='anisotropic') pm.menuItem( label='phongE') pm.menuItem( label='useBackground') self.text_field = pm.textFieldGrp(label= 'Name', columnWidth2= [100, 150]) pm.button(label= 'Create and Assign Shader', command= pm.Callback(self.create_and_assign_shader)) self.update_scene_geo_list() self.update_shaders_list()
def _buildupWindow(self): if isinstance(self._window, _pmCore.uitypes.Window) and self._window.exists(self._window.name()): _pmCore.deleteUI(self._window, window=True) self._window = _pmCore.window(title=self._winTitle) _pmCore.columnLayout() self._sceneName = _pmCore.textFieldGrp(label='Scene Name: ', columnAlign2=('left', 'left'), columnWidth2=(80, 200)) _pmCore.rowLayout(numberOfColumns=2) self._filePath = _pmCore.textFieldGrp(label='Directory: ', columnAlign2 = ('left', 'left'), columnWidth2=(80, 180)) _pmCore.button(label='...', width=20, command=_functools.partial(self._directorySelection, self._filePath)) _pmCore.setParent('..') self._category = _pmCore.optionMenuGrp(label='Category: ', columnAlign2=('left', 'left'), columnWidth2=(80, 200)) for category in _Database.getCategoryList(): _pmCore.menuItem(label=category) _pmCore.text(label='Description: ') self._description = _pmCore.scrollField(width = 300, height=100) _pmCore.rowLayout(numberOfColumns=2) _pmCore.button(label='OK', width=150, align='left', command=self._newAssetInfoConfirmed) _pmCore.button(label='Cancel', width=150, align='left', command=self._newAssetInfoClose)
def create(self, *args): a = pm.PyNode(pm.textFieldButtonGrp(self.aFld, q=1, text=1)) b = pm.PyNode(pm.textFieldButtonGrp(self.bFld, q=1, text=1)) name = a+'midJnt' num = pm.textFieldGrp(self.numFld, q=1, text=1) jnts, crv = self.makeJoints(a=a, b=b, name=name, num=num) self.constrainJoints(a=a, b=b, jnts=jnts) pm.delete(crv)
def order_by_ui(self, *args): self.order = pmc.checkBoxGrp(self.order_ui, q=True, v1=True) self.spp_.sort_objects(alphabetical=self.order, filter_str=pmc.textFieldGrp(self.filter_ui, q=True, text=True), filter_test=self.filter_test) pmc.textScrollList(self.infos_ui, e=True, ra=True) pmc.textScrollList(self.infos_ui, e=True, a=[o.repr_ for o in self.spp_.order_obj])
def reNamerUI(): winName = 'reName_Tool' if(pm.window(winName,q=1,ex=1)): pm.deleteUI(winName) pm.window(winName,ret=1,mb=1) pm.columnLayout('reNameLayout',adj = 1) pm.textFieldGrp('pre',l = 'Prefix Name : ',tx = '',adj = 1,cl2 = ('left','left')) pm.radioButtonGrp('side',nrb = 3,la3 = ['left','center','right'],adj = 1,ad3 = 1) pm.textFieldGrp('obj',l = 'Object Name : ',tx = '',adj = 1,cl2 = ('left','left')) pm.textFieldGrp('starNum',l = 'Start Number : ',tx = 1,adj = 1,cl2 = ('left','left')) pm.textFieldGrp('paddingNum',l = 'Padding Number : ',tx = 0,adj = 1,cl2 = ('left','left')) pm.textFieldGrp('suffix',l = 'Suffix Name : ',tx = 'jj',adj = 1,cl2 = ('left','left')) pm.checkBox('je',l = 'make Last joint je',v = 1) pm.button('Select hierachy',c = 'selHierachy()') pm.button('Achtung!',c = 'renaming()') pm.showWindow(winName)
def modifySelected(self, *args): """script job will fire regardless of what is selected, so need to set up conditions so it doesn't error out""" # figure out if selected is a blueprint module selected_node = pm.ls(sl=True) # only if selection is one or zero because we may need to shift select if len(selected_node) <= 1: self.moduleInstance = None mod_moduleType = None mod_namespace = None # only if selection is one if len(selected_node) == 1: selected_node = selected_node[0] # need to figure out which module type we have selected if selected_node.hasAttr("MetaNode"): mod_moduleType = utils.getModuleMetaInfo(selected_node, "ModuleType") mod_namespace = utils.getModuleMetaInfo(selected_node, "Namespace") else: _logger.warning('ModifySelected: {} does not have attribute "MetaNode"'.format(selected_node)) control_enabled = False # import the module if mod_moduleType != None: control_enabled = True # putting an instance of the module in memory module = __import__(environ.BlueprintModulePath + mod_moduleType, {}, {}, [mod_moduleType]) reload(module) moduleClass = getattr(module, module.CLASS_NAME) self.moduleInstance = moduleClass(mod_namespace, self.find_parentModule()) _logger.info("\nModule Instance: {}".format(self.moduleInstance)) pm.textFieldGrp( self.UIwidgets["moduleOptions_name_textField"], edit=True, text=mod_namespace, enable=control_enabled ) pm.button(self.UIwidgets["moduleOptions_parent_button"], edit=True, enable=control_enabled) pm.button(self.UIwidgets["moduleOptions_delete_button"], edit=True, enable=control_enabled) pm.button(self.UIwidgets["moduleOptions_mirror_button"], edit=True, enable=control_enabled) self.createScriptJob()