def decoupeMesh(): """ Extract selected faces via duplicate :return: New mesh name :rtype: str """ #--- Check Selection ---# selObject = mc.ls(sl=True, o=True) if not len(selObject) == 1: raise IOError("!!! Select only one object !!!") #--- Get Selected Components ---# selection = mc.ls(sl=True, fl=True) selFaces = [] for sel in selection: selFaces.append(int(sel.split('.')[-1].replace('f[', '').replace(']', ''))) #--- Duplique Object ---# tForm = mc.listRelatives(selObject[0], p=True)[0] dup = duplicateGeom(selObjects=tForm, name='%s__cut#' % tForm) mc.select(cl=True) for f in selFaces: mc.select('%s.f[%s]' % (dup[0], f), add=True) #--- Remove Unselected ---# pScene.invertSelection() mc.delete() #--- Add Info ---# pUtil.setNodeAttr(dup[0], 'baseObject', tForm, lock=True) mc.select(cl=True) return dup[0]
def decoupeMesh(): """ Extract selected faces via duplicate :return: New mesh name :rtype: str """ # --- Check Selection ---# selObject = mc.ls(sl=True, o=True) if not len(selObject) == 1: raise IOError("!!! Select only one object !!!") # --- Get Selected Components ---# selection = mc.ls(sl=True, fl=True) selFaces = [] for sel in selection: selFaces.append(int(sel.split(".")[-1].replace("f[", "").replace("]", ""))) # --- Duplique Object ---# tForm = mc.listRelatives(selObject[0], p=True)[0] dup = duplicateGeom(selObjects=tForm, name="%s__cut#" % tForm) mc.select(cl=True) for f in selFaces: mc.select("%s.f[%s]" % (dup[0], f), add=True) # --- Remove Unselected ---# pScene.invertSelection() mc.delete() # --- Add Info ---# pUtil.setNodeAttr(dup[0], "baseObject", tForm, lock=True) mc.select(cl=True) return dup[0]
def overrideShader(colorIndex, objects=None, matName=None, useExisting=True): """ create display override shader :param colorIndex: Maya color index :type colorIndex: int :param objects: Objects to assign :type objects: list :param matName: Material name :type matName: str :param useExisting: Use existing shader :type useExisting: bool """ #--- Get Objects ---# if objects is None: objects = mc.ls(sl=True) or [] else: if isinstance(objects, basestring): objects = [objects] #--- Get Mat Name ---# if matName is None: matName = 'mat_overrideColor_%s' % colorIndex #--- Assign Shader ---# color = pUtil.getColorFromIndex(colorIndex) if useExisting: if mc.objExists(matName): mat = matName sg = getShadingEngine(mat)[0] else: mat, sg = newMat('lambert', matName) pUtil.setNodeAttr(mat, 'color', color, dataType='double3') assignMat(sg, objects) else: for obj in objects: mat, sg = newMat('lambert', matName) pUtil.setNodeAttr(mat, 'color', color, dataType='double3') assignMat(sg, [obj])