def finalize(self): log.debug("returnList: %s"% self.returnList) log.debug("createdList: %s"% self.createdList) buffer = [] #self.i_module.templateNull.templateStarterData log.debug("starting data: %s"% buffer) #Make sure we have enough points #============== handles = self.i_module.templateNull.handles if len(self.returnList) < handles: log.warning("Creating curve to get enough points") curve = curves.curveFromPosList(self.returnList) mc.rebuildCurve (curve, ch=0, rpo=1, rt=0, end=1, kr=0, kcp=0, kep=1, kt=0,s=(handles-1), d=1, tol=0.001) self.returnList = curves.returnCVsPosList(curve)#Get the pos of the cv's mc.delete(curve) #Store info #============== for i,p in enumerate(self.returnList): buffer.append(p)#need to ensure it's storing properly #log.info('[%s,%s]'%(buffer[i],p)) #Store locs #============== log.debug("finish data: %s"% buffer) self.templateNull.__setattr__('templateStarterData',buffer,lock=True) #self.i_module.templateNull.templateStarterData = buffer#store it log.info("'%s' sized!"%self.i_module.getShortName()) dragFactory.clickMesh.finalize(self)
def finalize(self): """ Press action. Clears buffers. """ #Clean our lists... self.l_created = lists.returnListNoDuplicates(self.l_created) self.l_return = lists.returnListNoDuplicates(self.l_return) if self._createMode in ['curve','jointChain','group','follicle'] and self.l_return: if self._createMode == 'group': bufferList = [] for i,o in enumerate(self.l_created): buffer = rigging.groupMeObject(o,False) bufferList.append(buffer) try:mc.delete(o) except:pass self.l_created = bufferList elif self._createMode =='follicle': if self.mode == 'midPoint': log.warning("Mid point mode doesn't work with follicles") return bufferList = [] for o in self.l_created: mesh = attributes.doGetAttr(o,'cgmHitTarget') if mc.objExists(mesh): uv = distance.returnClosestUVToPos(mesh,distance.returnWorldSpacePosition(o)) log.info("uv: {0}".format(uv)) follicle = nodes.createFollicleOnMesh(mesh) log.info("follicle: {0}".format(follicle)) attributes.doSetAttr(follicle[0],'parameterU',uv[0]) attributes.doSetAttr(follicle[0],'parameterV',uv[1]) try:mc.delete(o) except:pass else: for o in self.l_created: try:mc.delete(o) except:pass if self._createMode == 'curve' and len(self.l_return)>1: if len(self.l_return) > 1: self.l_created = [curves.curveFromPosList(self.l_return)] else: log.warning("Need at least 2 points for a curve") elif self._createMode == 'jointChain': self.l_created = [] mc.select(cl=True) for pos in self.l_return: self.l_created.append( mc.joint (p = (pos[0], pos[1], pos[2]),radius = 1) ) log.debug( self.l_created) if self.d_tagAndName: for o in self.l_created: try: i_o = cgmMeta.cgmNode(o) for tag in self.d_tagAndName.keys(): i_o.doStore(tag,self.d_tagAndName[tag]) i_o.doName() except StandardError,error: log.error(">>> clickMesh >> Failed to tag and name: %s | error: %s"%(i_o.p_nameShort,error))
def finalize(self): """ Press action. Clears buffers. """ #Clean our lists... self.createdList = lists.returnListNoDuplicates(self.createdList) self.returnList = lists.returnListNoDuplicates(self.returnList) if self.createMode in ['curve','jointChain','group','follicle'] and self.returnList: if self.createMode == 'group': bufferList = [] for i,o in enumerate(self.createdList): buffer = rigging.groupMeObject(o,False) bufferList.append(buffer) try:mc.delete(o) except:pass self.createdList = bufferList elif self.createMode =='follicle': if self.mode == 'midPoint': guiFactory.warning("Mid point mode doesn't work with follicles") return bufferList = [] for o in self.createdList: mesh = attributes.doGetAttr(o,'cgmHitTarget') if mc.objExists(mesh): uv = distance.returnClosestUVToPos(mesh,distance.returnWorldSpacePosition(o)) follicle = nodes.createFollicleOnMesh(mesh) attributes.doSetAttr(follicle[0],'parameterU',uv[0]) attributes.doSetAttr(follicle[0],'parameterV',uv[1]) try:mc.delete(o) except:pass else: for o in self.createdList: try:mc.delete(o) except:pass if self.createMode == 'curve' and len(self.returnList)>1: if len(self.returnList) > 1: self.createdList = [curves.curveFromPosList(self.returnList)] else: guiFactory.warning("Need at least 2 points for a curve") elif self.createMode == 'jointChain': self.createdList = [] mc.select(cl=True) for pos in self.returnList: self.createdList.append( mc.joint (p = (pos[0], pos[1], pos[2]),radius = 1) ) self.reset()
def finalize(self): log.debug("returnList: %s" % self.returnList) log.debug("createdList: %s" % self.createdList) buffer = [] #self.i_module.templateNull.templateStarterData log.debug("starting data: %s" % buffer) #Make sure we have enough points #============== handles = self.i_module.templateNull.handles if len(self.returnList) < handles: log.warning("Creating curve to get enough points") curve = curves.curveFromPosList(self.returnList) mc.rebuildCurve(curve, ch=0, rpo=1, rt=0, end=1, kr=0, kcp=0, kep=1, kt=0, s=(handles - 1), d=1, tol=0.001) self.returnList = curves.returnCVsPosList( curve) #Get the pos of the cv's mc.delete(curve) #Store info #============== for i, p in enumerate(self.returnList): buffer.append(p) #need to ensure it's storing properly #log.info('[%s,%s]'%(buffer[i],p)) #Store locs #============== log.debug("finish data: %s" % buffer) self.templateNull.__setattr__('templateStarterData', buffer, lock=True) #self.i_module.templateNull.templateStarterData = buffer#store it log.info("'%s' sized!" % self.i_module.getShortName()) dragFactory.clickMesh.finalize(self)
def finalize(self): """ Press action. Clears buffers. """ #Clean our lists... self.createdList = lists.returnListNoDuplicates(self.createdList) self.returnList = lists.returnListNoDuplicates(self.returnList) if self.createMode in ['curve', 'jointChain', 'group', 'follicle' ] and self.returnList: if self.createMode == 'group': bufferList = [] for i, o in enumerate(self.createdList): buffer = rigging.groupMeObject(o, False) bufferList.append(buffer) try: mc.delete(o) except: pass self.createdList = bufferList elif self.createMode == 'follicle': if self.mode == 'midPoint': guiFactory.warning( "Mid point mode doesn't work with follicles") return bufferList = [] for o in self.createdList: mesh = attributes.doGetAttr(o, 'cgmHitTarget') if mc.objExists(mesh): uv = distance.returnClosestUVToPos( mesh, distance.returnWorldSpacePosition(o)) follicle = nodes.createFollicleOnMesh(mesh) attributes.doSetAttr(follicle[0], 'parameterU', uv[0]) attributes.doSetAttr(follicle[0], 'parameterV', uv[1]) try: mc.delete(o) except: pass else: for o in self.createdList: try: mc.delete(o) except: pass if self.createMode == 'curve' and len(self.returnList) > 1: if len(self.returnList) > 1: self.createdList = [ curves.curveFromPosList(self.returnList) ] else: guiFactory.warning( "Need at least 2 points for a curve") elif self.createMode == 'jointChain': self.createdList = [] mc.select(cl=True) for pos in self.returnList: self.createdList.append( mc.joint(p=(pos[0], pos[1], pos[2]), radius=1)) self.reset()
def doSize(self,sizeMode='normal',geo = [],posList = [],*args,**kws): """ Size a module 1) Determine what points we need to gather 2) Initiate draggerContextFactory 3) Prompt user per point 4) at the end of the day have a pos list the length of the handle list @ sizeMode 'all' - pick every handle position 'normal' - first/last, if child, will use last position of parent as first 'manual' - provide a pos list to size from TODO: Add option for other modes Add geo argument that can be passed for speed Add clamp on value Add a way to pull size info from a mirror module """ log.debug(">>> doSize") clickMode = {"heel":"surface"} #Gather info #============== handles = self.templateNull.handles if len(self.i_coreNames.value) == handles: names = self.i_coreNames.value else: log.warning("Not enough names. Generating") names = getGeneratedCoreNames(self) if not geo: geo = self.modulePuppet.getGeo() log.debug("Handles: %s"%handles) log.debug("Names: %s"%names) log.debug("Puppet: %s"%self.getMessage('modulePuppet')) log.debug("Geo: %s"%geo) log.debug("sizeMode: %s"%sizeMode) i_module = self #Bridge holder for our module class to go into our sizer class #Variables #============== if sizeMode == 'manual':#To allow for a pos list to be input if not posList: log.error("Must have posList arg with 'manual' sizeMode!") return False if len(posList) < handles: log.warning("Creating curve to get enough points") curve = curves.curveFromPosList(posList) mc.rebuildCurve (curve, ch=0, rpo=1, rt=0, end=1, kr=0, kcp=0, kep=1, kt=0,s=(handles-1), d=1, tol=0.001) posList = curves.returnCVsPosList(curve)#Get the pos of the cv's mc.delete(curve) self.templateNull.__setattr__('templateStarterData',posList,lock=True) log.info("'%s' manually sized!"%self.getShortName()) return True elif sizeMode == 'normal': if names > 1: namesToCreate = names[0],names[-1] else: namesToCreate = names log.debug("Names: %s"%names) else: namesToCreate = names sizeMode = 'all' class moduleSizer(dragFactory.clickMesh): """Sublass to get the functs we need in there""" def __init__(self,i_module = i_module,**kws): log.debug(">>> moduleSizer.__init__") if kws:log.debug("kws: %s"%str(kws)) super(moduleSizer, self).__init__(**kws) self.i_module = i_module log.info("Please place '%s'"%self.toCreate[0]) def release(self): if len(self.returnList)< len(self.toCreate)-1:#If we have a prompt left log.info("Please place '%s'"%self.toCreate[len(self.returnList)+1]) dragFactory.clickMesh.release(self) def finalize(self): log.debug("returnList: %s"% self.returnList) log.debug("createdList: %s"% self.createdList) buffer = [] #self.i_module.templateNull.templateStarterData log.debug("starting data: %s"% buffer) #Make sure we have enough points #============== handles = self.i_module.templateNull.handles if len(self.returnList) < handles: log.warning("Creating curve to get enough points") curve = curves.curveFromPosList(self.returnList) mc.rebuildCurve (curve, ch=0, rpo=1, rt=0, end=1, kr=0, kcp=0, kep=1, kt=0,s=(handles-1), d=1, tol=0.001) self.returnList = curves.returnCVsPosList(curve)#Get the pos of the cv's mc.delete(curve) #Store info #============== for i,p in enumerate(self.returnList): buffer.append(p)#need to ensure it's storing properly #log.info('[%s,%s]'%(buffer[i],p)) #Store locs #============== log.debug("finish data: %s"% buffer) self.templateNull.__setattr__('templateStarterData',buffer,lock=True) #self.i_module.templateNull.templateStarterData = buffer#store it log.info("'%s' sized!"%self.i_module.getShortName()) dragFactory.clickMesh.finalize(self) #Start up our sizer return moduleSizer(mode = 'midPoint', mesh = geo, create = 'locator', toCreate = namesToCreate)
def doSize(self, sizeMode='normal', geo=[], posList=[], *args, **kws): """ Size a module 1) Determine what points we need to gather 2) Initiate draggerContextFactory 3) Prompt user per point 4) at the end of the day have a pos list the length of the handle list @ sizeMode 'all' - pick every handle position 'normal' - first/last, if child, will use last position of parent as first 'manual' - provide a pos list to size from TODO: Add option for other modes Add geo argument that can be passed for speed Add clamp on value Add a way to pull size info from a mirror module """ log.debug(">>> doSize") clickMode = {"heel": "surface"} #Gather info #============== handles = self.templateNull.handles if len(self.i_coreNames.value) == handles: names = self.i_coreNames.value else: log.warning("Not enough names. Generating") names = getGeneratedCoreNames(self) if not geo: geo = self.modulePuppet.getGeo() log.debug("Handles: %s" % handles) log.debug("Names: %s" % names) log.debug("Puppet: %s" % self.getMessage('modulePuppet')) log.debug("Geo: %s" % geo) log.debug("sizeMode: %s" % sizeMode) i_module = self #Bridge holder for our module class to go into our sizer class #Variables #============== if sizeMode == 'manual': #To allow for a pos list to be input if not posList: log.error("Must have posList arg with 'manual' sizeMode!") return False if len(posList) < handles: log.warning("Creating curve to get enough points") curve = curves.curveFromPosList(posList) mc.rebuildCurve(curve, ch=0, rpo=1, rt=0, end=1, kr=0, kcp=0, kep=1, kt=0, s=(handles - 1), d=1, tol=0.001) posList = curves.returnCVsPosList(curve) #Get the pos of the cv's mc.delete(curve) self.templateNull.__setattr__('templateStarterData', posList, lock=True) log.info("'%s' manually sized!" % self.getShortName()) return True elif sizeMode == 'normal': if names > 1: namesToCreate = names[0], names[-1] else: namesToCreate = names log.debug("Names: %s" % names) else: namesToCreate = names sizeMode = 'all' class moduleSizer(dragFactory.clickMesh): """Sublass to get the functs we need in there""" def __init__(self, i_module=i_module, **kws): log.debug(">>> moduleSizer.__init__") if kws: log.debug("kws: %s" % str(kws)) super(moduleSizer, self).__init__(**kws) self.i_module = i_module log.info("Please place '%s'" % self.toCreate[0]) def release(self): if len(self.returnList) < len( self.toCreate) - 1: #If we have a prompt left log.info("Please place '%s'" % self.toCreate[len(self.returnList) + 1]) dragFactory.clickMesh.release(self) def finalize(self): log.debug("returnList: %s" % self.returnList) log.debug("createdList: %s" % self.createdList) buffer = [] #self.i_module.templateNull.templateStarterData log.debug("starting data: %s" % buffer) #Make sure we have enough points #============== handles = self.i_module.templateNull.handles if len(self.returnList) < handles: log.warning("Creating curve to get enough points") curve = curves.curveFromPosList(self.returnList) mc.rebuildCurve(curve, ch=0, rpo=1, rt=0, end=1, kr=0, kcp=0, kep=1, kt=0, s=(handles - 1), d=1, tol=0.001) self.returnList = curves.returnCVsPosList( curve) #Get the pos of the cv's mc.delete(curve) #Store info #============== for i, p in enumerate(self.returnList): buffer.append(p) #need to ensure it's storing properly #log.info('[%s,%s]'%(buffer[i],p)) #Store locs #============== log.debug("finish data: %s" % buffer) self.templateNull.__setattr__('templateStarterData', buffer, lock=True) #self.i_module.templateNull.templateStarterData = buffer#store it log.info("'%s' sized!" % self.i_module.getShortName()) dragFactory.clickMesh.finalize(self) #Start up our sizer return moduleSizer(mode='midPoint', mesh=geo, create='locator', toCreate=namesToCreate)