I thought some of these example tips I made may be helpful. There probably are lots of bugs in them but they show examples ranging from adding a label to an image (convert), to opening up a Maya file from the command line (standalone).
cheers,
Nate
#================================================================= images and convert ##@file image.py # #(Tested Maya 2008) # #@author Nathaniel Anozie # #@note Inpired By James Parks (arcsecond dot net) for learning about unix image calls in python # #@note Inpired By Nicklas Puetz (nicklaspuetz dot blogspot dot com) for learning file handling tips # #@defgroup image Image Editing tools #@{ #ex: add a label to an image ## import os #import re ##add the label specified to a duplicate of the input image name and save it in same directory as input image # ## def addLabel( file = '/Users/noa/Desktop/temp/picture.png', camLabel = 'CAM_AS_0001', frameLabel = '00000' ): #compute output labeled image name using source image and source directory filePath, fileName = os.path.split(file) filePrefix,ext = os.path.splitext(fileName) labeledImage = filePrefix+'Out'+ext #adding a simple suffix to source image name to give output name labeledImagePath = filePath+'/'+labeledImage print 'Great this is the labeled image path %s \n' %labeledImagePath if os.path.isdir(filePath) & ( os.path.exists(labeledImagePath) == False ): print 'Great Found Directory >> %s and found no File at Output path >> %s \n' %(filePath,labeledImagePath) if os.path.isfile(file): #this does the adding of label and saving new image out os.system( 'convert '+file+' -background white -fill black \ -font Courier -pointsize 24 label:'+camLabel+' -gravity center -append'+' '+labeledImagePath ) else: print 'Requires file exist >>%s \n' %file else: print 'Requires Directory >> %s and no File at Output path >> %s \n' %(filePath,labeledImagePath) ##makes a camera and frame label at specified path, defaults to fixed labels # #@bug limited error checking for overwriting existing image ## def makeLabel( file = '/Users/noa/Desktop/temp/picture.png', camLabel = '/Users/noa/Desktop/temp/cam.png', frameLabel = '/Users/noa/Desktop/temp/frame.png' ): camFilePath, camFileName = os.path.split(camLabel) frameFilePath, frameFileName = os.path.split(frameLabel) if os.path.isdir(camFilePath) & os.path.isdir(frameFilePath): print 'Great Found Directory %s %s' %(camFilePath,frameFilePath) #os.path.isfile(path) #os.path.isdir(path) if ( os.path.exists(camLabel) == False ) & ( os.path.exists(frameLabel) == False ) : print('Great Day Not overwriting Files\n') #camera label cameraPrefix = 'CAM' sceneLabel = 'AS' cameraNumber = '0001' cameraVersion = '' os.system( 'convert -background white -fill black \ -font Courier -pointsize 24 label:'+cameraPrefix+'_'+sceneLabel+'_'+cameraNumber+cameraVersion+' '+camLabel ) #frame label frameNumber = '00000' os.system( 'convert -background white -fill black \ -font Courier -pointsize 24 label:'+frameNumber+' '+frameLabel ) else: print 'Requires Files to Not Exist %s %s' %(camLabel,frameLabel) else: print 'Requires Directory Exist %s %s' %(camFilePath,frameFilePath) ## #@} ## #=================================================================
#================================================================= filter and os.walk for finding files ##@file getFile.py # #(Tested Maya 2008) # #@author Nathaniel Anozie # ## ##given a directory print all the maya files, note it will look in all sub directories of that directory to # #@note inspired by Alex Martelli's example on recursive file searching (aleax dot it) # ## def getAllFileInDirectory(d = '/Users/noa/Desktop/temp', ext = '*.ma'): import os,fnmatch #hold all the file names result = [] if os.path.isdir(d): print 'Great Found Directory >> %s\n' %d #files = os.listdir(d) for base, dirs, files in os.walk(d): #print good files only, files with proper extension mayaFiles = fnmatch.filter( files, ext ) #add a good files to result result.extend( os.path.join(base,f) for f in mayaFiles ) else: print 'Requires Directory >> %s' %d return result #=================================================================
#================================================================= opening a maya file from command line #!/usr/bin/python ##print skinned geometry #@note insired by Matt Estela examples on using getopt and option arguments (tokeru dot com) ## def bindGeo(): import maya.mel, maya.cmds #find skinned geometry suffix = 'geo' #find un_skinned geometry noSkinGeo = 'finalGeo' skinnedGeo = [] try: maya.cmds.select('*_'+suffix) except TypeError: print 'Requires geometry with suffix>>%s' %suffix skinnedGeo = maya.cmds.ls(selection=True) for obj in skinnedGeo: skinCluster = maya.mel.eval('findRelatedSkinCluster'+' '+obj) print 'Great found skinned geo and skinCluster >>%s >>%s' %(obj,skinCluster) influences = [] try: influences = maya.cmds.skinCluster(skinCluster,q=True,inf=True) print 'influences for >>%s and skinCluster >>%s' %(obj,skinCluster) for inf in influences: print inf print 'influences >>' except TypeError: print 'Requires skinCluster to query influences>>%s' %skinCluster def usage(): print "usage: bindGeo [-f|--file]" print "-f,--filefind bound geometry in " def main(): import getopt,sys try: opts, args = getopt.getopt(sys.argv[1:], "hf:", ["help","file="]) except getopt.GetoptError, err: #print help info and exit print str(err) usage() sys.exit(2) file = '/Users/noa/Desktop/temp/sphere.ma' for o, a in opts: if o in ("-h","--help"): usage() sys.exit() elif o in ("-f","--file"): file = a bindGeo() if __name__ == '__main__': import maya.standalone maya.standalone.initialize(name="python") print 'current _name is: '+__name__ main() #=================================================================
#================================================================= making a maya file from command line #!/usr/bin/python def makeSphere(f = '/Users/noa/Desktop/temp/sphere.ma'): import os,sys import maya.standalone, maya.cmds #$MAYA_LOCATION/bin/mayapy makeSphere.py #needed instead of python makeSphere.py so can find maya modules #doing this so dont overwrite a directory or file etc filePath, fileName = os.path.split(f) #make sure have a maya file were writing to fileBaseName, fileExtension = os.path.splitext(fileName) if os.path.isdir(filePath) & (fileExtension == '.ma'): print 'Great Found Directory >> %s\n' %filePath if not os.path.isfile(f): print 'making sphere in maya\n' try: maya.standalone.initialize(name='python') except: sys.stderr.write("Failed Initialize Maya standalone application") raise print 'Great Were inside of Maya\n' #put inside of maya code here # #make a sphere maya.cmds.polySphere() #create a new maya file maya.cmds.file(rename=f) maya.cmds.file(save=True,type='mayaAscii') else: print '--skipping file already exists >> %s' %f else: print 'Requires Directory >> %s' %filePath print 'Requires .ma >> %s' %fileName def usage(): print "usage: makeSphere [-f|--file]" print "-f,--filesave sphere in " def main(): import getopt, sys try: opts, args = getopt.getopt(sys.argv[1:], "hf:", ["help","file="]) except getopt.GetoptError, err: #print help info and exit print str(err) usage() sys.exit(2) file = '/Users/noa/Desktop/temp/sphere.ma' for o, a in opts: if o in ("-h","--help"): usage() sys.exit() elif o in ("-f","--file"): file = a makeSphere(file) if __name__ == '__main__': print 'current _name is: '+__name__ main() #=================================================================
#=================================================================parsing a string ideas ##@file parse.py # #@author Nathaniel Anozie # #@note inpspired by Matt Estela (tokeru dot com) for learning about ValueError exception with dictionaries # #@defgroup parse Parse A formatted string #@{ #Ex: parsing a camera and frame name format etc ## def parseCamera_unitTest(): parseCamera() ##parse a form of name like cameraName_cameraAttribute_frameNumber_value and print parsed argument # ## def parseCamera( name = ['camera1_translateX_00000_1.0','camera1_translateX_00001_1.0', 'camera1_translateY_00000_5.0','camera1_translateY_00001_10.0', 'camera2_translateX_00000_1.0','camera2_translateX_00001_1.0', 'camera2_translateY_00000_5.0','camera2_translateY_00001_10.0'] ): #print name[0] for arg in name: try: camera, attribute, frame, value = arg.split("_") print 'cam >> %s attribute >> %s frame >> %s value >> %s' %(camera,attribute,frame,value) except ValueError: print '--skipping cannot parse data %s\n' %arg ## #@} ## #=================================================================
#================================================================= open maya file in command line simple example #!/usr/bin/python #@note Inspired by Justin Israel (justinfx dot com) for learning more about Maya standalone ##move camera in currently open file # ## def moveCam(filename='/Users/noa/Desktop/temp/sphere.ma', assetSuffix = 'cam', tx = 10.0): import maya.cmds #open the maya file here in the function #except if cannot open file try: maya.cmds.file(filename,o=True) except RuntimeError: print 'Require file exist >>%s' %filename cam = [] try: maya.cmds.select('*_'+assetSuffix) except TypeError: print 'Requires geometry with assetSuffix>>%s' %assetSuffix cam = maya.cmds.ls(selection=True) for obj in cam: try: print 'Great Found Camera >>%s' %obj #move camera maya.cmds.select(obj,replace=True) maya.cmds.move(tx,0.0,0.0,obj,x=True,y=True,z=True,relative=True,worldSpace=True) except TypeError: print 'Requires camera>>%s' %obj #save file on each change maya.cmds.file(s=True,f=True) if __name__ == '__main__': import maya.standalone maya.standalone.initialize(name="python") import sys print "Args:",sys.argv[1:] files = ['/Users/noa/Desktop/temp/sphere.ma','/Users/noa/Desktop/temp/sphere1.ma','/Users/noa/Desktop/temp/sphere3.ma'] for f in files: moveCam(f) #=================================================================