def particleLocatorsFromUI(): ''' ''' # Define window particleLocatorsUI = 'particleLocatorsWindow' if not mc.window(particleLocatorsUI, q=True, ex=True): return # Get Particle particle = mc.textFieldGrp('partiLoc_particleTFG', q=True, text=True) if not particle: raise Exception('Particle "' + particle + '" does not exist!!') # Get Options prefix = mc.textFieldGrp('partiLoc_prefixTFG', q=True, text=True) bake = mc.checkBoxGrp('partiLoc_bakeAnimCBG', q=True, v1=True) st = mc.intFieldGrp('partiLoc_startEndISG', q=True, v1=True) en = mc.intFieldGrp('partiLoc_startEndISG', q=True, v2=True) rotate = mc.checkBoxGrp('partiLoc_rotateCBG', q=True, v1=True) scale = mc.checkBoxGrp('partiLoc_scaleCBG', q=True, v1=True) # Create Locators particleLocators(particle, bakeSimulation=bake, rotate=rotate, scale=scale, start=st, end=en, prefix=prefix)
def ui(): winName = 'setSpcSwc' if cmds.window(winName, exists = True): cmds.deleteUI(winName) cmds.window(winName, title = 'Set Up Space Switching', mnb = False, mxb = False) cmds.columnLayout(adj = True, rs = 3) cmds.rowColumnLayout(numberOfColumns = 2, columnOffset = [2, 'left', 5]) cmds.frameLayout(label = 'Objects', w = 150) cmds.textScrollList('objTxtScrLs', sc = partial(tak_mayaUiUtils.txtScrLsSC, 'objTxtScrLs'), allowMultiSelection = True) cmds.popupMenu() cmds.menuItem(label = 'Load Sels', c = partial(tak_mayaUiUtils.populateTxtScrList,'textScrollList', 'objTxtScrLs')) cmds.setParent('..') # Move to parent layout that is rowColumnLayout. cmds.frameLayout(label = 'Target Spaces', w = 150) cmds.textScrollList('trgSpcTxtScrLs', sc = partial(tak_mayaUiUtils.txtScrLsSC, 'trgSpcTxtScrLs'), allowMultiSelection = True) cmds.popupMenu() cmds.menuItem(label = 'Load Sels', c = partial(tak_mayaUiUtils.populateTxtScrList,'textScrollList', 'trgSpcTxtScrLs')) cmds.setParent('..') # Move to parent layout that is rowColumnLayout. cmds.setParent('..') # Move to parent layout that is columnLayout. cmds.checkBoxGrp('cnstChkBoxGrp', label = 'Constraint: ', numberOfCheckBoxes = 3, v1 = True, labelArray3 = ['Parent', 'Point', 'Orient'], columnAlign = [1, 'left'], columnWidth = [(1, 70), (2, 80), (3, 80), (4, 80)], on1 = prntCnstChkBoxOn, on2 = posOriCnstChkBoxOn, on3 = posOriCnstChkBoxOn) cmds.button(label = 'Apply', c = main, h = 30) cmds.window(winName, e = True, w = 300, h = 100) cmds.showWindow(winName)
def locatorParticlesFromUI(): ''' ''' # Define window locParticleUI = 'locatorParticleWindow' if not mc.window(locParticleUI, q=True, ex=True): return # Get user selection sel = mc.ls(sl=True) if len(sel) == 1: if not mc.objExists(sel[0] + '.localScale'): sel = mc.listRelatives(sel[0], c=True, pa=True) locList = [i for i in sel if mc.objExists(i + '.localScale')] # Get Particle particle = mc.textFieldGrp('locParticle_particleTFG', q=True, text=True) if not particle: particle = 'nParticle1' radius = mc.floatSliderGrp('locParticle_radiusFSG', q=True, v=True) selfCollide = mc.checkBoxGrp('locParticle_selfCollideCBG', q=True, v1=True) rt = mc.checkBoxGrp('locParticle_rotateCBG', q=True, v1=True) sc = mc.checkBoxGrp('locParticle_scaleCBG', q=True, v1=True) # Execute generate particle command locatorParticles(locList, particle, radius, selfCollide, rotatePP=rt, scalePP=sc)
def init(self): window = c.window(title='WeatherViz',widthHeight=(400,600)); #form = c.formLayout(numberOfDivisions=100); c.rowColumnLayout(numberOfColumns=1); c.checkBoxGrp('weatherPanel', label='Weather'); c.checkBox('snowCheck', label='Snow', onc=self.snow.init, ofc=self.snow.remove, p='weatherPanel'); c.checkBox('rainCheck', label='Rain', onc=self.rain.init, ofc=self.rain.remove, p='weatherPanel'); c.checkBox('windCheck', label='Wind', onc=self.wind.init, ofc=self.wind.remove, p='weatherPanel'); c.button('collButton', label='Add collision', c=self.addCollision); #s1 = c.floatSliderGrp('snowTurb',label='Snow turbulence', field=True, value=5, dc=self.slider_drag_callback, min=0, max=10); c.floatSliderGrp('snowIntens',label='Snow Intencity', field=True, value=200, dc=self.slider_drag_callback, min=0, max=1000, en=False); c.floatSliderGrp('rainIntens',label='Rain Intencity', field=True, value=200, dc=self.slider_drag_callback, min=0, max=1000, en=False); c.floatSliderGrp('snowTurbSlider',label='Turbulence', field=True, value=1, dc=self.slider_drag_callback, min=0, max=100, en=False); c.floatSliderGrp('airMSlider',label='Wind Magnitude', field=True, value=30, dc=self.slider_drag_callback, min=0, max=100, en=False); c.floatSliderGrp('airMxdSlider',label='Wind Distance', field=True, value=20, dc=self.slider_drag_callback, min=0, max=100, en=False); #c.formLayout(form, edit=True, attachPosition=[(s1, 'top', 20, 1)]); #c.formLayout(form, edit=True, attachPosition=[(s2, 'top', 20, 1)]); c.textField("WeatherViz_HDR_Path_textField", cc=_WeatherViz_HDR_Path_textField__changeCommand) c.button("WeatherViz_HDR_Path_button", label="...", al="center", command=_WeatherViz_HDR_Path_button__command) WeatherViz_HDR_Path = c.optionVar(q="WeatherViz_HDR_Path") if WeatherViz_HDR_Path: c.textField("WeatherViz_HDR_Path_textField", edit=True, text=WeatherViz_HDR_Path) c.showWindow(window); c.windowPref(enableAll=True)
def settingsUI(): """Populate a parent form layout with UI controls for our traversal set. """ readFromGlobalsNode() global renderRepName global renderRepLabel global renderRepType global useRegularExpression # Get our parent layout, which will be a form layout. traversalSetLayout = cmds.setParent(query=True) repName = cmds.textFieldGrp(ad2=2, label=maya.stringTable['y_adskPrepareRender.kSceneAssemblyRenderSettingRepName'], text=renderRepName) repLabel = cmds.textFieldGrp(ad2=2, label=maya.stringTable['y_adskPrepareRender.kSceneAssemblyRenderSettingRepLabel'],text=renderRepLabel) repType = cmds.textFieldGrp(ad2=2, label=maya.stringTable['y_adskPrepareRender.kSceneAssemblyRenderSettingRepType'],text=renderRepType) useRegExp = cmds.checkBoxGrp(numberOfCheckBoxes=1, label=maya.stringTable['y_adskPrepareRender.kSceneAssemblyRenderSettingRgEx'], label1='', value1=useRegularExpression) cmds.textFieldGrp(repName, edit=True, changeCommand=('maya.app.sceneAssembly.adskPrepareRender.repNameChanged(\"' + repName + '\")')) cmds.textFieldGrp(repLabel, edit=True, changeCommand=('maya.app.sceneAssembly.adskPrepareRender.repLabelChanged(\"' + repLabel + '\")')) cmds.textFieldGrp(repType, edit=True, changeCommand=('maya.app.sceneAssembly.adskPrepareRender.repTypeChanged(\"' + repType + '\")')) cmds.checkBoxGrp(useRegExp, edit=True, changeCommand=('maya.app.sceneAssembly.adskPrepareRender.useRegExChkBoxChanged(\"' + useRegExp + '\")')) cmds.formLayout( traversalSetLayout, edit=True, attachForm=[(repName, 'top', 0), (repName, 'left', 0), (repName, 'right', 0), (repLabel, 'left', 0), (repLabel, 'right', 0), (repType, 'left', 0), (repType, 'right', 0), (useRegExp, 'left', 135), (useRegExp, 'right', 0)], attachControl=[(repLabel, 'top', 0, repName), (repType, 'top', 0, repLabel), (useRegExp, 'top', 0, repType)]) return
def pref_ui(): if cmds.window("pref", exists=True): cmds.deleteUI("pref") cmds.window("pref", title="Generate Pref v1.0", width=200, height=250) cmds.columnLayout(adjustableColumn=True) cmds.text(label='') cmds.text(label='Bhavesh Budhkar ', align='right') cmds.text(label='[email protected] ', align='right') cmds.text(label='') cmds.text(label='') cmds.text(label='Generate Pref for Arnold') cmds.text(label='') cmds.text(label=' 1. Drag and select mesh on viewport', align='left') cmds.text(label=' 2. Select one or both DCCs', align='left') cmds.text(label=' 3. Type frame number', align='left') cmds.text(label=' 4. Generate Pref', align='left') cmds.text(label='') cmds.checkBoxGrp("dcc", numberOfCheckBoxes=2, label='DCC:', labelArray2=['MtoA', 'HtoA/Alembic'], columnAlign=(1, "center"), value1=True, columnWidth3=(50, 70, 130)) cmds.intFieldGrp("frame", label="Frame:", value1=cmds.currentTime(query=True), columnAlign=(1, "center"), columnWidth2=(50, 180)) cmds.text(label='') cmds.button(label='Generate Pref', command="generate_pref()") cmds.button(label='Delete Pref', command="delete_pref(shape())") cmds.button(label='Close', command=('cmds.deleteUI(\"' + "pref" + '\", window=True)')) cmds.showWindow("pref")
def jpmAutoClusterCurve(): winName = "jpAutoClusterCurve" if (cmds.window(winName, exists=True)): cmds.deleteUI(winName) cmds.window(winName, t="Auto Cluster Curve v1.1", wh=(200, 70), rtf=1) cmds.rowColumnLayout(nc=1, w=210, cw=(1, 210)) cmds.text(label="Manipulator Type") cmds.radioButtonGrp("manipulatorType", w=300, h=25, nrb=3, cw=((1, 60), (2, 50), (3, 100)), cal=((1, "left"), (2, "left"), (3, "left")), l1="Locator", l2="Circle", l3="Last Selected", sl=2) cmds.text(label="Control Type") cmds.radioButtonGrp("parentConstrainGrp", w=300, h=25, nrb=3, cw=((1, 60), (2, 75), (3, 60)), l1="Parent", l2="Constrain", l3="Connect", sl=1) cmds.checkBoxGrp("groupResultsGrp", ncb=1, label="Group Results") cmds.button("clusterizeButton", w=50, l="Clusterize", c="jpmACcollectAndCall()") cmds.showWindow(winName)
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 attachToCurveFromUI(close=False): """ Execute attachToCurve() from UI """ # Window window = 'attachToCurveUI' if not cmds.window(window, q=True, ex=1): raise UIError('AttachToCurve UI does not exist!!') # Get UI data curve = cmds.textFieldGrp('attachToCurveTFB', q=True, text=True) transform = cmds.textFieldGrp('attachToCurveTransformTFB', q=True, text=True) prefix = cmds.textFieldGrp('attachToCurvePrefixTFG', q=True, text=True) closestPoint = cmds.checkBoxGrp('attachToCurveClosestPointCBG', q=True, v1=True) param = cmds.floatSliderGrp('attachToCurveParamFSG', q=True, v=True) paramAttr = cmds.textFieldGrp('attachToCurveParamAttrTFG', q=True, text=True) orient = cmds.checkBoxGrp('attachToCurveOrientCBG', q=True, v1=True) upVec = (cmds.floatFieldGrp('attachToCurveUpVecFFG', q=True, v1=True), cmds.floatFieldGrp('attachToCurveUpVecFFG', q=True, v2=True), cmds.floatFieldGrp('attachToCurveUpVecFFG', q=True, v3=True)) upVecObj = cmds.textFieldButtonGrp('attachToCurveUpVecObjTFG', q=True, text=True) # Check curve if not glTools.utils.curve.isCurve(curve): raise UserInputError('Object "' + curve + '" is not a valid nurbs curve!!') glTools.utils.attach.attachToCurve(curve=curve, transform=transform, uValue=param, useClosestPoint=closestPoint, orient=orient, upVector=upVec, worldUpObject=upVecObj, uAttr=paramAttr, prefix=prefix) # Cleanup if close: cmds.deleteUI(window)
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 defaultButtonPush(args): ''' Calls the procedure cityGenerator.city(...) with the user specified arguments. args: Dummy argument needed to satisfy the command interface. On exit: The cityGenerator.city(...) procedure has been called with the arguments specified by the user. ''' Name_ = cmds.textField("cityName", query = True, text = True) if Name_ == "": Name_ = "Helsinki" cityWidth = cmds.intSliderGrp("cityWidth", query = True, value = True) cityDepth = cmds.intSliderGrp("cityDepth", query = True, value = True) minHeight = cmds.intSliderGrp("minHeight", query = True, value = True) maxHeight = cmds.intSliderGrp("maxHeight", query = True, value = True) minWidth = cmds.intSliderGrp("minWidth", query = True, value = True) maxWidth = cmds.intSliderGrp("maxWidth", query = True, value = True) windows = cmds.checkBoxGrp("features", query = True, v1 = True) booleans = cmds.checkBoxGrp("features", query = True, v2 = True) deformers = cmds.checkBoxGrp("features", query = True, v3 = True) dayTime = cmds.checkBoxGrp("time", query = True, v1=True) glow = cmds.checkBoxGrp("time", query = True, v3=True) environment = cmds.colorSliderGrp("environment", query = True, rgbValue = True) colourRangeStart = (cmds.intSliderGrp("hue1", query = True, value = True), cmds.floatSliderGrp("saturation1", query = True, value = True), cmds.floatSliderGrp("value1", query = True, value = True)) colourRangeEnd = (cmds.intSliderGrp("hue2", query = True, value = True), cmds.floatSliderGrp("saturation2", query = True, value = True), cmds.floatSliderGrp("value2", query = True, value = True)) cityGenerator.city(Name_, (cityWidth,cityDepth),(minHeight,maxHeight), (minWidth,maxWidth), windows, booleans, deformers, dayTime, glow, environment,(colourRangeStart,colourRangeEnd))
def locatorParticlesUI(): """ """ # Define window locParticleUI = 'locatorParticleWindow' if cmds.window(locParticleUI, q=True, ex=True): cmds.deleteUI(locParticleUI) locParticleUI = cmds.window(locParticleUI, t='Generate Particles') # UI Layout cmds.columnLayout(adj=False, cal='left') partiTFG = cmds.textFieldGrp('locParticle_particleTFG', label='Particle', text='', cw=[(1, 100)]) radiusFFG = cmds.floatSliderGrp('locParticle_radiusFSG', label='radius', f=True, min=0.1, max=10.0, fmn=0.01, fmx=100.0, pre=2, v=1.0, cw=[(1, 100)]) rotateLocCBG = cmds.checkBoxGrp('locParticle_rotateCBG', label='Add rotatePP', ncb=1, v1=0, cw=[(1, 100)]) scaleLocCBG = cmds.checkBoxGrp('locParticle_scaleCBG', label='Add scalePP', ncb=1, v1=0, cw=[(1, 100)]) selfCollideCBG = cmds.checkBoxGrp('locParticle_selfCollideCBG', label='self collide', ncb=1, v1=0, cw=[(1, 100)]) cmds.button(l='Create Particles', c='glTools.tools.generateParticles.locatorParticlesFromUI()') # Popup menu cmds.popupMenu(parent=partiTFG) for p in cmds.ls(type=['particle', 'nParticle']): cmds.menuItem(p, c='cmds.textFieldGrp("' + partiTFG + '",e=True,text="' + p + '")') # Show Window cmds.showWindow(locParticleUI)
def copyTransform(): if mc.window("IC_copyTransforms", exists=1): mc.deleteUI("IC_copyTransforms") _winID = mc.window("IC_copyTransforms", title="IC_copyTransforms", wh=[240, 240], s=0, mxb=0) mc.columnLayout(columnAttach=('both', 5), rowSpacing=5, columnWidth=230) _translateCB = mc.checkBoxGrp("tCB", ncb=3, l="Translate", la3=["x", "y", "z"], cl4=["left", "left", "left", "left"], cw4=[70, 50, 50, 50]) _rotateCB = mc.checkBoxGrp("rCB", ncb=3, l="Rotate", la3=["x", "y", "z"], cl4=["left", "left", "left", "left"], cw4=[70, 50, 50, 50]) _scaleCB = mc.checkBoxGrp("sCB", ncb=3, l="Scale", la3=["x", "y", "z"], cl4=["left", "left", "left", "left"], cw4=[70, 50, 50, 50]) _btn1 = mc.button("ok", label="copy 1 -=> 2", command="OCT_generel.copyIt()") mc.showWindow(_winID)
def ui(): """ user interface for ml_copyAnim """ with utl.MlUi( "ml_copyAnim", "Copy Animation", width=400, height=120, info="""Copy animation across single nodes, or hierarchies based on name. Highlight the timeline to copy just that part of the animation.""", ) as win: mc.checkBoxGrp( "ml_copyAnim_layer_checkBox", label="Copy To New Layer", annotation="Create a new animation layer to copy the curves into, preserving the original animation.", ) win.ButtonWithPopup( label="Copy Single", command=copySingle, annotation="Copy animation from one object to another.", shelfLabel="cpAn", shelfIcon="defaultTwoStackedLayout", readUI_toArgs={"addToLayer": "ml_copyAnim_layer_checkBox"}, ) win.ButtonWithPopup( label="Copy Hierarchy", command=copyHierarchy, annotation="Uses name matching to copy animation across hierarchies.", shelfLabel="cpAn", shelfIcon="defaultTwoStackedLayout", readUI_toArgs={"addToLayer": "ml_copyAnim_layer_checkBox"}, )
def edgeLoopCurveUI(): ''' UI for edgeLoopCurve() ''' # Window window = 'edgeLoopCurveUI' if mc.window(window,q=True,ex=1): mc.deleteUI(window) window = mc.window(window,t='Edge Loop Curve') # Layout CL = mc.columnLayout() # Prefix prefixTFG = mc.textFieldGrp('edgeLoopCurvePrefixTFG',label='Prefix',text='') # Rebuild rebuildCBG = mc.checkBoxGrp('edgeLoopCurveRebuildCBG',numberOfCheckBoxes=1,label='Rebuild Curve',v1=True) # Span Count spanISG = mc.intSliderGrp('edgeLoopCurveSpanISG',field=True,label='Rebuild Spans',minValue=0,maxValue=10,fieldMinValue=0,fieldMaxValue=100,value=0,en=1) # Toggle UI element mc.checkBoxGrp('edgeLoopCurveRebuildCBG',e=True,cc='mc.intSliderGrp("edgeLoopCurveSpanISG",e=1,en=(not mc.intSliderGrp("edgeLoopCurveSpanISG",q=1,en=1)))') # Buttons createB = mc.button('edgeLoopCurveCreateB',l='Create',c='glTools.ui.curve.edgeLoopCurveFromUI(False)') createCloseB = mc.button('edgeLoopCurveCreateCloseB',l='Create and Close',c='glTools.ui.curve.edgeLoopCurveFromUI(True)') cancelB = mc.button('edgeLoopCurveCancelB',l='Cancel',c='mc.deleteUI("'+window+'")') # Show Window mc.showWindow(window)
def cancelUI(self, *args): self.dict["note"] = "__CANCEL__" self.dict["cam"] = cmds.checkBoxGrp(self.cam, q=True, v1=True) self.dict["shd"] = cmds.checkBoxGrp(self.shd, q=True, v1=True) # self.dict["rig"] = cmds.checkBoxGrp(self.rig, q=True, v1=True) # self.dict["freeze"] = cmds.checkBoxGrp(self.freeze, q=True, v1=True) cmds.layoutDialog(dismiss="cancel")
def get_ui_values(): global engine_path, folder, file_name, export_batch, resolution_x, resolution_y, exposure, gamma, \ ray_number, time, seed, export_animation, start_frame, end_frame, export_normals, invert_normals, check_Z, materials engine_path = cmds.textFieldButtonGrp(engine_field, query=True, text=True) folder = cmds.textFieldButtonGrp(directory_field, query=True, text=True) file_name = cmds.textFieldGrp(file_field, query=True, text=True) export_batch = cmds.checkBoxGrp(batch_field, query=True, value1=True) resolution_x = cmds.intFieldGrp(resolution_field, query=True, value1=True) resolution_y = cmds.intFieldGrp(resolution_field, query=True, value2=True) exposure = cmds.floatSliderGrp(exposure_field, query=True, value=True) gamma = cmds.floatSliderGrp(gamma_field, query=True, value = True) ray_number = cmds.intSliderGrp(rays_field, query=True, value=True) seed = cmds.intSliderGrp(seed_field, query=True, value=True) time = cmds.intSliderGrp(time_field, query=True, value=True) export_animation = cmds.checkBoxGrp(animation_field, query=True, value1=True) start_frame = cmds.intFieldGrp(frame_range_field, query=True, value1=True) end_frame = cmds.intFieldGrp(frame_range_field, query=True, value2=True) export_normals = cmds.checkBoxGrp(normals_export_field, query=True, value1=True) invert_normals = cmds.checkBoxGrp(normals_invert_field, query=True, value1=True) check_Z = cmds.checkBoxGrp(check_Z_field, query = True, value1=True) materials = [] for mat in range(5): materials.append(cmds.floatFieldGrp(eval('material_%i_field' % (mat)), query=True, value=True))
def switchFromUI(self, ctrl): """ Switch a spaces nodes to the specified target from the spaces UI @param ctrl: Control whose spaces target will be switched @type ctrl: str """ # Determine spaces node spacesNode = self.getSpacesNode(ctrl) tag = cmds.getAttr(spacesNode + '.nameTag') # Query Target # !!! optionMenu command no longer allows access to attrEnumOptionMenu !!! # target = cmds.optionMenu(tag+'_switchAEO',q=True,v=True) targetIndex = cmds.getAttr(cmds.attrEnumOptionMenu(tag + '_switchAEO', q=True, dtg=True)) target = self.targetList(spacesNode)[targetIndex] # Check keyframe options key = cmds.checkBoxGrp(self.uiKeyCBG, q=True, v1=True) keyPrevious = cmds.checkBoxGrp(self.uiKeyPreviousCBG, q=True, v1=True) # Check offset options maintainPos = cmds.checkBoxGrp(self.uiMaintainPosCBG, q=True, v1=True) # Do switch self.switch(ctrl, target, key, keyPrevious, maintainPos)
def particleLocatorsUI(): """ """ # Get current frame range start = cmds.playbackOptions(q=True, min=True) end = cmds.playbackOptions(q=True, max=True) # Define window particleLocatorsUI = 'particleLocatorsWindow' if cmds.window(particleLocatorsUI, q=True, ex=True): cmds.deleteUI(particleLocatorsUI) particleLocatorsUI = cmds.window(particleLocatorsUI, t='Generate Locators') # UI Layout cmds.columnLayout(adj=False, cal='left') partiTFG = cmds.textFieldGrp('partiLoc_particleTFG', label='Particle', text='', cw=[(1, 120)]) prefixTFG = cmds.textFieldGrp('partiLoc_prefixTFG', label='Prefix', text='', cw=[(1, 120)]) bakeAnicmdsBG = cmds.checkBoxGrp('partiLoc_bakeAnicmdsBG', label='Bake Animation', ncb=1, v1=0, cw=[(1, 120)]) startEndIFG = cmds.intFieldGrp('partiLoc_startEndISG', nf=2, label='Frame Range', v1=start, v2=end, cw=[(1, 120)]) rotateLocCBG = cmds.checkBoxGrp('partiLoc_rotateCBG', label='Rotate (rotatePP)', ncb=1, v1=0, cw=[(1, 120)]) scaleLocCBG = cmds.checkBoxGrp('partiLoc_scaleCBG', label='Scale (scalePP)', ncb=1, v1=0, cw=[(1, 120)]) cmds.button(l='Create Locators', c='glTools.tools.generateParticles.particleLocatorsFromUI()') # Popup menu cmds.popupMenu(parent=partiTFG) for p in cmds.ls(type=['particle', 'nParticle']): cmds.menuItem(p, c='cmds.textFieldGrp("' + partiTFG + '",e=True,text="' + p + '")') # Show Window cmds.showWindow(particleLocatorsUI)
def get_reference_list_UI(versionUp=True, origScene=None, *args): """ make a little ui to select references to export """ if cmds.window("getRefWin", exists=True): cmds.deleteUI("getRefWin") h=200 win = cmds.window("getRefWin", t=" References to Export", w=400, h=h+50, rtf=True) mainCLO = cmds.columnLayout(w=400, h=300,) cmds.text("Current References in the scene. Check the ones you'd like to export", al="left") cmds.separator(h=10) cmds.frameLayout(w=400, h=h+20, cll=False, l="References to Export") floCLO = cmds.columnLayout(h=h) cmds.scrollLayout(w=400, h=h) column = cmds.columnLayout(w=395, bgc=(.3, .3, .3)) for ref in sorted(cmds.file(q=True, reference=True)): rfn = cmds.referenceQuery(ref, rfn=True) cmds.checkBoxGrp(l=rfn, v1=True, cal=[(1, "left"), (2, "left")], cw=[(1, 350),(2, 25)]) cmds.setParent(mainCLO) cmds.separator(h=20) cmds.rowColumnLayout(nc=2, w=400) selAllBut = cmds.button(l="Select All", w=200, h=20, bgc=(.5,.5,.5), c=partial(select_all_cbs, column, 1)) deselAllBut = cmds.button(l="Deselect All", w=200, h=20, bgc=(.5,.5,.5), c=partial(select_all_cbs, column, 0)) cmds.setParent(mainCLO) expBut = cmds.button(l="Publish Files to MB and FBX!", w=400, h=40, bgc=(.5,.7,.5), c=partial(pull_refs_from_ui, column, versionUp, origScene)) cmds.window(win, e=True, w=5, h=5, rtf=True) cmds.showWindow(win)
def simpleTemplateEditorNodeNameEnable(*args): x = cmds.checkBoxGrp(chkBox2, q=1, v1=1) cmds.textField(textFld2, e=1, enable=(cmds.checkBoxGrp(chkBox2, q=1, v1=1))) if x == 1: cmds.textField(textFld2, e=1, enable=1)
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 get_reference_list_UI(versionUp=True, origScene=None, *args): if cmds.window("getRefWin", exists=True): cmds.deleteUI("getRefWin") win = cmds.window("getRefWin", t=" References to Export", w=400, h=300, rtf=True) cmds.scrollLayout(w=400, h=300) column = cmds.columnLayout(w=380, h=600) for ref in cmds.file(q=True, reference=True): rfn = cmds.referenceQuery(ref, rfn=True) cmds.checkBoxGrp(l=rfn, v1=True, cal=[(1, "left"), (2, "left")], cw=[(1, 350), (2, 25)]) cmds.separator(h=20) but = cmds.button(l="Publish Files to MB and FBX!", w=380, h=30, c=partial(pull_refs_from_ui, column, versionUp, origScene)) cmds.showWindow(win)
def options_pass(*args): xfersDo, shpsDo = cmds.checkBoxGrp(widgets["shapeCBG"], q=True, valueArray2=True) inputs, outputs = cmds.checkBoxGrp(widgets["inOutCBG"], q=True, valueArray2=True) sel = cmds.ls(sl=True) if len(sel) != 2: cmds.warning( "You don't have two things selected! (source, then target)") return () srcX = sel[0] tgtX = sel[1] if xfersDo: transfer_connections_do(srcX, tgtX, inputs, outputs) if shpsDo: # options for checkbox would go here. . . srcShp = cmds.listRelatives(srcX, s=True)[0] tgtShp = cmds.listRelatives(tgtX, s=True)[0] transfer_connections_do(srcShp, tgtShp, inputs, outputs)
def match(*args): # get the state of options modeOpt = cmds.optionMenu('modeOptMenu', q=True, v=True) tOpt = cmds.checkBoxGrp('optChkGrp', q=True, v1=True) rOpt = cmds.checkBoxGrp('optChkGrp', q=True, v2=True) sOpt = cmds.checkBoxGrp('optChkGrp', q=True, v3=True) mOpt = cmds.checkBox('mirChk', q=True, v=True) loOpt = cmds.checkBox('loChk', q=True, v=True) rvrsOpt = cmds.checkBox('rvrsSel', q=True, v=True) selList = cmds.ls(orderedSelection=True) # if first selected item is component, trackSlectionOrder if '[' in selList[0]: cmds.selectPref(trackSelectionOrder=True) src = selList[0] trg = selList[1] if rvrsOpt: src, trg = trg, src if modeOpt == 'Xform': matchWithXfrom(tOpt, rOpt, sOpt, mOpt, src, trg, loOpt) else: matchWithConst(tOpt, rOpt, sOpt, src, trg) cmds.select(trg, r=True)
def update_stored_values(): settings["custom_node"] = cmds.optionMenu(custom_node_menu, q=True, value=True) settings["status_use_reverse_node"] = cmds.checkBoxGrp(rev_disc_check_box_grp, q=True, value1=True) settings["status_disconnect"] = cmds.checkBoxGrp(rev_disc_check_box_grp, q=True, value2=True) settings["input_node_type"] = cmds.optionMenu(ctrl_node_output, q=True, value=True) settings["status_add_input"] = cmds.checkBox(add_ctrl_node, q=True, value=True) settings["status_force_connection"] = cmds.checkBox(forcing_connection_checkbox, q=True, value=True)
def transfer_connections_UI(*args): if cmds.window("xferConWin", exists=True): cmds.deleteUI("xferConWin") widgets["win"] = cmds.window("xferConWin", w=200, rtf=True) widgets["clo"] = cmds.columnLayout() cmds.separator(h=10) widgets["shapeCBG"] = cmds.checkBoxGrp(ncb=2, labelArray2=("transforms?", "shapes?"), cw=[(1, 100), (2, 100)], valueArray2=(1, 1), cal=[(1, "left"), (2, "left")]) cmds.separator(h=10) widgets["inOutCBG"] = cmds.checkBoxGrp(ncb=2, labelArray2=("inputs?", "outputs?"), cw=[(1, 100), (2, 100)], valueArray2=(0, 1), cal=[(1, "left"), (2, "left")]) cmds.separator(h=10) widgets["xferBut"] = cmds.button(l="Transfer Connections", w=200, h=40, bgc=(.7, .5, .5), c=options_pass) cmds.window(widgets["win"], e=True, w=5, h=5, rtf=True) cmds.showWindow(widgets["win"])
def ui(): ''' User interface for stopwatch ''' with utl.MlUi('ml_stopwatch', 'Stopwatch', width=400, height=175, info='''Press the start button to start recording. Continue pressing to set marks. When finished, press the stop button and the report will pop up.''') as win: mc.checkBoxGrp('ml_stopwatch_round_checkBox', label='Round to nearest frame', value1=True, annotation='Only whole number frames') mc.text('ml_stopwatch_countdown_text', label='Ready...') mc.button('ml_stopwatch_main_button', label='Start', height=80) _setButtonStart() mc.button(label='Stop', command=_stopButton, annotation='Stop the recording.')
def ui(): ''' user interface for ml_copyAnim ''' with utl.MlUi( 'ml_copyAnim', 'Copy Animation', width=400, height=120, info= '''Copy animation across single nodes, or hierarchies based on name. Highlight the timeline to copy just that part of the animation.''') as win: mc.checkBoxGrp( 'ml_copyAnim_layer_checkBox', label='Copy To New Layer', annotation= 'Create a new animation layer to copy the curves into, preserving the original animation.' ) win.ButtonWithPopup( label='Copy Single', command=copySingle, annotation='Copy animation from one object to another.', shelfLabel='cpAn', shelfIcon='defaultTwoStackedLayout', readUI_toArgs={'addToLayer': 'ml_copyAnim_layer_checkBox'}) win.ButtonWithPopup( label='Copy Hierarchy', command=copyHierarchy, annotation= 'Uses name matching to copy animation across hierarchies.', shelfLabel='cpAn', shelfIcon='defaultTwoStackedLayout', readUI_toArgs={'addToLayer': 'ml_copyAnim_layer_checkBox'})
def EditBlendShape(self): targetBlendShape=cmds.listAttr(self.BlendShape[0]+'.weight',multi=True) #[cmds.setAttr(self.BlendShape[0] +'.'+ i,0) for i in targetBlendShape] InbetweenField = cmds.getAttr(self.BlendShape[0] +'.'+self.tragetBlendShape) if cmds.checkBoxGrp('Inbetween',query=True,v1=True) == 1: set = float(InbetweenField) else: set = float(self.targetInbetween[0]) if cmds.checkBoxGrp('Inbetween',query=True,v1=True) == 1: BindPose = self.blendShapeMesh+'_inbetweenBindPose_'+self.tragetBlendShape else: BindPose = self.blendShapeMesh+'_inBindPose_'+self.tragetBlendShape duplicateMesh(self.blendShapeMesh,BindPose) cmds.setAttr(self.BlendShape[0] +'.'+self.tragetBlendShape,set) vertex = cmds.polyEvaluate(self.blendShapeMesh,vertex=True) int(vertex) for v in range(vertex) : ployPosition=cmds.pointPosition(self.blendShapeMesh +'.vtx[%d]' %v,w =True) cmds.move(ployPosition[0],ployPosition[1],ployPosition[2],BindPose+'.vtx[%d]' %v) SculptGeometryTool = "SculptGeometryTool" mel.eval(SculptGeometryTool) cmds.setAttr(self.blendShapeMesh+'.v',0) cmds.select(BindPose)
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 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 quickSelection(self, *args): selected = cmds.radioButtonGrp(self.quickSelectionGrp, query=True, select=True) # Set appropriate bools for lock/hide based on selected radioButton if selected == 1: self.setAllCheckBoxes(self.translateCheckBoxGrp, True) self.setAllCheckBoxes(self.rotateCheckBoxGrp, False) self.setAllCheckBoxes(self.scaleCheckBoxGrp, True) elif selected == 2: self.setAllCheckBoxes(self.translateCheckBoxGrp, False) self.setAllCheckBoxes(self.rotateCheckBoxGrp, True) self.setAllCheckBoxes(self.scaleCheckBoxGrp, True) elif selected == 3: self.setAllCheckBoxes(self.translateCheckBoxGrp, True) self.setAllCheckBoxes(self.rotateCheckBoxGrp, True) self.setAllCheckBoxes(self.scaleCheckBoxGrp, True) cmds.checkBoxGrp(self.visibilityCheckBoxGrp, edit=True, value1=True) elif selected == 4: self.setAllCheckBoxes(self.translateCheckBoxGrp, False) self.setAllCheckBoxes(self.rotateCheckBoxGrp, False) self.setAllCheckBoxes(self.scaleCheckBoxGrp, False) cmds.checkBoxGrp(self.visibilityCheckBoxGrp, edit=True, value1=False)
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 boolAttribute(mainSetting, setting): cmds.checkBoxGrp(str(setting.keys()[0])+'_attribute', numberOfCheckBoxes=1, label=str(setting.keys()[0]).replace('_', ' '), v1=setting.values()[0], cc="import dmptools.setup.settingsWindow as settingsWindow;settingsWindow.updateBoolAttribute('"+mainSetting+"')" )
def select_all_cbs(ui=None, value=0, *args): """ called from buttons, will select or deselect all the ui checkboxes """ cbs = cmds.columnLayout(ui, q=True, ca=True) for cb in cbs: cmds.checkBoxGrp(cb, e=True, v1=value)
def display_cvwrap_options(*args, **kwargs): cmds.loadPlugin('cvwrap', qt=True) layout = mel.eval('getOptionBox') cmds.setParent(layout) cmds.columnLayout(adj=True) for widget in [ NAME_WIDGET, RADIUS_WIDGET, BIND_FILE_WIDGET, NEW_BIND_MESH_WIDGET ]: # Delete the widgets so we don't create multiple controls with the same name try: cmds.deleteUI(widget, control=True) except: pass cmds.textFieldGrp(NAME_WIDGET, label='Node name', text='cvWrap#') radius = cmds.optionVar(q=RADIUS_WIDGET) cmds.floatSliderGrp(RADIUS_WIDGET, label='Sample radius', field=True, minValue=0.0, maxValue=100.0, fieldMinValue=0.0, fieldMaxValue=100.0, value=radius, step=0.01, precision=2) cmds.textFieldButtonGrp(BIND_FILE_WIDGET, label='Binding file ', text='', buttonLabel='Browse', bc=display_bind_file_dialog) use_new_bind_mesh = cmds.optionVar(q=NEW_BIND_MESH_WIDGET) cmds.checkBoxGrp(NEW_BIND_MESH_WIDGET, numberOfCheckBoxes=1, label='Create new bind mesh', v1=use_new_bind_mesh) mel.eval('setOptionBoxTitle("cvWrap Options");') mel.eval('setOptionBoxCommandName("cvWrap");') apply_close_button = mel.eval('getOptionBoxApplyAndCloseBtn;') cmds.button(apply_close_button, e=True, command=apply_and_close) apply_button = mel.eval('getOptionBoxApplyBtn;') cmds.button(apply_button, e=True, command=create_cvwrap) reset_button = mel.eval('getOptionBoxResetBtn;') # For some reason, the buttons in the menu only accept MEL. cmds.button( reset_button, e=True, command='python("import cvwrap.menu; cvwrap.menu.reset_to_defaults()");' ) close_button = mel.eval('getOptionBoxCloseBtn;') cmds.button(close_button, e=True, command=close_option_box) save_button = mel.eval('getOptionBoxSaveBtn;') cmds.button( save_button, e=True, command= 'python("import cvwrap.menu; cvwrap.menu.get_create_command_kwargs()");' ) mel.eval('showOptionBox')
def cmdCreate(self, *args ): axisIndex = cmds.optionMenuGrp( self.optionMenu, q=1, sl=1 )-1 inverseAim = cmds.checkBoxGrp( self.checkInverseAim, q=1, value1=1 ) displayAxis = cmds.checkBoxGrp( self.checkDisplayAxis, q=1, value1=1 ) #worldPosition = cmds.checkBoxGrp( self.checkWorldPosition, q=1, value1=1 ) cmdModel.uiCmd_createAimObject(axisIndex, inverseAim, displayAxis, True )
def _uiArgs(): selected = mc.checkBoxGrp('ml_deleteKey_selectedKey_checkBox', query=True, value1=True) chanBox = mc.checkBoxGrp('ml_deleteKey_chanBox_checkBox', query=True, value1=True) graphVis = mc.checkBoxGrp('ml_deleteKey_graphVis_checkBox', query=True, value1=True) current = mc.checkBoxGrp('ml_deleteKey_currentFrame_checkBox', query=True, value1=True) subFrames = mc.checkBoxGrp('ml_deleteKey_subFrames_checkBox', query=True, value1=True) kwargs = dict() if selected: kwargs['selectedKeys'] = True if chanBox: kwargs['selectedChannels'] = True if graphVis: kwargs['visibleInGraphEditor'] = True if current: kwargs['currentFrame'] = True if subFrames: kwargs['deleteSubFrames'] = True return kwargs
def evenEdgeSpacingUI(): """ Even Edge Spacing UI """ # Window window = 'evenEdgeSpacingUI' if cmds.window(window, q=True, ex=1): cmds.deleteUI(window) window = cmds.window(window, t='Even Edge Spacing', s=True) # Layout CL = cmds.columnLayout() # UI Elements cmds.intSliderGrp('evenEdgeSpacing_smoothISG', label='Smooth', field=True, minValue=0, maxValue=20, fieldMinValue=0, fieldMaxValue=100, value=4) cmds.floatSliderGrp('evenEdgeSpacing_influenceFSG', label='Influence', field=True, minValue=0.0, maxValue=1.0, fieldMinValue=0.0, fieldMaxValue=1.0, value=1.0) cmds.checkBoxGrp('evenEdgeSpacing_snapToOrigCBG', label='Maintain Shape', numberOfCheckBoxes=1, v1=False) # columnWidth2=[100,165] cmds.checkBoxGrp('evenEdgeSpacing_deleteHistoryCBG', label='Delete History', numberOfCheckBoxes=1, v1=False) cmds.button('evenEdgeSpacingB', l='Even Edge Spacing', w=390, c='glTools.model.straightenVerts.evenEdgeSpacingFromUI()') # Show Window cmds.window(window, e=True, wh=[392, 99]) cmds.showWindow(window)
def enable_distributed(self, arg) : """enable_distributed :param arg: Missing documentation about arg argument :return: """ ar_distr_frame = self.winMain + '|f0|t0|tc2|fr2' ar_distr = ar_distr_frame + '|fc2|' setDefaultIntValue( self_prefix, 'ar_distributed', self.ar_param, arg ) cmds.checkBoxGrp( ar_distr + 'ar_nomaster', edit=True, enable=arg ) # cmds.intFieldGrp( # ar_distr + 'ar_port', # edit=True, # enable=arg # ) cmds.intFieldGrp( ar_distr + 'ar_hosts_min', edit=True, enable=arg ) cmds.intFieldGrp( ar_distr + 'ar_hosts_max', edit=True, enable=arg ) # cmds.intFieldGrp( # ar_distr + 'ar_threads_limit', # edit=True, # enable=arg # ) cmds.textFieldGrp( ar_distr + 'ar_hosts', edit=True, enable=arg ) bg_color = self.save_frame_bgc if arg: bg_color = self.def_frame_bgc cmds.frameLayout( ar_distr_frame, edit=True, bgc=bg_color ) # , enableBackground=False
def dimScaleFields( self): status = 1 - mc.checkBoxGrp( self.uniformScale, q=1, v1=1) mc.floatFieldGrp( self.sScale, e=1, en=status) status = 1 - mc.checkBoxGrp( self.cmpAlongNormal, q=1, v1=1) mc.floatFieldGrp( self.tCmpScale, e=1, en=status) status = mc.checkBoxGrp( self.cmpUseDnoise, q=1, v1=1) mc.floatFieldGrp( self.cmpDnoiseScale, e=1, en=status)
def uiSetCheckBox(*args): if mc.checkBoxGrp('ml_goToKeyframe_selected_checkBox', query=True, value1=True): mc.checkBoxGrp('ml_goToKeyframe_selectKeys_checkBox', edit=True, value1=False, enable=False) elif mc.checkBoxGrp('ml_goToKeyframe_selectKeys_checkBox', query=True, value1=True): mc.checkBoxGrp('ml_goToKeyframe_selected_checkBox', edit=True, value1=False, enable=False) else: mc.checkBoxGrp('ml_goToKeyframe_selectKeys_checkBox', edit=True, enable=True) mc.checkBoxGrp('ml_goToKeyframe_selected_checkBox', edit=True, enable=True)
def enableChannel(source, target, *args): """This function enables or disables the indiv channel checkboxes when attr is toggled""" CBG = widgets[target] on = cmds.checkBox(widgets[source], q=True, v=True) if on: cmds.checkBoxGrp(CBG, e=True, en=True, va3=(1,1,1)) else: cmds.checkBoxGrp(CBG, e=True, en=False, va3=(0,0,0))
def flags(self,value):#Attribute Render Flag Assigner if value=='Apply': for sel in mc.ls(sl=1,dag=1): objType=mc.nodeType(sel) if objType== 'mesh' or objType == 'nurbsSurface' or objType == 'subdiv': for att in ls.renderAtts(): if not mc.getAttr(sel + '.' + att) == mc.checkBoxGrp(att,q=1, v1=1): mc.setAttr( sel + '.' + att , mc.checkBoxGrp(att,q=1, v1=1)) else: for each in ls.renderAtts(): mc.checkBoxGrp(each,e=1,v1=value)
def atomOpts(name='leg', limbName=4, size=1.0, distance=20, suffix=1, flip=[0, 0, 0], rot=1, aim=2, up=3): cmds.textField('atom_prefix_textField', e=True, tx=name) cmds.floatField('atom_bls_scale_floatField', e=True, v=size) cmds.floatField('atom_bls_ldf_floatField', e=True, v=distance) cmds.optionMenu('atom_bls_limb_optionMenu', e=True, sl=limbName) cmds.optionMenu('atom_suffix_optionMenu', e=True, sl=suffix) cmds.checkBoxGrp('atom_bls_flip_checkBoxGrp', e=True, va3=flip) cmds.radioButtonGrp('atom_bls_limbRot_radioButtonGrp', e=True, sl=rot) cmds.radioButtonGrp('atom_bls_limbAim_radioButtonGrp', e=True, sl=aim) cmds.radioButtonGrp('atom_bls_limbUp_radioButtonGrp', e=True, sl=up)
def printNodeEditAttributes(): """ Print list of node attributes that have reference edits. """ # Get Reference and Node Selection refList = cmds.textScrollList('refEdits_refListTSL', q=True, si=True) or [] nodeList = cmds.textScrollList('refEdits_nodeListTSL', q=True, si=True) or [] # Get Show Details showNamespace = cmds.checkBoxGrp('refEdits_showNamespaceCBG', q=True, v1=True) showDagPath = cmds.checkBoxGrp('refEdits_showLongNamesCBG', q=True, v1=True) successfulEdits = cmds.checkBoxGrp('refEdits_showSuccessEditsCBG', q=True, v1=True) failedEdits = cmds.checkBoxGrp('refEdits_showFailedEditsCBG', q=True, v1=True) # Get Edit Commands editCmd_parent = cmds.checkBoxGrp('refEdits_parentCBG', q=True, v1=True) editCmd_setAttr = cmds.checkBoxGrp('refEdits_setAttrCBG', q=True, v1=True) editCmd_addAttr = cmds.checkBoxGrp('refEdits_addAttrCBG', q=True, v1=True) editCmd_delAttr = cmds.checkBoxGrp('refEdits_delAttrCBG', q=True, v1=True) editCmd_conAttr = cmds.checkBoxGrp('refEdits_conAttrCBG', q=True, v1=True) editCmd_disconAttr = cmds.checkBoxGrp('refEdits_disconAttrCBG', q=True, v1=True) # Get Edit Commands for refNode in refList: # Get Reference Namespace ns = '' if showNamespace: ns = glTools.utils.reference.getNamespace(refNode) + ':' for node in nodeList: # Get Edit Attributes attrList = glTools.utils.reference.getEditAttrs(refNode, node, showNamespace=showNamespace, showDagPath=showDagPath, successfulEdits=successfulEdits, failedEdits=failedEdits, parent=editCmd_parent, setAttr=editCmd_setAttr, addAttr=editCmd_addAttr, deleteAttr=editCmd_delAttr, connectAttr=editCmd_conAttr, disconnectAttr=editCmd_disconAttr) # Append Output List if attrList: # Remove Duplicates and Sort attrList = list(set(attrList)) attrList.sort() # Print Result print('\n=== Edit Attributes: ' + node + ' ===\n') for attr in attrList: print attr
def loadNodeList(): """ """ # Get Selected Ref Node refNode = cmds.textScrollList('refEdits_refListTSL', q=True, si=True) or [] # Check Ref Node if not refNode: # No Reference Selected, Clear Node List cmds.textScrollList('refEdits_nodeListTSL', e=True, ra=True) return # Get Show Details showNamespace = cmds.checkBoxGrp('refEdits_showNamespaceCBG', q=True, v1=True) showDagPath = cmds.checkBoxGrp('refEdits_showLongNamesCBG', q=True, v1=True) successfulEdits = cmds.checkBoxGrp('refEdits_showSuccessEditsCBG', q=True, v1=True) failedEdits = cmds.checkBoxGrp('refEdits_showFailedEditsCBG', q=True, v1=True) # Get Edit Commands editCmd_parent = cmds.checkBoxGrp('refEdits_parentCBG', q=True, v1=True) editCmd_setAttr = cmds.checkBoxGrp('refEdits_setAttrCBG', q=True, v1=True) editCmd_addAttr = cmds.checkBoxGrp('refEdits_addAttrCBG', q=True, v1=True) editCmd_delAttr = cmds.checkBoxGrp('refEdits_delAttrCBG', q=True, v1=True) editCmd_conAttr = cmds.checkBoxGrp('refEdits_conAttrCBG', q=True, v1=True) editCmd_disconAttr = cmds.checkBoxGrp('refEdits_disconAttrCBG', q=True, v1=True) if not ( editCmd_parent or editCmd_setAttr or editCmd_addAttr or editCmd_delAttr or editCmd_conAttr or editCmd_disconAttr): # No Edit Commands Checked, Clear Node List cmds.textScrollList('refEdits_nodeListTSL', e=True, ra=True) return # Get Reference Edit Nodes nodeList = glTools.utils.reference.getEditNodes(refNode[0], showNamespace=showNamespace, showDagPath=showDagPath, successfulEdits=successfulEdits, failedEdits=failedEdits, parent=editCmd_parent, setAttr=editCmd_setAttr, addAttr=editCmd_addAttr, deleteAttr=editCmd_delAttr, connectAttr=editCmd_conAttr, disconnectAttr=editCmd_disconAttr) # Remove Duplicates and Sort nodeList = list(set([i for i in nodeList])) or [] nodeList.sort() # Apply Node List cmds.textScrollList('refEdits_nodeListTSL', e=True, ra=True) for node in nodeList: cmds.textScrollList('refEdits_nodeListTSL', e=True, a=node) # Filter List filterNodeList()
def resetFromUI(self, ctrl): """ Reset spaces constraint offsets for the specified control from the spaces UI @param ctrl: Control whose spaces target offset values will be rest @type ctrl: str """ # Get reset options key = cmds.checkBoxGrp(self.uiKeyCBG, q=True, v1=True) keyPrevious = cmds.checkBoxGrp(self.uiKeyPreviousCBG, q=True, v1=True) # Reset self.reset(ctrl, key, keyPrevious)
def ui(): ''' user interface for ml_copyAnim ''' with utl.MlUi('ml_copyAnim', 'Copy Animation', width=400, height=120, info='''Copy animation across single nodes, or hierarchies based on name. Highlight the timeline to copy just that part of the animation.''') as win: mc.checkBoxGrp('ml_copyAnim_layer_checkBox', label='Copy To New Layer', annotation='Create a new animation layer to copy the curves into, preserving the original animation.') win.ButtonWithPopup(label='Copy Single', command=copySingle, annotation='Copy animation from one object to another.', shelfLabel='cpAn', shelfIcon='defaultTwoStackedLayout', readUI_toArgs={'addToLayer':'ml_copyAnim_layer_checkBox'}) win.ButtonWithPopup(label='Copy Hierarchy', command=copyHierarchy, annotation='Uses name matching to copy animation across hierarchies.', shelfLabel='cpAn', shelfIcon='defaultTwoStackedLayout', readUI_toArgs={'addToLayer':'ml_copyAnim_layer_checkBox'})
def resetAllFromUI(self, char): """ Reset spaces constraint offsets for all controls in the specified character namespace @param char: Namespace of the character to reset spaces node offsets for @type char: str """ # Get key options key = cmds.checkBoxGrp(self.uiKeyCBG, q=True, v1=True) keyPrevious = cmds.checkBoxGrp(self.uiKeyPreviousCBG, q=True, v1=True) # Reset Spaces Nodes for spacesNode in cmds.ls(char + '*_spn'): self.reset(spacesNode, key, keyPrevious)
def createGUI(): ''' Creates a user interface for the city generator script. On exit: A window with the user interface has been created. ''' GUIwindow = cmds.window( title = "City Generator") layout0 = cmds.columnLayout() imageNum = random.randint(1,19) cmds.image("cityImage", image="cityImages/dayImage" + str(imageNum) + ".jpg", width = 800, height = 288 ) layout1 = cmds.rowLayout(nc = 2, parent = layout0) layout2 = cmds.columnLayout(parent = layout1, rs = 3) cmds.rowLayout(nc = 2, parent = layout2, cw2 = [140,250]) cmds.text(label = "City name") cmds.textField("cityName", width = 240) cmds.intSliderGrp("cityWidth", field=True, label="City width", minValue=50, maxValue=200, fieldMinValue=50, fieldMaxValue=200, value=100, cal = [1,"left"],parent = layout2) cmds.intSliderGrp("cityDepth", field=True, label="City depth", minValue=50, maxValue=200, fieldMinValue=50, fieldMaxValue=200, value=100, cal = [1,"left"],parent = layout2) cmds.intSliderGrp("minHeight", field=True, label="Minimum house height", minValue=4, maxValue=40, fieldMinValue=4, fieldMaxValue=40, value=4, cal = [1,"left"],parent = layout2, dc = changeMaxHeight) cmds.intSliderGrp("maxHeight", field=True, label="Maximum house height", minValue=4, maxValue=40, fieldMinValue=4, fieldMaxValue=40, value=30, cal = [1,"left"],parent = layout2, dc = changeMinHeight) cmds.intSliderGrp("minWidth", field=True, label="Minimum house width", minValue=2, maxValue=20, fieldMinValue=2, fieldMaxValue=20, value=5, cal = [1,"left"],parent = layout2, dc = changeMaxWidth) cmds.intSliderGrp("maxWidth", field=True, label="Maximum house width", minValue=12, maxValue=30, fieldMinValue=12, fieldMaxValue=30, value=20, cal = [1,"left"],parent = layout2, dc = changeMinWidth) cmds.checkBoxGrp("features", numberOfCheckBoxes=3, label1="Windows", label2 = "Booleans", label3="Deformers", v1=True, v2 = False, v3 = True, cc1 = windows, cc2 = booleans, cal = [1,"left"],parent = layout2,cw = [1,140]) cmds.checkBoxGrp("time", numberOfCheckBoxes=3, label1="Daytime", label2="Nighttime", label3 = "All windows glow", v1=True, v2 = False, v3 = False, enable3 = False, cal = [1,"left"], parent = layout2,cw = [1,140], cc1 = daytime, cc2 = nighttime ) cmds.colorSliderGrp("environment", label="Environment colour", hsv=(204, 0.451, 1), parent = layout2, cal = [1,"left"] ) layout3 = cmds.columnLayout(parent = layout1) cmds.text("Set the colour range for the houses by selecting the ranges separately for hue,\nsaturation and value.", align = "left") cmds.text("\nStart of range:", align = "left") cmds.rowLayout( numberOfColumns=2, parent = layout3, cw2 = [70,200]) cmds.canvas("hueCanvas1", hsvValue=(0, 1, 1), width=70, height=15) cmds.intSliderGrp("hue1", field=True, label="Hue", minValue=0, maxValue=360, fieldMinValue=0, fieldMaxValue=360, value=0,cw3 = [70,70,170], dc = hueChange1 ) cmds.rowLayout( numberOfColumns=2, parent = layout3, cw2 = [70,200]) cmds.canvas("saturationCanvas1", hsvValue=(0, 1, 1), width=70, height=15) cmds.floatSliderGrp("saturation1", field=True, label="Saturation", minValue=0, maxValue=1, fieldMinValue=0, fieldMaxValue=1, value=1,cw3 = [70,70,170], dc = saturationChange1, step = 0.01) cmds.rowLayout( numberOfColumns=2, parent = layout3, cw2 = [70,200]) cmds.canvas("valueCanvas1", hsvValue=(0, 1, 1), width=70, height=15) cmds.floatSliderGrp("value1", field=True, label="Value", minValue=0, maxValue=1, fieldMinValue=0, fieldMaxValue=1, value=1,cw3 = [70,70,170], dc = valueChange1, step = 0.01) cmds.text("End of range:", align = "left", parent = layout3) cmds.rowLayout( numberOfColumns=2, parent = layout3, cw2 = [70,200]) cmds.canvas("hueCanvas2", hsvValue=(0, 1, 1), width=70, height=15) cmds.intSliderGrp("hue2", field=True, label="Hue", minValue=0, maxValue=360, fieldMinValue=0, fieldMaxValue=360, value=0,cw3 = [70,70,170], dc = hueChange2 ) cmds.rowLayout( numberOfColumns=2, parent = layout3, cw2 = [70,200]) cmds.canvas("saturationCanvas2", hsvValue=(0, 1, 1), width=70, height=15) cmds.floatSliderGrp("saturation2", field=True, label="Saturation", minValue=0, maxValue=1, fieldMinValue=0, fieldMaxValue=1, value=1,cw3 = [70,70,170], dc = saturationChange2, step = 0.01) cmds.rowLayout( numberOfColumns=2, parent = layout3, cw2 = [70,200]) cmds.canvas("valueCanvas2", hsvValue=(0, 1, 1), width=70, height=15) cmds.floatSliderGrp("value2", field=True, label="Value", minValue=0, maxValue=1, fieldMinValue=0, fieldMaxValue=1, value=1,cw3 = [70,70,170], dc = valueChange2, step = 0.01) cmds.button(label = "Randomize", command = randomize, parent = layout3) layout4 = cmds.rowLayout(numberOfColumns=2, parent = layout0, cw2 = [690,110]) cmds.button(label="Generate City", command = defaultButtonPush, parent = layout4, w = 685, h = 50) cmds.button(label="Clear Scene", command = clearScene, parent = layout4, w = 110, h = 50) cmds.showWindow()
def softDeformerUI(): """UI for the whole thing""" if cmds.window("softModWin", exists = True): cmds.deleteUI("softModWin") widgets["window"] = cmds.window("softModWin", t="zbw_softDeformer", w=300, h=130) widgets["tabLO"] = cmds.tabLayout() widgets["smCLO"] = cmds.columnLayout("SoftModDeformer", w=300) cmds.separator(h=10) widgets["smdTFG"] = cmds.textFieldGrp(l="Deformer Name", w=300, cw=[(1,100),(2,190)], cal=[(1,"left"), (2, "left")], tx="softMod_DEF") widgets["firstVertCBG"] = cmds.checkBoxGrp(l="Use only 1st vert (vs. avg pos)", v1=0, cw=[(1,200)], cal=[(1,"left"), (2,"left")]) widgets["parentCBG"] = cmds.checkBoxGrp(l="Parent Ctrl Under Geo?", v1=0, cw=[(1,200)], cal=[(1,"left"), (2,"left")]) widgets["incrCBG"] = cmds.checkBoxGrp(l="Increment name after creation?", v1=1, cw=[(1,200)], cal=[(1,"left"), (2,"left")]) widgets["checkCBG"] = cmds.checkBoxGrp(l="AutoCheck if there are deformers?", v1=1, cw=[(1,200)], cal=[(1,"left"), (2,"left")]) widgets["scaleFFG"] = cmds.floatFieldGrp(l="Control Scale", v1=1, pre=2, cw=[(1,100),(2,50)], cal=[(1,"left"),(2,"left")]) cmds.separator(h=10, style="single") widgets["button"] = cmds.button(l="Create Deformer", w=300, h=40, bgc=(.6,.8,.6), c=softModDeformerDo) #second tab to softselect deformer cmds.setParent(widgets["tabLO"]) widgets["ssCLO"] = cmds.columnLayout("SoftSelectDeformer", w=300) widgets["ssdTFG"] = cmds.textFieldGrp(l="Deformer Name", w=300, cw=[(1,100),(2,190)], cal=[(1,"left"), (2, "left")], tx="softSelect_DEF") widgets["ssCPOMCBG"] = cmds.checkBoxGrp(l="Control to closest point on mesh?", v1=1, cw=[(1,200)], cal=[(1,"left"), (2,"left")]) widgets["ssParentCBG"] = cmds.checkBoxGrp(l="Parent Ctrl Under Geo?", v1=0, cw=[(1,200)], cal=[(1,"left"), (2,"left")]) widgets["ssIncrCBG"] = cmds.checkBoxGrp(l="Increment name after creation?", v1=1, cw=[(1,200)], cal=[(1,"left"), (2,"left")]) widgets["ssCheckCBG"] = cmds.checkBoxGrp(l="AutoCheck if there are deformers?", v1=1, cw=[(1,200)], cal=[(1,"left"), (2,"left")]) widgets["ssScaleFFG"] = cmds.floatFieldGrp(l="Control Scale", v1=1, pre=2, cw=[(1,100),(2,50)], cal=[(1,"left"),(2,"left")]) cmds.separator(h=10, style="single") widgets["button"] = cmds.button(l="Create Deformer", w=300, h=40, bgc=(.6,.8,.6), c=softSelectDef) cmds.showWindow(widgets["window"])
def windows(args): ''' Changes the booleans checkbox to be disabled and unchecked when the windows checkbox is unchecked. args: Dummy argument needed to satisfy the command interface. On exit: If the windows checkbox is checked the booleans checkbox has been enabled. If it is unchecked, the booleans checkbox has been unchecked and disabled. ''' windows = cmds.checkBoxGrp("features", query = True, v1 = True) if windows == False: cmds.checkBoxGrp("features", edit = True, v2 = False, enable2 = False) else: cmds.checkBoxGrp("features", edit = True, enable2 = True)
def getCheckBoxSelectionAsList(control): ''' Name :getCheckBoxSelectionAsList Arguements :<control>: checkBoxGro Description :Queries the checkBoxGrp for which buttons are on returns a 3 element array # :0 is not selected, 1 is selected Notes :For some reason maya doesn't want to return this, all though it seems to be # available in the docs ''' checked = [] checked.append(cmds.checkBoxGrp(control, query=True, v1=True)) checked.append(cmds.checkBoxGrp(control, query=True, v2=True)) checked.append(cmds.checkBoxGrp(control, query=True, v3=True)) return checked