def process(self, instance): import maya.cmds as cmds node = instance.data.get('node', None) assert tp.Dcc.object_exists( node), 'No valid node found in current instance: {}'.format( instance) nodes_to_check = self._nodes_to_check(node) assert nodes_to_check, 'No Nodes to check found!' penetrating_uvs_found = list() for node in nodes_to_check: shape = tp.Dcc.list_shapes(node, full_path=True) convert_to_faces = cmds.ls(cmds.polyListComponentConversion( shape, tf=True), fl=True) overlapping = (cmds.polyUVOverlap(convert_to_faces, oc=True)) if overlapping: for obj in overlapping: penetrating_uvs_found.append(obj) assert not penetrating_uvs_found, 'Penetrating UVs found in following geometry nodes: {}'.format( penetrating_uvs_found)
def selfPenetratingUVs(self, list): selfPenetratingUVs = [] for obj in list: shape = cmds.listRelatives(obj, shapes = True, fullPath = True) convertToFaces = cmds.ls(cmds.polyListComponentConversion(shape, tf=True), fl=True) overlapping = (cmds.polyUVOverlap(convertToFaces, oc=True )) if overlapping is not None: for obj in overlapping: selfPenetratingUVs.append(obj) return selfPenetratingUVs
def UVoverlap(*args): global selection global display8, UVolface cmds.select(selection) NameList_Uvoverlap = [] cmds.ConvertSelectionToFaces() UVolface = cmds.polyUVOverlap(oc=True) cmds.select(UVolface) cmds.ConvertSelectionToShell() NameList = cmds.ls(sl=True) cmds.select(clear=1) cmds.hilite(replace=True) print UVolface for i in NameList: NameList_Uvoverlap.append(i.split('.')[0].encode('utf8')) if len(NameList_Uvoverlap) != 0: display8 = 1 return NameList_Uvoverlap