def addMultiAttr():
    #Create a variable for the window name
    winName = 'blend'
    winTitle = 'rh_addMultiAttr'
    #Delete the window if it exists
    if cmds.window(winName, exists=True):
        cmds.deleteUI(winName, window=True)
    #Build the main window
    cmds.window(winName, title=winTitle, sizeable=True)
    cmds.textFieldButtonGrp('Obj',label='Object :', text='', ed = False,buttonLabel='Load Sel',bc = 'sel()')
    cmds.columnLayout(adjustableColumn=True)    
    cmds.textFieldGrp('Attr',l='Attribute:',text='')   

    cmds.columnLayout(adjustableColumn=True)  
    cmds.floatFieldGrp('minAttr', numberOfFields=1, label='Min Value', value1=0) 
       
    cmds.columnLayout(adjustableColumn=True) 
    cmds.floatFieldGrp('maxAttr', numberOfFields=1, label='Max Value', value1=0)
    
    cmds.columnLayout(adjustableColumn=True)        
    cmds.button(label='Contact', command='Connect()')
    cmds.columnLayout(adjustableColumn=True)
    #Show the window
    cmds.showWindow(winName)
    cmds.window(winName, edit=True, width=300, height=120)
def j_MirrorBlendShape():
    '''
     UI
    '''
    global text1
    global text2 
    global text3
    j_MainWindow = ""
    if (mc.window(j_MainWindow, exists = 1 )):
        mc.deleteUI(j_MainWindow)
    j_MainWindow = mc.window(title = u"镜像表情", wh = (300,160))
    mc.columnLayout()
    mc.text(l = "")
    text1 = mc.textFieldButtonGrp( l = u"BaseObject:", buttonLabel = u"    < < < <    ", 
                          buttonCommand = 'xanthus.j_MirrorBlendShape.j_getObj(1)', cw3 = (90,120,100),h = 30)
    
    text2 = mc.textFieldButtonGrp(l = u"In-Between:", buttonLabel = u"    < < < <    ",
                          buttonCommand = "xanthus.j_MirrorBlendShape.j_getObj(2)", cw3 = (90,120,100),h = 30,enable = 0)
    
    text3 = mc.textFieldButtonGrp(l = u"BlendShape:", buttonLabel = u"    < < < <    ", 
                          buttonCommand = "xanthus.j_MirrorBlendShape.j_getObj(3)", cw3 = (90,120,100),h = 30)
    
    mc.text(l = "",h = 10)
    mc.setParent('..')
    mc.rowLayout(nc = 2 ,cw2= (150,150),ct2 = ("left","left") ,co2 = (8,0) )
    mc.button(l = u" 镜    像 ", w = 135, h= 30,c = "xanthus.j_MirrorBlendShape.j_MakeMirror()")
    mc.button(l = u" 重    置 ", w = 135, h= 30,c = "xanthus.j_MirrorBlendShape.j_Reset()")
    mc.setParent('..')
    mc.columnLayout
    mc.text(l = "                        copyright@ xanthus by Jiangjishi ", enable = 0)
    mc.showWindow(j_MainWindow)
Exemple #3
0
def win(*args):
    '''Window used to update the mesh
    '''
    #if any windows are open that deal with updating the mesh, close them
    winList=['atom_meshUpdateWin', 'keyMeshdirDialogWin']
    for win in winList:
        if cmds.window(win, ex=True):
            cmds.deleteUI(win)
    #create the window
    cmds.window('atom_meshUpdateWin', title = 'Atom Mesh Update')
    cmds.columnLayout(co=['both',5],adj=True, rs=5)
    path = os.path.join(cmds.workspace(query=True, o=True), 'scenes/anim/template_rig/CharactersWork/SantaPup/RIG/mesh_update_info')
    button_state = True
    #Test if the mesh_update_folder is the current path, this will usually be false
    if os.path.exists(path) != True:
        print path
        path = cmds.workspace(query=True, o=True)
        button_state=False
        print 'mesh_update_info folder not found. Browse to folder to continue.'
        
    cmds.textFieldButtonGrp('atom_meshUpdatePath_tfbg', label='Path:', tx=path, buttonLabel='Set Path', ct3=['left','both','left'],
                            co3=[0,0,5],cl3=['left', 'center', 'center'], ad3=2, cw3=[35,100,80], bc='from atom import atom_updateMesh_lib\natom_updateMesh_lib.dirDialog()')
    cmds.button('atom_meshUpdate_button',l='Update Mesh', c ='from atom import atom_updateMesh_lib\natom_updateMesh_lib.updateMeshCMD()', en=button_state )
    cmds.scriptJob(runOnce=True,uid=['atom_meshUpdateWin', 'from atom import atom_updateMesh_lib\natom_updateMesh_lib.deleteDirDialog()'])
    cmds.showWindow('atom_meshUpdateWin')
Exemple #4
0
def ruMainWindow():
	ruWin = "riggUtils"
	if mc.window(ruWin,q=True,ex=True):
		mc.deleteUI(ruWin)

	mc.window(ruWin,title = "Rigging Utilities")
	mc.scrollLayout(horizontalScrollBarThickness=16)
	ruMainColumn = mc.columnLayout(columnAttach=("both",5),rowSpacing=10,columnWidth=320)
	mc.frameLayout(label="General",bs="etchedOut",w=300,mw=5,cll=1)
	mc.button(label='Show Axis',command='mc.toggle(state=True, localAxis=True)')
	mc.button(label='Hide Axis',command='mc.toggle(state=False, localAxis=True)')
		
	mc.frameLayout(label="Non T-Pose joint placer",bs="etchedOut",w=300,mw=5,cll=1,p=ruMainColumn)
	mc.columnLayout(rs=5,adj=1)
	mc.button(l="Create Helper Locator",c =ruCreateLocator)
	mc.button(l="Create Joint on Helper Locator",c =ruCreateJointLocator)
	mc.floatSliderGrp("ruJointRadius",en=1,label="Joint Radius",field=True,minValue=0,maxValue=5,fieldMinValue=0,fieldMaxValue=5,value=0.5,cw3=(70,30,10),dc=ruJointRadius)
	
	mc.frameLayout(label="Fingers Utils",bs="etchedOut",w=300,mw=5,cll=1,p=ruMainColumn)
	mc.columnLayout(rs=5,adj=1)
	mc.floatSliderGrp("ruJointOrientation",en=1,label="Finger Orient",field=True,minValue=0,maxValue=5,fieldMinValue=0,fieldMaxValue=5,value=0.5,cw3=(70,30,10),dc=ruOrientJoint)
	mc.frameLayout(label="Finger Renaming",bs="etchedOut",w=300,mw=5,cll=1)
	mc.optionMenu('ruFinger',l='Choose finger')
	mc.menuItem(l='Thumb')
	mc.menuItem(l='Index')
	mc.menuItem(l='Middle')
	mc.menuItem(l='Ring')
	mc.menuItem(l='Pinky')
	mc.textFieldButtonGrp( label='Template string', text='', buttonLabel='Rename', bc=ruRenameFinger, cw3=[120,70,70],ct3=['left','left','left'],co3=[2,2,2] )
	
	mc.showWindow(ruWin)
def get_ui_values():
    global engine_path, folder, file_name, export_batch, resolution_x, resolution_y, exposure, gamma, \
        ray_number, time, seed, export_animation, start_frame, end_frame, export_normals, invert_normals, check_Z, materials
        
    engine_path = cmds.textFieldButtonGrp(engine_field, query=True, text=True)
    folder = cmds.textFieldButtonGrp(directory_field, query=True, text=True)
    file_name = cmds.textFieldGrp(file_field, query=True, text=True)
    
    export_batch = cmds.checkBoxGrp(batch_field, query=True, value1=True)
    
    resolution_x = cmds.intFieldGrp(resolution_field, query=True, value1=True)
    resolution_y = cmds.intFieldGrp(resolution_field, query=True, value2=True)
    exposure = cmds.floatSliderGrp(exposure_field, query=True, value=True)
    gamma = cmds.floatSliderGrp(gamma_field, query=True, value = True)
    ray_number = cmds.intSliderGrp(rays_field, query=True, value=True)
    seed = cmds.intSliderGrp(seed_field, query=True, value=True)
    time = cmds.intSliderGrp(time_field, query=True, value=True)
    export_animation = cmds.checkBoxGrp(animation_field, query=True, value1=True)
    start_frame =  cmds.intFieldGrp(frame_range_field, query=True, value1=True)
    end_frame =  cmds.intFieldGrp(frame_range_field, query=True, value2=True)
    export_normals = cmds.checkBoxGrp(normals_export_field, query=True, value1=True)
    invert_normals = cmds.checkBoxGrp(normals_invert_field, query=True, value1=True)
    check_Z = cmds.checkBoxGrp(check_Z_field, query = True, value1=True)
    
    materials = []
    for mat in range(5):
        materials.append(cmds.floatFieldGrp(eval('material_%i_field' % (mat)), query=True, value=True))
def clearSeachField():
    """
    """
    # Clear Text Field
    cmds.textFieldButtonGrp('refEdits_nodeSearchTFG', e=True, text='')
    # Reload Node List
    loadNodeList()
def jointPerVertexUI():
	'''
	UI for jointPerVertex()
	'''
	# Window
	win = 'jntPerVtxUI'
	if mc.window(win,q=True,ex=1): mc.deleteUI(win)
	win = mc.window(win,t='Create Joint Per Vertex')
	
	# Layout
	cl = mc.columnLayout()
	
	# UI Elements
	prefixTFG = mc.textFieldGrp('jntPerVtx_prefixTFG',label='Prefix', text='')
	suffixTFG = mc.textFieldGrp('jntPerVtx_suffixTFG',label='Suffix', text='jnt')
	oriSurfaceTFB = mc.textFieldButtonGrp('jntPerVtx_oriSurfaceTFB',label='Orient Surface',text='',buttonLabel='Load Selected')
	
	# Buttons
	createB = mc.button('jntPerVtx_createB',l='Create',c='glTools.tools.jointPerVertex.jointPerVertexFromUI(False)')
	cancelB = mc.button('jntPerVtx_cancelB',l='Cancel',c='mc.deleteUI("'+win+'")')
	
	# UI callbacks
	mc.textFieldButtonGrp(oriSurfaceTFB,e=True,bc='glTools.ui.utils.loadObjectSel("'+oriSurfaceTFB+'","")')
	
	# Show Window
	mc.showWindow(win)
Exemple #8
0
def browseFile(rootDir, control, extFilter):
	"""browseFile

	:param rootDir:
	:param control:
	:param extFilter:
	:return:
	"""
	path = cmds.textFieldButtonGrp(control, q=True, text=True)
	startDir = path
	if isRelative(path):
		startDir = os.path.join(rootDir, path)

	fileNames = cmds.fileDialog2(
		fileMode=1,
		startingDirectory=os.path.dirname(startDir),
		dialogStyle=1,
		fileFilter=extFilter
	)

	if fileNames is not None:
		fileName = cmds.workspace(projectPath=fromNativePath(fileNames[0]))
		cmds.textFieldButtonGrp(
			control, e=True, text=fileName, forceChangeCommand=True
		)
Exemple #9
0
def stretchyIkSplineFromUI(close=False):
	'''
	'''
	# Window
	window = 'stretchyIkSplineUI'
	if not mc.window(window,q=True,ex=1): raise UIError('StretchyIkSpline UI does not exist!!')
	
	# Get UI data
	ik = mc.textFieldButtonGrp('stretchyIkSplineTFB',q=True,text=True)
	pre = mc.textFieldGrp('stretchyIkSplinePrefixTFG',q=True,text=True)
	scaleAxis = str.lower(str(mc.optionMenuGrp('stretchyIkSplineAxisOMG',q=True,v=True)))
	scaleAttr = mc.textFieldButtonGrp('stretchyIkSplineScaleAttrTFB',q=True,text=True)
	blendCtrl = mc.textFieldButtonGrp('stretchyIkSplineBlendCtrlTFB',q=True,text=True)
	blendAttr = mc.textFieldGrp('stretchyIkSplineBlendAttrTFG',q=True,text=True)
	method = mc.optionMenuGrp('stretchyIkSplineMethodOMG',q=True,sl=True)-1
	minPercent = mc.floatSliderGrp('stretchyIkSplineMinPFSG',q=True,v=True)
	maxPercent = mc.floatSliderGrp('stretchyIkSplineMaxPFSG',q=True,v=True)
	
	# Execute command
	if method: # Parametric
		glTools.builder.stretchyIkSpline_parametric.StretchyIkSpline_parametric().build(ikHandle=ik,scaleAttr=scaleAttr,blendControl=blendCtrl,blendAttr=blendAttr,scaleAxis=scaleAxis,minPercent=minPercent,maxPercent=maxPercent,prefix=pre)
	else: # Arc Length
		glTools.builder.stretchyIkSpline_arcLength.StretchyIkSpline_arcLength().build(ikHandle=ik,scaleAttr=scaleAttr,blendControl=blendCtrl,blendAttr=blendAttr,scaleAxis=scaleAxis,prefix=pre)
	
	# Cleanup
	if close: mc.deleteUI(window)
	def __init__(self): #(Initialization)

		### Initialize, definitions		
		if(mc.window("ms_orientObject",exists=True)):
			mc.deleteUI("ms_orientObject",window=True)
		mc.window("ms_orientObject",title="Orient Object v1.0",rtf=True)
		mc.columnLayout()

		mc.text(" ")
		mc.rowLayout(nc=4,cw4=(25,130,150,200) )
		mc.text(" ")
		mc.text("Orient object A to object B.")
		mc.text("Unparents during operation, so ")
		mc.text("constraints should not be applied yet.")
		mc.setParent("..")
		mc.text(" ")

		mc.separator(w=500)
		self.aObjFld = mc.textFieldButtonGrp( label='Object A:',bl='Load',bc=self.loadAObj,text='pCube1')
		self.bObjFld = mc.textFieldButtonGrp( label='Object B:',bl='Load',bc=self.loadBObj,text='inside_cube_small')
		mc.separator(w=500)
		
		mc.rowLayout(nc=2,cw2=(200,300))
		mc.text(" ")
		mc.button(label="-=Match Orientation=-",c=self.orient)
		mc.setParent("..")

		mc.showWindow("ms_orientObject")
 def __init__(self,*args):
     if(cmds.window("rbbnChainBuilder",exists=True)):
         cmds.deleteUI("rbbnChainBuilder",window=True)
 	
     cmds.window("rbbnChainBuilder",title="Build Ribbon Rig v1.0", rtf=True)
     cmds.columnLayout()
     
 	self.prefixFld = cmds.textFieldGrp(label='Prefix',text='L_upLegRbbn_')	        
     self.ribbonFld = cmds.textFieldButtonGrp( label="Ribbon:", buttonLabel="Load", bc = self.loadRibbon)#,text='main_plane'  )
     self.startFld = cmds.textFieldButtonGrp( label="Start Control:", buttonLabel="Load", bc = self.loadStart,text='cnt_1'  )
     self.endFld = cmds.textFieldButtonGrp( label="End Control:", buttonLabel="Load", bc = self.loadEnd,text='cnt_2' )
     self.numFld = cmds.intFieldGrp(label='Controls:',nf=1,v1=5)
     self.skinFld = cmds.intFieldGrp(label='Skin Joints:',nf=1,v1=5)
     self.buildFld = cmds.radioButtonGrp(nrb=2,labelArray2=('U','V'),label='Build along:',sl=1)
     
     
     cmds.frameLayout(label='Control Options: ',fn='boldLabelFont',cll=False)
     cmds.columnLayout()
     self.crvCreateFld = cmds.radioButtonGrp(nrb=2,labelArray2=('Yes','No'),label='Create bend-bo controls?',sl=1)
     self.radFld = cmds.floatFieldGrp(label='Radius:',nf=1,v1=0.2)
     self.crvNrFld = cmds.radioButtonGrp(nrb=3,labelArray3=('X','Y','Z'),label='Controller normal Axis:',sl=2)
     cmds.setParent("..")
     cmds.setParent("..")
     
     cmds.rowLayout(nc=2,cw2=(200,100))
     cmds.text(' ')
     cmds.button(label = "          Create", c = self.buildRig,w=100 )
 	cmds.setParent('..')
 		
     cmds.showWindow("rbbnChainBuilder")
Exemple #12
0
def jointPerVertexUI():
    """
    UI for jointPerVertex()
    """
    # Window
    win = "jntPerVtxUI"
    if cmds.window(win, q=True, ex=1):
        cmds.deleteUI(win)
    win = cmds.window(win, t="Create Joint Per Vertex")

    # Layout
    cl = cmds.columnLayout()

    # UI Elements
    prefixTFG = cmds.textFieldGrp("jntPerVtx_prefixTFG", label="Prefix", text="")
    suffixTFG = cmds.textFieldGrp("jntPerVtx_suffixTFG", label="Suffix", text="jnt")
    oriSurfaceTFB = cmds.textFieldButtonGrp(
        "jntPerVtx_oriSurfaceTFB", label="Orient Surface", text="", buttonLabel="Load Selected"
    )

    # Buttons
    createB = cmds.button("jntPerVtx_createB", l="Create", c="glTools.tools.jointPerVertex.jointPerVertexFromUI(False)")
    cancelB = cmds.button("jntPerVtx_cancelB", l="Cancel", c='cmds.deleteUI("' + win + '")')

    # UI callbacks
    cmds.textFieldButtonGrp(oriSurfaceTFB, e=True, bc='glTools.ui.utils.loadObjectSel("' + oriSurfaceTFB + '","")')

    # Show Window
    cmds.showWindow(win)
def getChannel(tfbg, *args):
	"""gets the selected channel of the selected objects"""

	obj = ""
	channel = ""

	cBox = mel.eval('$temp=$gChannelBoxName')
	sel = cmds.ls(sl=True, l=True)

	if sel:
		if not len(sel)==1:
			cmds.warning("You have to select ONE node!")
		else:
			obj = sel[0]
	else:
		cmds.warning("You have to select ONE node!")

	if sel:
		channels = cmds.channelBox(cBox, q=True, sma=True, ssa=True, sha=True, soa=True)

		if channels:
			if not len(channels) == 1:
				cmds.warning("You have to select ONE channel!")
			else:
				channel = channels[0]
		else:
			cmds.warning("You have to select ONE channel!")

	if obj and channel:
		full = "%s.%s"%(obj, channel)
		cmds.textFieldButtonGrp(widgets[tfbg], e=True, tx=full)
Exemple #14
0
def import2dTrackUI():
    """
    """
    # Build UI Window
    window = 'import2dTrackUI'
    if cmds.window(window, q=True, ex=True): cmds.deleteUI(window)
    window = cmds.window(window, title='Import 2D Track', wh=[500, 350])

    # Build UI Elements
    cmds.columnLayout(adjustableColumn=True)
    perspCamListTSL = cmds.textScrollList('importTrack_camListTSL', numberOfRows=8, ams=False)
    fileTFB = cmds.textFieldButtonGrp('importTrack_fileTFB', label='2D Track File', buttonLabel='Browse')
    cmds.textFieldButtonGrp(fileTFB, e=True, bc='glTools.ui.utils.loadFilePath("' + fileTFB + '",fileFilter="*.*")')
    cmds.textFieldGrp('importTrack_nameTFG', label="Point Name", text='trackPoint1')
    cmds.floatFieldGrp('importTrack_widthFFG', numberOfFields=1, label='Source Pixel Width', value1=2348)
    cmds.floatFieldGrp('importTrack_heightFFG', numberOfFields=1, label='Source Pixel Height', value1=1566)
    cmds.button(label='Import Track',
              c='import glTools.tools.import2dTrack;reload(glTools.tools.import2dTrack);glTools.tools.import2dTrack.import2dTrack()')
    cmds.button(label='Close', c='cmds.deleteUI("' + window + '")')

    # Build Camera List
    camList = cmds.listCameras(p=True)
    for cam in camList: cmds.textScrollList(perspCamListTSL, e=True, a=cam)

    # Show Window
    cmds.showWindow(window)
def multObjExport():
	uiWindow_objLoopExport = cmds.window('uiWindow_objLoopExport', title="Mass OBJ exporter", iconName='uiWindow_objLoopExport', widthHeight=(330, 160) )
	cmds.columnLayout('uiColWrapper', w = 375, adjustableColumn=False, parent = 'uiWindow_objLoopExport' )
	cmds.text( label='Settings', align='left', parent = 'uiColWrapper')
	cmds.textFieldButtonGrp('Dir', label='Directory Path', cw3 = [80,190,50], text='(browse for directory)', buttonLabel='browse', buttonCommand=browseIt, parent = 'uiColWrapper')
	cmds.button('startExport', label = "Export Selected", parent = 'uiColWrapper', width = 322, command = startExport)
	cmds.showWindow( uiWindow_objLoopExport )
 def cacheFilePath(self, *args):
     filename = mc.file(q=1, sn=1)
     scenename = filename.rsplit('_', 4)[1]
     shotname = filename.rsplit('_', 3)[1]
     cachePath = self.basePath + '/' + scenename + '/' + shotname
     mc.textFieldButtonGrp(self.txtProp, e = True, text = cachePath)
     return cachePath
def makeRelativeUI():
	'''
	User Interface for skinCluster.makeRelative()
	'''
	# Window
	win = 'makeRelativeUI'
	if mc.window(win,q=True,ex=True): mc.deleteUI(win)
	win = mc.window(win,t='SkinCluster - Make Relative')
	# Form Layout
	makeRelativeFL = mc.formLayout(numberOfDivisions=100)
	
	# SkinCluster option menu
	skinClusterOMG = mc.optionMenuGrp('makeRelativeSkinClusterOMG',label='SkinCluster')
	for skin in mc.ls(type='skinCluster'): mc.menuItem(label=skin)
	
	# Relative To TextField
	makeRelativeTFB = mc.textFieldButtonGrp('makeRelativeToTFB',label='RelativeTo',text='',buttonLabel='Load Selected')
	
	# Button
	makeRelativeBTN = mc.button(l='Make Relative',c='glTools.ui.skinCluster.makeRelativeFromUI()')
	
	# UI Callbacks
	mc.textFieldButtonGrp(makeRelativeTFB,e=True,bc='glTools.ui.utils.loadTypeSel("'+makeRelativeTFB+'","transform")')
	
	# Form Layout - MAIN
	mc.formLayout(makeRelativeFL,e=True,af=[(skinClusterOMG,'left',5),(skinClusterOMG,'top',5),(skinClusterOMG,'right',5)])
	mc.formLayout(makeRelativeFL,e=True,af=[(makeRelativeTFB,'left',5),(makeRelativeTFB,'right',5)])
	mc.formLayout(makeRelativeFL,e=True,ac=[(makeRelativeTFB,'top',5,skinClusterOMG)])
	mc.formLayout(makeRelativeFL,e=True,af=[(makeRelativeBTN,'left',5),(makeRelativeBTN,'right',5),(makeRelativeBTN,'bottom',5)])
	mc.formLayout(makeRelativeFL,e=True,ac=[(makeRelativeBTN,'top',5,makeRelativeTFB)])
	
	# Open window
	mc.showWindow(win)
Exemple #18
0
def loadSelIntoTFBG(tfbg):
	objs = mc.ls(sl=True)

	if len(objs)>0:
		mc.textFieldButtonGrp(tfbg,e=True,tx=objs[0])
	
	print mc.textFieldButtonGrp(tfbg,q=True,tx=True)
	def setDBPath(self, *args):

		fileFilters = "Database (*.db *.sqlite) (*.db *.sqlite)"
		path = cmds.fileDialog2(fileMode=1, caption="Open .db File", dialogStyle=2, okCaption="Open", startingDirectory=self.basedir, fileFilter=fileFilters)
		if path == None:
			return
		cmds.textFieldButtonGrp("tfbDBPath", e=True, tx=path[0])
	def linkShaders(self, *args):

		links = self.getLinksFromDB()

		if links == None:
			return

		selection = cmds.ls(sl=True)
		if len(selection) > 0:
			selection = cmds.listRelatives(selection, allDescendents=True, noIntermediate=True)

		# If shader file is available import it
		shaderPath = cmds.textFieldButtonGrp("tfbShaderPath", q=True, tx=True)
		if len(shaderPath) > 0:
			cmds.file(shaderPath, i=True)
			cmds.textFieldButtonGrp("tfbShaderPath", e=True, tx="")

		# Link shaders
		for link in links:
			mesh = link[0]
			shader = link[1]

			if cmds.checkBox("cbSubstring", q=True, value=True):
				substring = cmds.textField("tfSubstring", q=True, text=True)
				mesh = substring + mesh

			if cmds.objExists(mesh):
				cmds.select(mesh)
				cmds.hyperShade(assign=shader)
				print "'" + mesh + "' linked"

		print "Finished linking."
Exemple #21
0
def locatorCurveUI():
	'''
	UI for locatorCurve()
	'''
	# Window
	window = 'locatorCurveUI'
	if mc.window(window,q=True,ex=1): mc.deleteUI(window)
	window = mc.window(window,t='Locator Curve')
	# Layout
	cl = mc.columnLayout()
	# UI Elements
	#---
	# Curve
	curveTFB = mc.textFieldButtonGrp('locatorCurveTFB',label='Source Curve',text='',buttonLabel='Load Selected')
	# Prefix
	prefixTFG = mc.textFieldGrp('locatorCurvePrefixTFG',label='Prefix', text='')
	# Scale
	scaleFSG = mc.floatSliderGrp('locatorCurveScaleFSG',label='Locator Scale',field=True,minValue=0.0,maxValue=1.0,fieldMinValue=0.0,fieldMaxValue=10.0,value=0.05,pre=3)
	# Edit Points
	editPointCBG = mc.checkBoxGrp('locatorCurveEditPointCBG',numberOfCheckBoxes=1,label='Use Edit Points',v1=False)
	# Buttons
	createB = mc.button('locatorCurveCreateB',l='Create',c='glTools.ui.curve.locatorCurveFromUI(False)')
	cancelB = mc.button('locatorCurveCancelB',l='Cancel',c='mc.deleteUI("'+window+'")')
	
	# TFB commands
	mc.textFieldButtonGrp(curveTFB,e=True,bc='glTools.ui.utils.loadCurveSel("'+curveTFB+'","'+prefixTFG+'")')
	
	# Show Window
	mc.showWindow(window)
	def buildGUI(self):
	
		if cmds.window(self.name, q=True, exists=True):
			cmds.deleteUI(self.name)
		cmds.window(self.name, title=self.title, sizeable=False, mxb=False, mnb=False, toolbox=False, w=100, h=30)
		cmds.columnLayout("mainLayout", adj=True, parent=self.name, co=("left", 5))

		# Add onClose Event
		cmds.scriptJob(uiDeleted=(self.name, self.onClose))
		
		# Help Menu
		cmds.menuBarLayout("menuBar")
		cmds.menu(label="Show Help", helpMenu =True, pmc=self.showHelp)

		# Import paths
		cmds.textFieldButtonGrp("tfbDBPath", label="Links: ", bl="Set Link Path", cw=(1,50), parent="mainLayout", bc=self.setDBPath)
		cmds.textFieldButtonGrp("tfbShaderPath", label="Shaders: ", bl="Set Shader Path", cw=(1,50), parent="mainLayout", bc=self.setShaderPath)
		
		cmds.checkBox("cbSelection", label="Use Selection", parent="mainLayout")
		cmds.checkBox("cbSubstring", label="Substring prefix", parent="mainLayout", value=True)
		cmds.textField("tfSubstring", parent="mainLayout", text="s100_char")

		cmds.separator(h=10, style="none", parent="mainLayout")

		# Buttons
		cmds.rowColumnLayout("buttonsLayout", numberOfColumns=2, parent="mainLayout")
		cmds.button("bExportLinks", label = "Export Links", w=200, h=30, parent="buttonsLayout", c=self.exportLinks)
		cmds.button("bImportShader", label="Link Shaders", w=200, h=30, parent="buttonsLayout", c=self.linkShaders)

		cmds.showWindow(self.name)
Exemple #23
0
def uniformRebuildCurveUI():
	'''
	UI for uniformRebuild()
	'''
	# Window
	window = 'uniformRebuildCurveUI'
	if mc.window(window,q=True,ex=1): mc.deleteUI(window)
	window = mc.window(window,t='Uniform Rebuild Curve')
	
	# Layout
	cl = mc.columnLayout()
	# Curve
	curveTFB = mc.textFieldButtonGrp('uniformRebuildCurveTFB',label='Source Curve',text='',buttonLabel='Load Selected')
	# Prefix
	prefixTFG = mc.textFieldGrp('uniformRebuildCurvePrefixTFG',label='Prefix',text='')
	# Replace Original
	replaceCBG = mc.checkBoxGrp('uniformRebuildCurveReplaceCBG',numberOfCheckBoxes=1,label='Replace Original',v1=False)
	# Spans
	spanISG = mc.intSliderGrp('uniformRebuildCurveSpansISG',field=True,label='Rebuild Spans',minValue=2,maxValue=10,fieldMinValue=2,fieldMaxValue=100,value=6)
	
	# Buttons
	createB = mc.button('uniformRebuildCurveCreateB',l='Create',c='glTools.ui.curve.uniformRebuildCurveFromUI(False)')
	createCloseB = mc.button('uniformRebuildCurveCreateCloseB',l='Create and Close',c='glTools.ui.curve.uniformRebuildCurveFromUI(True)')
	cancelB = mc.button('uniformRebuildCurveCancelB',l='Cancel',c='mc.deleteUI("'+window+'")')
	
	# TFB commands
	mc.textFieldButtonGrp(curveTFB,e=True,bc='glTools.ui.utils.loadCurveSel("'+curveTFB+'","'+prefixTFG+'")')
	
	# Show Window
	mc.showWindow(window)
Exemple #24
0
 def __init__(self):
     self.name = "pythant"
     self.title = "Pythant"
     #creates the ui window, replacing any existing ui windows
     if (cmds.window(self.name, q=1, exists=1)):
         cmds.deleteUI(self.name)
     self.window = cmds.window(self.name, title=self.title)
     self.form = cmds.columnLayout(adjustableColumn=True, columnAlign="center", rowSpacing=10)
     cmds.intFieldGrp("numAnts", label="Number of ants:", value1=1, cal=[1,"left"])
     cmds.intFieldGrp("startFrame", label="Start frame:", value1=1, nf=1,cal=[1,"left"])
     cmds.intFieldGrp("endFrame", label="End frame:",nf=1,value1=50,cal=[1,"left"])
     cmds.text( label="Select the curves:",align="left")
     cmds.textScrollList("curves",numberOfRows=3,allowMultiSelection=True,h=100)
     cmds.button(label="OK",w=20, align="left",c=self.getCurves)
     cmds.textFieldButtonGrp("groundObj", label="Select the Ground:",buttonLabel='OK', bc=self.getGround,cal=[1,"left"])
     cmds.checkBox("isFlat",label="Is this a flat ground",value=1)        
     cmds.floatSliderGrp("Velocity",field=True, label="Velocity (mm/s):",min=1, max=40,value=20, cal=[1,"left"])        
     #cmds.floatSliderGrp("strideFreq",field=True, label="Stride Frequency:",min=1, max=10,value=5, cal=[1,"left"])        
     cmds.floatSliderGrp("load",field=True, label="Load (mg):",min=0, max=4,value=0, cal=[1,"left"])        
     # cmds.textFieldButtonGrp("force", label="External Force", buttonLabel='OK', bc = self.getForce, cal=[1, "left"])        
     cmds.text( label='The external force is setup with a directional light named forceVector.')
     cmds.text( label='The force magnitude (N) is specified with the custom attribute "Force Magnitude".') 
     cmds.text(label='The lighting direction is the force direction.')
     cmds.button(label='Run', w=100, c=self.accept)        
     cmds.button(label='Reset', w=100, c=self.reset)
     
     
     
     cmds.showWindow(self.window)
     cmds.window(self.window, edit = True, widthHeight=(415, 580))        
Exemple #25
0
def loadDirectoryPath(textField,caption='Load Directory',startDir=None):
	'''
	Select a file path to load into a specified textField.
	@param textField: TextField UI object to load file path to
	@type textField: str
	@param caption: File selection UI caption string
	@type caption: str
	@param startDir: Directory to start browsing from. In None, use the default or last selected directory.
	@type startDir: str
	'''
	# Get File Path
	dirPath = mc.fileDialog2(	dialogStyle=2,
								fileMode=3,
								caption=caption,
								okCaption='Load',
								startingDirectory=startDir )
	
	# Check File Path
	if not dirPath:
		print('Invalid directory path!')
		return
	
	# Load File Path to TextField
	if mc.textField(textField,q=True,ex=True):
		mc.textField(textField,e=True,text=dirPath[0])
	elif mc.textFieldGrp(textField,q=True,ex=True):
		mc.textFieldGrp(textField,e=True,text=dirPath[0])
	elif mc.textFieldButtonGrp(textField,q=True,ex=True):
		mc.textFieldButtonGrp(textField,e=True,text=dirPath[0])
	else:
		print('UI element "'+textField+'" is of type "'+mc.objectTypeUI(textField)+'"! Expected textField, textFieldGrp or textFieldButtonGrp.')
		return
	
	# Return Result
	return dirPath[0]
Exemple #26
0
def snapToClosestVertexUI():
	'''
	UI for snapToClosestVertex()
	'''
	# Window
	window = 'snapToClosestVtxUI'
	if mc.window(window,q=True,ex=1): mc.deleteUI(window)
	window = mc.window(window,t='Snap To Closest Vertex')
	
	# Layout
	FL = mc.formLayout(numberOfDivisions=100)
	
	# ===============
	# - UI Elements -
	# ===============
	
	# Mesh
	meshTFB = mc.textFieldButtonGrp('snapToMeshVtxTFB',label='Target Mesh',text='',buttonLabel='Load Selected')
	
	# UI callback commands
	mc.textFieldButtonGrp(meshTFB,e=True,bc='glTools.ui.utils.loadMeshSel("'+meshTFB+'")')
	
	# Buttons
	snapB = mc.button('snapToMeshSnapB',l='Snap To Vertex',c='glTools.ui.mesh.snapToClosestVertexFromUI(False)')
	cancelB = mc.button('snapToMeshCancelB',l='Cancel',c='mc.deleteUI("'+window+'")')
	
	# Form Layout - MAIN
	mc.formLayout(FL,e=True,af=[(meshTFB,'top',5),(meshTFB,'left',5),(meshTFB,'right',5)])
	mc.formLayout(FL,e=True,ac=[(snapB,'bottom',5,cancelB)],af=[(snapB,'left',5),(snapB,'right',5)])
	mc.formLayout(FL,e=True,af=[(cancelB,'left',5),(cancelB,'right',5),(cancelB,'bottom',5)])
	
	# Show Window
	mc.showWindow(window)
	def setShaderPath(self, *args):

		fileFilters = "Maya File(*.mb *.ma)"
		path = cmds.fileDialog2(fileMode=1, caption="Set Shader Path", dialogStyle=2, okCaption="Save", startingDirectory=self.basedir, fileFilter=fileFilters)
		if path == None:
			return
		cmds.textFieldButtonGrp("tfbShaderPath", e=True, tx=path[0])
Exemple #28
0
def browseDirectory(rootDir, control):
	"""browseDirectory

	:param rootDir:
	:param control:
	:return:
	"""
	path = cmds.textFieldButtonGrp(control, q=True, text=True)
	startDir = path

	if isRelative(path):
		startDir = os.path.join(rootDir, path)

	dirNames = cmds.fileDialog2(
		fileMode=3,
		startingDirectory=startDir,
		dialogStyle=1
	)

	if dirNames is not None:
		dirName = cmds.workspace(projectPath=fromNativePath(dirNames[0]))
		cmds.textFieldButtonGrp(
			control,
			e=True,
			text=dirName,
			forceChangeCommand=True
		)
    def ui(self):
        if cmds.window('MultiAxesRigSetupWin',exists=True):
            cmds.deleteUI('MultiAxesRigSetupWin' ,window=True)
        window = cmds.window( 'MultiAxesRigSetupWin' , title="Multi Axis Rig Setup v%s"%self.version )

        cmds.columnLayout( adjustableColumn=True )

        cmds.columnLayout( adjustableColumn=True )
        self.nameFld = cmds.textFieldGrp( label='Rig Name' )
        cmds.setParent( '..' )
        
        cmds.columnLayout( adjustableColumn=True )
        self.baseFld = cmds.textFieldButtonGrp( label='Base Object (Shoulder)', bl='Load', bc=self._loadBase )
        cmds.setParent('..')
        
        cmds.columnLayout( adjustableColumn=True )
        self.tgtFld = cmds.textFieldButtonGrp( label='Target Object (Elbow)', bl='Load', bc=self._loadTgt )
        cmds.setParent('..')
        
        cmds.columnLayout( adjustableColumn=True )
        self.controlFld = cmds.textFieldButtonGrp( label='Control to put attrs on', bl='Load', bc=self._loadControl )
        cmds.setParent('..')
        
        cmds.columnLayout( adjustableColumn=True )
        cmds.button( label='Create Rig', c=self._callCreateRig )
        cmds.setParent('..')        
        
        cmds.showWindow( window )
def add_source_mesh(*args):
    """
    # edits the text of the given textFieldButtonGrp
    # add the name of the selected objects
    """
    obj = cmds.ls(selection=True)[0]
    cmds.textFieldButtonGrp(source_field, edit=True, text=obj)
 def getShaderList(self, *args):
     #retrieve the dict of shaders from file
     self.path = cmds.textFieldButtonGrp(self.widgets["destinationTFBG"],
                                         q=True,
                                         tx=True)
     getFile = open(self.path, "r")
     #getFile.read(self.path)
     for line in getFile:
         print line
     getFile.close()
     print "connections = %s" % connections
Exemple #32
0
def stretchyIkLimbFromUI(close=False):
	'''
	Execute stretchyIkLimb() from UI
	'''
	# Window
	window = 'stretchyIkLimbUI'
	if not mc.window(window,q=True,ex=1): raise UIError('StretchyIkChain UI does not exist!!')
	
	# Get UI data
	ik = mc.textFieldButtonGrp('stretchyIkLimbTFB',q=True,text=True)
	pre = mc.textFieldGrp('stretchyIkLimbPrefixTFG',q=True,text=True)
	ctrl = mc.textFieldButtonGrp('stretchyIkLimbControlTFB',q=True,text=True)
	scaleAxis = str.lower(str(mc.optionMenuGrp('stretchyIkLimbAxisOMG',q=True,v=True)))
	scaleAttr = mc.textFieldButtonGrp('stretchyIkLimbScaleAttrTFB',q=True,text=True)
	
	# Execute command
	glTools.tools.stretchyIkLimb.StretchyIkLimb().build(ikHandle=ik,control=ctrl,scaleAttr=scaleAttr,scaleAxis=scaleAxis,prefix=pre)
	
	# Cleanup
	if close: mc.deleteUI(window)
	def CreateBlendShape(self):
		copyMesh = self.blendShapeMesh+'_copyToWork_'+self.newNameBlendShape

		if cmds.nodeType(blendShapeNode(self.blendShapeMesh)) == 'blendShape' :
			if cmds.blendShape(self.BlendShape[0],q=1,wc=True) != 0:
				tragetBlendShapeIndex=cmds.listAttr(self.BlendShape[0]+'.weight',multi=True)
				if tragetBlendShapeIndex.__contains__(self.newNameBlendShape):
					blendShapeExists(self.newNameBlendShape)
					return
		else:
			pass
			print 'ok'

		duplicateMesh(self.blendShapeMesh,copyMesh)
		SculptGeometryTool = "SculptGeometryTool"
		mel.eval(SculptGeometryTool)
		if int(self.HideBox) == 1:
			cmds.setAttr(self.blendShapeMesh+'.v',0)
		cmds.select(copyMesh)
		cmds.textFieldButtonGrp('newNameText',edit=True,bl='Finish',ed=False)	
def zbw_mmAddMObjs(*args):
    """
    adds textFields to the UI for adding target objects for the message attrs
    """
    #delete text confirm dialogue if it exists
    zbw_mmDeleteConfirm()
    #figure out what objects are already parented
    children = cmds.rowColumnLayout("mmRCLayout" , q=True, ca=True)
    #figure out where stuff goes (2 column layout, so divide by 2), 1 based
    if children:
        currentNum = len(children)/2 + 1
        currentTFG = "attr" + str(currentNum)
        currentTFBG = "obj" + str(currentNum)
    #if no objects exist . . .
    else:
        currentTFG = "attr1"
        currentTFBG = "obj1"

    cmds.textFieldGrp(currentTFG, l="addedAttr (ln)", cal=(1, "left"), cw2=(100, 150), p="mmRCLayout")
    cmds.textFieldButtonGrp(currentTFBG, l="messageObj", cal=(1, "left"), cw3=(75,150,50), p="mmRCLayout", bl="get", bc=partial(zbw_mmAddTarget, currentTFBG))
def makeGui():
	texFix_Window = cmds.window('texFix_Window', title="Texture Search/Source Tool - V%s"%(version), iconName='texFix_Window', widthHeight=(windowWidth+15, 400) )
	
	scrollLayout = cmds.scrollLayout("scrollLayout", w=windowWidth, cr=1, p="texFix_Window" )
	
	cmds.columnLayout('uiColWrapper', w = (windowWidth - 10), adj=1, adjustableColumn=True, p="scrollLayout")
	
	cmds.text(l = "Automatic 1-click texture resource tool", bgc=[1,1,1], p = 'uiColWrapper')
	cmds.separator( height=10, style='double', p = 'uiColWrapper')
	
	cmds.textFieldButtonGrp('Dir', label="Root path for search", ad3=2 , cw3 = [105,380,50], text=defaultSearchPath, buttonLabel='browse', buttonCommand=browseIt, parent = 'uiColWrapper')
	cmds.button('populateResultArea', l = "-Display Texture Paths-", bgc = [.35, .35, .35], h=40, c = populatePathList, parent = 'uiColWrapper' )
	cmds.button('StartTextureSearch', l = "-Fix Texture Paths-", bgc = [.35, .6, .35], h=40, en=0, c = resourceAllTextures, parent = 'uiColWrapper' )
	
	cmds.separator( height=10, style='double', p = 'uiColWrapper')
	
	cmds.columnLayout('uiColWrapper2', w = (windowWidth - 10), adjustableColumn=True, p="scrollLayout")
	
	
	cmds.showWindow( texFix_Window )
Exemple #36
0
def loadMeshSel(textField,prefixTextField=''):
	'''
	Load selected curve into UI text field
	@param textField: TextField UI object to load mesh selection into
	@type textField: str
	@param prefixTextField: TextField UI object to load curve name prefix into
	@type prefixTextField: str
	'''
	# Get user selection
	sel = mc.ls(sl=True)
	# Check selection
	if not sel: return
	if not glTools.utils.mesh.isMesh(sel[0]):
		raise UserInputError('Object "'+sel[0]+'" is not a valid polygon mesh!!')
	# Update UI
	mc.textFieldButtonGrp(textField,e=True,text=sel[0])
	if prefixTextField:
		if not mc.textFieldGrp(prefixTextField,q=True,text=True):
			prefix = glTools.utils.stringUtils.stripSuffix(sel[0])
			mc.textFieldGrp(prefixTextField,e=True,text=prefix)
Exemple #37
0
def connectToSgNode():
    sgNode = mc.textFieldButtonGrp('SGNodeWin', q=1, tx=1)
    renderShader = mc.listConnections(sgNode + '.surfaceShader', p=1)
    if renderShader:
        mc.connectAttr(renderShader[0], sgNode + '.aiSurfaceShader', f=1)
        mc.connectAttr('dx11Shader4.outColor', sgNode + '.surfaceShader', f=1)
        mc.connectAttr('LaMa_AS101.displacement',
                       sgNode + '.displacementShader',
                       f=1)
    else:
        mc.warning('can not find the render shader !!')
Exemple #38
0
    def load_tracker(s, path):
        """ Load nuke file """
        # Clear out any existing tracks.
        path = path.strip()
        remove = cmds.optionMenu(s.tracker, q=True, ill=True) or []
        remove += cmds.optionMenu(s.stabalize, q=True, ill=True) or []
        if remove:
            cmds.deleteUI(remove)

        if path:

            s.data = logic.get_tracks(path)
            cmds.textFieldButtonGrp(s.nuke, e=True, tx=path)

            # Add current tracks.
            cmds.menuItem(l=NONE, p=s.stabalize)
            for track in s.data:
                cmds.menuItem(l=track, p=s.tracker)
                cmds.menuItem(l=track, p=s.stabalize)
            cmds.button(s.go, e=True, en=True)
Exemple #39
0
def hyperRender():

    gamma = mc.floatSliderGrp("gamma", q=True, v=True)

    width = mc.intFieldGrp("Resolution", q=True, value1=True)
    height = mc.intFieldGrp("Resolution", q=True, value2=True)
    fr = mc.textFieldButtonGrp("setFile", q=True, text=True) + "/"

    mc.eval

    mc.select(lights)
    mc.select(meshes, add=True)

    mc.showHidden(a=True)
    for m in meshes:
        hideChildren(m)
    for l in lights:
        mc.hide(l)
    for mesh in meshes:
        # hideChildren(mesh)
        for light in lights:

            mc.select(cl=True)
            mc.select(mesh)
            mc.select(light, add=True)
            showChildren(mesh)
            mc.showHidden(light)
            name = mesh + light + "output"

            mc.setAttr("defaultArnoldDriver.ai_translator",
                       "png",
                       type="string")
            mc.setAttr("defaultArnoldDriver.pre", name, type="string")
            arnoldRender(width, height, True, True, 'RenderCam_',
                         ' -layer defaultRenderLayer')
            #render stuff here
            editor = 'renderView'
            #render_output = mc.renderer(editor, e=True)

            # mc.eval('renderWindowRender redoPreviousRender renderView')
            # editor = 'renderView'
            formatManager = createImageFormats.ImageFormats()
            formatManager.pushRenderGlobalsForDesc("PNG")
            mc.renderWindowEditor(editor,
                                  e=True,
                                  ga=gamma,
                                  com=True,
                                  cme=True,
                                  writeImage=fr + name + '.png')
            exec("print 'file saved to' + fr+name+'.png'")
            formatManager.popRenderGlobals()

            mc.hide(light)
            hideChildren(mesh)
Exemple #40
0
def loadWorldSpaceDataFromUI():
    """
    """
    # Check Window
    window = 'loadSkinClusterWorldSpaceUI'
    if not cmds.window(window, q=True, ex=1): return

    # Get UI data
    targetGeo = cmds.textFieldButtonGrp('loadSkinData_targetGeoTFB',
                                        q=True,
                                        text=True)
    searchStr = cmds.textFieldButtonGrp('loadSkinData_searchStrTFB',
                                        q=True,
                                        text=True)
    replaceStr = cmds.textFieldButtonGrp('loadSkinData_replaceStrTFB',
                                         q=True,
                                         text=True)

    # Load SkinCluster Data
    loadWorldSpaceData(geo=targetGeo, search=searchStr, replace=replaceStr)
Exemple #41
0
def renamePreMade():
    """Function that renames User's geo to match our naming conventions"""

    userObj = cmds.textFieldButtonGrp("treadName", query=True, text=True)
    
    if not userObj:
        cmds.confirmDialog(t="Select a piece", m="Please choose a tread geometry")
        return
    
    cmds.select(userObj)    
    userObj = cmds.rename("TreadMesh")
Exemple #42
0
	def buildGUI(self,*args):
		if(cmds.window("followCntWin",exists=True)):
			cmds.deleteUI("followCntWin",window=True)
			
		win = cmds.window("followCntWin",title="Follow Control Setup v1.05",rtf=True,menuBar=True)
		m=cmds.menu(label="Help",helpMenu=True)
		cmds.menuItem( m, label='Directions',command=self.helpWin )	
		
		cmds.columnLayout(adjustableColumn=True)
		cmds.frameLayout(l='Step 1: Set up rivet and control',cl=False,cll=False,w=500)
		cmds.columnLayout(adjustableColumn=True)
		
		self.nameField = cmds.textFieldButtonGrp(label="Name:",bl="Load",bc=self.loadName,text="control1")
		cmds.text("\nSelect two edges.\n")
		cmds.rowLayout(nc=2,cw2=(200,110))
		cmds.text(" ")
		cmds.button(label="Setup",c=self.createRivet)
		cmds.setParent('..')
		
		cmds.setParent('..')
		cmds.setParent('..')
		
		cmds.frameLayout(l='Step 2: Finalize Control',cl=False,cll=False,w=500)
		cmds.columnLayout(columnAttach=('both', 5),adjustableColumn=True)
		
		self.controlField = cmds.textFieldButtonGrp(label="Control:",bl="Load",bc=self.loadControl,text="")
		self.rivetField = cmds.textFieldButtonGrp(label="Rivet:",bl="Load",bc=self.loadRivet,text="")
		self.jointField = cmds.textFieldButtonGrp(label="Constrain to:",bl="Load",bc=self.loadJoint,text="")
		
		cmds.text("Make sure to select the vertices to influence.       \n",font='boldLabelFont') 
		cmds.text(' ')
		
		cmds.rowLayout(nc=2,cw2=(200,110))
		cmds.text(" ")
		cmds.button(label="Finish",c=self.setupControl)
		cmds.setParent('..')
		
		cmds.setParent('..')
		cmds.setParent('..')
		
		cmds.showWindow(win)	
Exemple #43
0
def exportDataUI():
    """
    UI for selectively saving Rig data.
    """
    rig = Rig()
    dataPath = rig.setDataPath()

    # Build Window
    window = rig.EXPORT_DATA_UI
    if cmds.window(window, q=True, ex=1): cmds.deleteUI(window)
    window = cmds.window(window, t='RIG: Export Data')

    # Layout
    FL = cmds.formLayout()

    # UI Elements
    dataPathTBG = cmds.textFieldButtonGrp(rig.EXPORT_PATH_TBG, label='Data Path', buttonLabel='...', text=dataPath)
    dataListTSL = cmds.textScrollList(rig.EXPORT_LIST_TSL, ams=True)
    reloadB = cmds.button('rigExportData_reloadB', label='Reload', c='glTools.rig.ui.reloadDataUIList()')
    exportB = cmds.button('rigExportData_exportB', label='Export', c='glTools.rig.ui.exportDataFromUI()')
    cancelB = cmds.button('rigExportData_cancelB', label='Close', c='cmds.deleteUI("' + window + '")')

    # UI Callbacks
    cmds.textFieldButtonGrp(dataPathTBG, e=True, bc='glTools.ui.utils.exportFolderBrowser("' + dataPathTBG + '")')
    cmds.textFieldButtonGrp(dataPathTBG, e=True,
                          cc='glTools.ui.utils.loadFileList("' + dataListTSL + '","' + cmds.textFieldButtonGrp(
                              dataPathTBG, q=True, text=True) + '",filesOnly=True,filterStr=".pkl")')

    # Form Layout
    cmds.formLayout(FL, e=True, af=[(dataPathTBG, 'top', 5), (dataPathTBG, 'left', 5), (dataPathTBG, 'right', 5)])
    cmds.formLayout(FL, e=True, ac=[(dataListTSL, 'top', 5, dataPathTBG), (dataListTSL, 'bottom', 5, reloadB)],
                  af=[(dataListTSL, 'left', 5), (dataListTSL, 'right', 5)])
    cmds.formLayout(FL, e=True, ac=[(reloadB, 'bottom', 5, exportB)], af=[(reloadB, 'left', 5), (reloadB, 'right', 5)])
    cmds.formLayout(FL, e=True, ac=[(exportB, 'bottom', 5, cancelB)], af=[(exportB, 'left', 5), (exportB, 'right', 5)])
    cmds.formLayout(FL, e=True, af=[(cancelB, 'left', 5), (cancelB, 'right', 5), (cancelB, 'bottom', 5)])

    # Load Deformer List
    reloadDataUIList()

    # Show Window
    cmds.showWindow(window)
Exemple #44
0
def jointPerVertexUI():
    """
    UI for jointPerVertex()
    """
    # Window
    win = 'jntPerVtxUI'
    if cmds.window(win, q=True, ex=1): cmds.deleteUI(win)
    win = cmds.window(win, t='Create Joint Per Vertex')

    # Layout
    cl = cmds.columnLayout()

    # UI Elements
    prefixTFG = cmds.textFieldGrp('jntPerVtx_prefixTFG',
                                  label='Prefix',
                                  text='')
    suffixTFG = cmds.textFieldGrp('jntPerVtx_suffixTFG',
                                  label='Suffix',
                                  text='jnt')
    oriSurfaceTFB = cmds.textFieldButtonGrp('jntPerVtx_oriSurfaceTFB',
                                            label='Orient Surface',
                                            text='',
                                            buttonLabel='Load Selected')

    # Buttons
    createB = cmds.button(
        'jntPerVtx_createB',
        l='Create',
        c='glTools.tools.jointPerVertex.jointPerVertexFromUI(False)')
    cancelB = cmds.button('jntPerVtx_cancelB',
                          l='Cancel',
                          c='cmds.deleteUI("' + win + '")')

    # UI callbacks
    cmds.textFieldButtonGrp(oriSurfaceTFB,
                            e=True,
                            bc='glTools.ui.utils.loadObjectSel("' +
                            oriSurfaceTFB + '","")')

    # Show Window
    cmds.showWindow(win)
Exemple #45
0
def setProjectUI():
    if cmds.window("projectWin", exists=True):
        cmds.deleteUI("projectWin")

    win = cmds.window("projectWin", t="Set Project", w=450, h=100)
    cmds.columnLayout("CLO")
    current = getCurrent()  #is this the best way to do this?
    cmds.textFieldGrp("currTFG",
                      l="Current Project:",
                      tx=current,
                      ed=False,
                      cw=[(1, 100), (2, 300), (3, 50)],
                      cal=[(1, "left"), (2, "left"), (3, "left")])
    cmds.separator(h=10, style="single")
    cmds.textFieldButtonGrp("TFBG",
                            l="Select Project Path: ",
                            bl="<<<",
                            cw=[(1, 100), (2, 300), (3, 50)],
                            cal=[(1, "left"), (2, "left"), (3, "left")],
                            bc=getLoc)
    cmds.separator(h=10, style="single")
    cmds.rowColumnLayout(nc=3, cw=[(1, 200), (2, 150), (3, 100)])
    cmds.button("doBut",
                l="Change/Set Project Location!",
                w=200,
                h=30,
                bgc=(.6, .8, .6),
                c=setProject)
    cmds.button("closeBut",
                l="Close Window",
                w=150,
                bgc=(.8, .8, .6),
                c=closeWin)
    cmds.button("killBut",
                l="Turn This\nOff!",
                w=100,
                bgc=(.8, .6, .6),
                c=killJobs)

    cmds.showWindow(win)
    cmds.window(win, e=True, w=450, h=100)
 def drawFrameLayout( self, frameTitle, textureTypeAttrList ): # , attrNameList
   cw1 = 100
   cw2 = 60
   cmds.setParent( self.listTextures )
   
   cmds.frameLayout( label = frameTitle, borderVisible = True, borderStyle = 'etchedIn', marginHeight = 0, cll = True, cl = False )
   cmds.columnLayout( columnAttach=( 'left', 0 ), rowSpacing = 0, adjustableColumn = True ) 
   
   for i in range( len( self.fileTextures ) ):
     labelType = "Not Found"
     labelColor = ( 0.5, 0.0, 0.0 )
     fileNodeName = self.fileTextures[ i ]
     fileNodeType = cmds.objectType( fileNodeName )
     fileName = ''
     
     for ( textureType, attrName ) in textureTypeAttrList :
       #print "textureType = %s attrName = %s" % ( textureType, attrName )
       
       if fileNodeType != textureType : continue  
       
       fileTextureName = cmds.getAttr( fileNodeName + "." + attrName )
       print ( '>> fileTextureName = %s' ) % fileTextureName
       if fileTextureName is not None and fileTextureName != '' :
         fileName = str( fileTextureName )
         if cmds.file( fileTextureName, q=True, exists=True ) :
           labelType = "Absolute"
           labelColor = (1.0, 0.5, 0.0)
           fileName = cmds.workspace( projectPath = fileTextureName )
           if self.isRelative( fileName ):
             labelType = "Relative"
             labelColor = (0.0, 0.5, 0.0)  
     
       cmds.rowLayout( numberOfColumns=2, columnWidth1=cw2, adjustableColumn2=2 )
       cmds.iconTextButton( style='textOnly', label=labelType, width=cw2, h=16, bgc=labelColor )
       cmds.textFieldButtonGrp( cw=( 1, cw1 ), adj=2, 
                                label=fileNodeName, 
                                buttonLabel="select", 
                                text=fileName, 
                                cc=partial( self.onFileNameChanged, fileNodeName, attrName ),
                                bc=partial( self.selectFileNode, fileNodeName ) )
       cmds.setParent( '..' )      
Exemple #47
0
def ikHandleFromUI(close=False):
	'''
	Execute ikHandle() from UI
	'''
	# Window
	window = 'ikHandleUI'
	if not mc.window(window,q=True,ex=1): raise UIError('IkHandle UI does not exist!!')
	
	# Get UI data
	startJ = mc.textFieldButtonGrp('ikHandleStartJointTFB',q=True,text=True)
	endJ = mc.textFieldButtonGrp('ikHandleEndJointTFB',q=True,text=True)
	pre = mc.textFieldGrp('ikHandlePrefixTFG',q=True,text=True)
	solver = mc.optionMenuGrp('ikHandleSolverOMG',q=True,v=True)
	curve = mc.textFieldButtonGrp('ikHandleCurveTFB',q=True,text=True)
	offset = mc.floatSliderGrp('ikHandleOffsetFSG',q=True,v=True)
	
	# Execute command
	glTools.tools.ikHandle.build(startJoint=startJ,endJoint=endJ,solver=solver,curve=curve,ikSplineOffset=offset,prefix=pre)
	
	# Cleanup
	if close: mc.deleteUI(window)
Exemple #48
0
 def _convert(self, *args):
     u"""カラーコードを変換"""
     code = cmds.textFieldButtonGrp(self.color_code_field, q=True, tx=True)
     if len(code) == 7 and code.startswith("#"):
         code = code[1:]
     if len(code) != 6:
         return
     try:
         int(code, 16)
     except ValueError, e:
         print(e)
         return
def exportFBX():
    #Get the file path chosen by the user
    FilePath = cmds.textFieldButtonGrp("File_Path", q=True, text=True)

    #Save the selected objects as .fbx and tell the user
    cmds.file(FilePath,
              force=True,
              options="v=0",
              type="FBX export",
              pr=True,
              es=True)
    print("File exported to ", FilePath)
Exemple #50
0
    def __init__(self):
        windowName = 'objsToPar_win'
        if cmds.window(windowName, exists=True):
            cmds.deleteUI(windowName)

        cmds.window(windowName, title="w19_objsToPar_win", sizeable=0)
        cmds.columnLayout(adj=True)
        cmds.textFieldButtonGrp('w19_parName',
                                label='nParticle Node',
                                text='new',
                                buttonLabel='Get from sel',
                                h=40,
                                ed=False,
                                cw3=(80, 150, 80),
                                bc=self.w19_parName)
        cmds.checkBox('w19_initialState', l='Initial State', v=True, h=40)
        cmds.button('w19_do',
                    label='Objects to particles',
                    h=40,
                    c=self.w19_do_cmd)
        cmds.showWindow(windowName)
Exemple #51
0
def export3DRotationFromUI():
    '''
	export3DRotationData from UI
	'''
    # Get selection
    sel = mc.ls(sl=True, fl=True, type=['transform', 'joint'])
    if not sel:
        print 'No valid transform selected for export!!'
        return

    # Get UI data
    path = mc.textFieldButtonGrp('exportPoint_pathTBG', q=True, text=True)
    start = mc.intFieldGrp('exportPoint_rangeIFG', q=True, v1=True)
    end = mc.intFieldGrp('exportPoint_rangeIFG', q=True, v2=True)

    # Check UI data
    if start > end:
        print('Invalid range specified!')
        return
    if not path.endswith('/'): path += '/'

    # For each point
    for pt in sel:

        # Generate export file path
        sel_name = pt.split(':')[-1].replace('.', '_').replace('[',
                                                               '_').replace(
                                                                   ']', '')
        filepath = path + sel_name + '_3Drot.txt'

        # Check path
        if os.path.isfile(filepath):
            chk = mc.confirmDialog(t='Warning: File exists',
                                   message='File "' + filepath +
                                   '" already exist! Overwrite?',
                                   button=['Yes', 'No'],
                                   defaultButton='Yes',
                                   cancelButton='No',
                                   dismissString='No')
            if chk == 'No': continue

        # Isolate Select - ON
        setIsolateSelect(pt, 1)

        # Export data
        glTools.tools.exportPointData.export3DRotationData(filepath,
                                                           pt,
                                                           start,
                                                           end,
                                                           rotateOrder='zxy')

        # Isolate Select - OFF
        setIsolateSelect(pt, 0)
def CreateFinishtextFieldButton():	
	buttonLebal = cmds.textFieldButtonGrp('newNameText',query=True,bl=True)
	if buttonLebal == 'Finish':
		cmds.textFieldButtonGrp('newNameText',edit=True,bl='Create',ed=True)
		CreativeBlendShape().FinishBlendShape()
		cmds.textFieldButtonGrp('newNameText',edit=True,tx='')

	if buttonLebal == 'Create':
		CreativeBlendShape().CreateBlendShape()
		cmds.textFieldButtonGrp('newNameText',edit=True)		
    def createButtonCmd(self, *args):
        mirrorSel = mc.radioButtonGrp("selLegMirrorType_rbg", q=True, select=True)
        lrSel = mc.radioButtonGrp("selLegType_rbg", q=True, select=True)

        cbTwists = mc.checkBox("selCreateTwists_cb", q=True, v=True)
        cbAnkleTwist = mc.checkBox("selAnkleTwist_cb", q=True, v=True)
        cbSwitchSetup = mc.checkBox("selAddIKFKSwitching_cb", q=True, v=True)
        cbGeo = mc.checkBox("selGeo_cb", q=True, v=True)
        cbHip = mc.checkBox("selSpineEnd_cb", q=True, v=True)

        bndJnt = mc.textFieldButtonGrp("jointLoad_tfbg", q=True, text=True)
        jntIKHipCheck = mc.textFieldButtonGrp("jntIKHip_tfbg", q=True, text=True)
        grpDNTTorsoCheck = mc.textFieldButtonGrp("grpTorsoDNT_tfbg", q=True, text=True)
        ctrlBodyCheck = mc.textFieldButtonGrp("ctrlBody_tfbg", q=True, text=True)
        ctrlRootTransCheck = mc.textFieldButtonGrp("rootTrans_tfbg", q=True, text=True)

        cra3 = CRA3(mirrorSel, lrSel,
                    cbTwists,cbAnkleTwist, cbSwitchSetup, cbGeo, cbHip,
                    bndJnt, jntIKHipCheck, grpDNTTorsoCheck,
                    ctrlBodyCheck, ctrlRootTransCheck
                    )
Exemple #54
0
def loadSurfaceSel(textField, prefixTextField=''):
    """
    Load selected surface into UI text field
    @param textField: TextField UI object to load surface selection into
    @type textField: str
    @param prefixTextField: TextField UI object to load surface name prefix into
    @type prefixTextField: str
    """
    # Get user selection
    sel = cmds.ls(sl=True)
    # Check selection
    if not sel: return
    if not glTools.utils.surface.isSurface(sel[0]):
        raise UserInputError('Object "' + sel[0] +
                             '" is not a valid nurbs surface!!')
    # Update UI
    cmds.textFieldButtonGrp(textField, e=True, text=sel[0])
    if prefixTextField:
        if not cmds.textFieldGrp(prefixTextField, q=True, text=True):
            prefix = glTools.utils.stringUtils.stripSuffix(sel[0])
            cmds.textFieldGrp(prefixTextField, e=True, text=prefix)
Exemple #55
0
    def modelUpdateExportSetting(self, *args):
        exportNode = cmds.textScrollList(self.modelExportNodesTextScrollList,
                                         q=1,
                                         selectItem=1)

        cmds.textFieldButtonGrp(self.modelExportFileNameTextFieldButtonGrp,
                                edit=1,
                                enable=1,
                                text='')

        fbxExport.addFBXNodeAttrs(exportNode[0])

        if exportNode:
            cmds.textFieldButtonGrp(self.modelExportFileNameTextFieldButtonGrp,
                                    edit=1,
                                    text=cmds.getAttr(exportNode[0] +
                                                      '.exportName'))
            cmds.checkBoxGrp(self.modelExportCheckBoxGrp,
                             edit=1,
                             enable=1,
                             value1=cmds.getAttr(exportNode[0] + '.export'))
Exemple #56
0
    def queryUIForExportSettings(self, *args):
        '''
        use the ui update an dictionary object to pass on to animAbc 
        '''
        #query the ui
        expDict = {}
        widgetsToCheck = {
            'verbose': 'verboseCheck',
            'uvWrite': 'uvWriteCheck',
            'noNormals': 'noNormalsCheck',
            'stripNamespaces': 'stripNamespacesCheck',
            'renderOnly': 'renderOnlyCheck',
            'writeVisibility': 'writeVisibilityCheck',
            'worldSpace': 'worldSpaceCheck',
            'wholeFrameGeo': 'wholeFrameGeoCheck',
            'attrList': 'attrListTextField',
            'attrPrefixList': 'attrPrefixListTextField',
            'userPropList': 'userPropListTextField',
            'userPrefixList': 'userPrefixListTextField',
            'copyLookLocal': 'copyLookLocalCheck'
        }
        #time range flags
        expDict['startFrame'] = cmds.floatFieldGrp(
            self.widgets['frameRangeGrp'], query=True, value1=True)
        expDict['endFrame'] = cmds.floatFieldGrp(self.widgets['frameRangeGrp'],
                                                 query=True,
                                                 value2=True)
        expDict['timeStep'] = cmds.floatFieldGrp(self.widgets['timeStepGrp'],
                                                 query=True,
                                                 value1=True)
        #checkboxs and text fields
        for option, widget in widgetsToCheck.items():
            if 'Check' in widget:
                expDict[option] = cmds.checkBox(self.widgets[widget],
                                                query=True,
                                                value=True)
            if 'TextField' in widget:
                tempList = cmds.textField(self.widgets[widget],
                                          query=True,
                                          text=True).split(';')
                if tempList[0] != '': expDict[option] = tempList

        #file browser
        overridePath = cmds.textFieldButtonGrp(self.widgets['filePathGrp'],
                                               query=True,
                                               text=True)
        if overridePath != '': expDict['baseCachePath'] = overridePath

        self.jobOptions.update(expDict)
        #print expDict
        animAbc.cacheSelectedContent(self.jobOptions)
        self.closeWindow()
        return
Exemple #57
0
    def playBlast(self, *args):
        """   
        Create instance of BlastMaster, then 
        play blast based on user settings.
        If play blast is successful, Write persistent data to TG_BM_NODE
        """
        #Get the scene name and format it for display
        sceneName = ' '
        temp = cmds.file(query=True, sn=True)
        if (temp):  #Not empty
            temp2 = os.path.split(temp)
            sceneName = temp2[1]

        #SequenceShot.Take from file name
        info = sceneName[:-3]

        #Pass GUI data as a dictionary
        guiData = {
            'info':
            info,
            'name':
            cmds.textFieldGrp(self.nameField, query=True, text=True),
            'comment':
            cmds.textFieldGrp(self.commentField, query=True, text=True),
            'camera':
            cmds.optionMenu(self.camMenu, query=True, value=True),
            'phase':
            cmds.optionMenu(self.phaseMenu, query=True, value=True),
            'image':
            cmds.textFieldButtonGrp(self.imageField, query=True, text=True),
            'slate':
            cmds.textFieldButtonGrp(self.slateField, query=True, text=True),
            'maya_scene':
            sceneName,
            'dir':
            cmds.textFieldGrp(self.dirField, query=True, text=True)
        }

        blast = bm.BlastMaster()
        blast.playBlast(guiData)
Exemple #58
0
def curveToLocatorsUI():
	'''
	UI for curveToLocators()
	'''
	# Window
	window = 'curveToLocatorsUI'
	if mc.window(window,q=True,ex=1): mc.deleteUI(window)
	window = mc.window(window,t='Curve To Locators')
	# Layout
	fl = mc.formLayout(numberOfDivisions=100)
	# UI Elements
	#---
	# Curve
	curveTFB = mc.textFieldButtonGrp('curveToLocatorsTFB',label='Target Curve',text='',buttonLabel='Load Selected')
	# Locator List
	locListTSL = mc.textScrollList('curveToLocatorsTSL',numberOfRows=8,allowMultiSelection=True)
	# TSL Buttons
	locAddB = mc.button('attachToCurveAddLocB',l='Add',c='glTools.ui.utils.addToTSL("'+locListTSL+'")')
	locRemB = mc.button('attachToCurveRemLocB',l='Remove',c='glTools.ui.utils.removeFromTSL("'+locListTSL+'")')
	# Buttons
	createB = mc.button('attachToCurveCreateB',l='Create',c='glTools.ui.curve.curveToLocatorsFromUI(False)')
	cancelB = mc.button('attachToCurveCancelB',l='Cancel',c='mc.deleteUI("'+window+'")')

	# Form Layout
	mc.formLayout(fl,e=True,af=[(curveTFB,'top',5),(curveTFB,'left',5),(curveTFB,'right',5)])
	mc.formLayout(fl,e=True,ac=[(locListTSL,'top',5,curveTFB),(locListTSL,'bottom',5,locAddB)])
	mc.formLayout(fl,e=True,af=[(locListTSL,'left',5),(locListTSL,'right',5)])
	mc.formLayout(fl,e=True,ac=[(locAddB,'bottom',1,locRemB)])
	mc.formLayout(fl,e=True,af=[(locAddB,'left',5),(locAddB,'right',5)])
	mc.formLayout(fl,e=True,ac=[(locRemB,'bottom',1,createB)])
	mc.formLayout(fl,e=True,af=[(locRemB,'left',5),(locRemB,'right',5)])
	mc.formLayout(fl,e=True,ac=[(createB,'bottom',1,cancelB)])
	mc.formLayout(fl,e=True,af=[(createB,'left',5),(createB,'right',5)])
	mc.formLayout(fl,e=True,af=[(cancelB,'bottom',5),(cancelB,'left',5),(cancelB,'right',5)])

	# TFB commands
	mc.textFieldButtonGrp(curveTFB,e=True,bc='glTools.ui.utils.loadCurveSel("'+curveTFB+'")')

	# Show Window
	mc.showWindow(window)
    def createButtonCmd(self, *args):
        mirrorSel = mc.radioButtonGrp("selArmMirrorType_rbg",
                                      q=True,
                                      select=True)
        lrSel = mc.radioButtonGrp("selArmType_rbg", q=True, select=True)

        cbGeo = mc.checkBox("selGeo_cb", q=True, v=True)
        cbSwitchSetup = mc.checkBox("selAddIKFKSwitching_cb", q=True, v=True)
        cbToggleSpineStretch = mc.checkBox("selStretchSpineToggle_cb",
                                           q=True,
                                           v=True)
        cbSpecialStretch = mc.checkBox("selSpecialStretch_cb", q=True, v=True)

        bndJnt = mc.textFieldButtonGrp("jointArmsLoad_tfbg", q=True, text=True)
        jntShoulderRootCheck = mc.textFieldButtonGrp(
            "jointShoulderJntLoad_tfbg", q=True, text=True)
        jntIKShoulderCheck = mc.textFieldButtonGrp("jntIKShoulderLoad_tf",
                                                   q=True,
                                                   text=True)
        grpDNTTorsoCheck = mc.textFieldButtonGrp("grpTorsoDNTLoad_tf",
                                                 q=True,
                                                 text=True)

        ctrlRootCheck = mc.textFieldButtonGrp("rootTrans_tfbg",
                                              q=True,
                                              text=True)
        grpSpineToggleCheck = mc.textFieldButtonGrp("grpheadShoulders_tfbg",
                                                    q=True,
                                                    text=True)

        cra5 = CRA5(mirrorSel, lrSel, cbGeo, cbSwitchSetup,
                    cbToggleSpineStretch, cbSpecialStretch, bndJnt,
                    jntShoulderRootCheck, jntIKShoulderCheck, grpDNTTorsoCheck,
                    ctrlRootCheck, grpSpineToggleCheck)
Exemple #60
0
def stretchyIkSplineFromUI(close=False):
	'''
	'''
	# Window
	window = 'stretchyIkSplineUI'
	if not mc.window(window,q=True,ex=1): raise UIError('StretchyIkSpline UI does not exist!!')
	
	# Get UI data
	ik = mc.textFieldButtonGrp('stretchyIkSplineTFB',q=True,text=True)
	pre = mc.textFieldGrp('stretchyIkSplinePrefixTFG',q=True,text=True)
	scaleAxis = str.lower(str(mc.optionMenuGrp('stretchyIkSplineAxisOMG',q=True,v=True)))
	scaleAttr = mc.textFieldButtonGrp('stretchyIkSplineScaleAttrTFB',q=True,text=True)
	blendCtrl = mc.textFieldButtonGrp('stretchyIkSplineBlendCtrlTFB',q=True,text=True)
	blendAttr = mc.textFieldGrp('stretchyIkSplineBlendAttrTFG',q=True,text=True)
	useClosestPnt = mc.checkBoxGrp('stretchyIkSplineClosestPointCBG',q=True,v1=True)
	method = mc.optionMenuGrp('stretchyIkSplineMethodOMG',q=True,sl=True)-1
	minPercent = mc.floatSliderGrp('stretchyIkSplineMinPFSG',q=True,v=True)
	maxPercent = mc.floatSliderGrp('stretchyIkSplineMaxPFSG',q=True,v=True)
	
	# Execute command
	if method: # Parametric
		glTools.tools.stretchyIkSpline.stretchyIkSpline_parametric(	ikHandle=ik,
																	scaleAxis=scaleAxis,
																	scaleAttr=scaleAttr,
																	blendControl=blendCtrl,
																	blendAttr=blendAttr,
																	useClosestPoint=useClosestPnt,
																	minPercent=minPercent,
																	maxPercent=maxPercent,
																	prefix=pre)
	else: # Arc Length
		glTools.tools.stretchyIkSpline.stretchyIkSpline_arcLength(	ikHandle=ik,
																	scaleAxis=scaleAxis,
																	scaleAttr=scaleAttr,
																	blendControl=blendCtrl,
																	blendAttr=blendAttr,
																	prefix=pre)
	
	# Cleanup
	if close: mc.deleteUI(window)