Exemple #1
0
	def create(self,): # creates the Muscle, executed on class instantiation if all necessary arguments are supplied
		
		command='rigZenMuscle\n(\n'
		command+='	'+melEncode(self.selectionGroups)+',\n'
		command+='	'+str(self.axis)+','+str(self.jiggle)+','+str(self.spans)+'\n)'

		results=mel.eval(command)
		
		if(self.axis>0):
			self.Handle=results[0]
			self.Muscle=results[2]
			curveCount=(( len(results)-4)/2)-1
			self.curves=results[4:len(results)-curveCount]
			self.opposite=Muscle\
			(
				axis=0,
				jiggle=self.jiggle,
				script=self.script,
				Handle=results[1],
				Muscle=results[3],
				curves=results[len(results)-curveCount:]
			)
			try:	self.opposite.handleGroup=mc.listConnections(self.opposite.Handle+'.zenMuscleCtrlGroup')[0]
			except: pass
		else:
			self.Handle=results[0]
			self.Muscle=results[1]
			self.curves=results[2:]

		try:	self.handleGroup=mc.listConnections(self.Handle+'.zenMuscleCtrlGroup')[0]
		except: pass
		
		self.cMuscleShape=mc.listRelatives(self.Muscle,c=True,type='cMuscleObject')[0]
		self.muscleShape=mc.listRelatives(self.Muscle,s=True,ni=True,type='nurbsSurface')[0]
		
		if(self.axis>0):
			self.opposite.cMuscleShape=mc.listRelatives(self.opposite.Muscle,c=True,type='cMuscleObject')[0]
			self.opposite.muscleShape=mc.listRelatives(self.opposite.Muscle,s=True,ni=True,type='nurbsSurface')[0]
Exemple #2
0
	def set(self,val):
		
		if self.type=='vector':#vectors must be explicitly set
			if isIterable(val):
				if isIterable(val[0]):
					self.array=True
					valString='{'
					for i in range(0,len(val)):
						valString+='<<'+unicode(val[i][0])+','+unicode(val[i][1])+','+unicode(val[i][2])+'>>'
						if i<(len(val)-1): valString+=','
						else: valString+='}'
				else:
					valString='<<'+unicode(val[0])+','+unicode(val[1])+','+unicode(val[2])+'>>'
		else:
			if isIterable(val):
				self.array=True
				if len(val)>0:
					testVal=val[0]
				else:
					testVal=''
			else:
				testVal=val
				
			if isinstance(testVal,basestring):
				self.type='string'
			if isinstance(testVal,(int,long,float)):
				if self.type!='' and self.type in ['int','float']: pass
				else:
					if isinstance(testVal,float): self.type='float'
					else: self.type='int'
			valString=melEncode(val)
			
		cmd=self.type+' '+self.name
		if self.array: cmd+='[]'
		cmd+='='+valString
		
		return mel.eval(cmd)
Exemple #3
0
def deferExec(*args,**keywords):
    #defaults
    melCommand=False
    repeatable=True
    showErrors=True
    shortNames={
        'mel':'melCommand',
        're':'repeatable',
        'se':'showErrors'
    }
    if len(args)==0: return
    for k in keywords:
        if k in locals():
            exec(k+'=keywords[k]')
        elif k in shortNames:
            exec(shortNames[k]+'=keywords[k]')
    zdc=MelGlobalVar('zenDelayedCommands')
    dcStr=zdc.get()
    if isinstance(dcStr,basestring):
        dc=dcStr.split(';')
    else:
        dcStr=''
        dc=[]
    dcsjVar=MelGlobalVar('zenDelayedCommandsSJ')
    dcsj=dcsjVar.get()
    if type(dcsj).__name__=='NoneType':
        dcsj=''
    for a in args:
        if not repeatable:
            dc.remove(a)
        if isinstance(a,basestring):
            if melCommand:
                dc.append(a)
            else:
                lines=a.split('\n')
                if len(lines)==1:
                    dc.append('python('+melEncode(a)+')')
                else:
                    pyCmd='python(\n'
                    for l in lines:
                        pyCmd+=melEncode(l+'\n')+'+\n'
                    pyCmd=pyCmd[:-2]+')'
                    dc.append(pyCmd)
    sjExists=False
    if isIterable(dc) and len(dc)>0 and isinstance(dcsj,(int,long,float)) and dcsj!=0 and mel.eval('scriptJob -ex '+str(dcsj)):
        sjExists=True
    dc=removeAll([''],dc)
    zdc.set(';'.join(dc))
    if not(sjExists):
        cmd=(
            'scriptJob \n'+
            '    -ro true\n'+
            '    -e "idle" \n'+
            '    (\n'+
            '        '+melEncode('string $zenDeferExec_errCmds[]={};\n')+'+\n'+
            '        '+melEncode('for($c in (stringArrayRemoveDuplicates(stringToStringArray($zenDelayedCommands,\";\"))))\n')+'+\n'+
            '        '+melEncode('{\n')+'+\n'+
            '        '+melEncode('    if(catch(`eval($c)`)) $zenDeferExec_errCmds[size($zenDeferExec_errCmds)]=$c;\n')+'+\n'+
            '        '+melEncode('}\n')+'+\n'+
            '        '+melEncode('for($c in $zenDeferExec_errCmds) warning("errors encountered: \\n"+$c+"\\n");\n')+'+\n'+
            '        '+melEncode('$zenDelayedCommands="";\n')+'+\n'+
            '        '+melEncode('$zenDelayedCommandsSJ=0;\n')+'\n'+
            '    )'
        )
        dcsjVar.set(mel.eval(cmd))