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]
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)
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))