def MCR_ObjectNamed(xmlDefaults, *args): maximum_default_names = 3 gradeValue = { 'Aplus': int(xmlDefaults.find('gradeValue').find('Aplus').text), 'F': int(xmlDefaults.find('gradeValue').find('F').text), } development = False if development: print 'MCR Objects Named running' gMainProgressBar = maya.mel.eval('$tmp = $gMainProgressBar') cmds.progressBar(gMainProgressBar, edit=True, beginProgress=True, isInterruptable=True, status='Checking for default names', maxValue=100) step = 100 / 7 cmds.progressBar(gMainProgressBar, edit=True, step=step) utils = utilities.utilities() cmds.progressBar(gMainProgressBar, edit=True, step=step) rootNodes = utils.masterGroupTest() cmds.progressBar(gMainProgressBar, edit=True, step=step) collectedNodes = utils.nodeCollector(rootNodes) cmds.progressBar(gMainProgressBar, edit=True, step=step) sortedNodes = utils.sortNodeList(collectedNodes, 'transform') cmds.progressBar(gMainProgressBar, edit=True, step=step) hasDefaultName = utils.compareDefaultNames(sortedNodes) if development: print 'hasDefaultName: {}'.format(hasDefaultName) cmds.progressBar(gMainProgressBar, edit=True, step=step) print "Default Names Automation Successful!" if len(hasDefaultName) > maximum_default_names: tempDict = { 'grade_value': gradeValue['F'], 'comment_text': '', 'default_comments_text': 'Default names detected.', 'example_comments_text': '' } else: tempDict = { 'grade_value': gradeValue['Aplus'], 'comment_text': '', 'default_comments_text': 'No default names found. Good job!', 'example_comments_text': '' } cmds.progressBar(gMainProgressBar, edit=True, step=step) cmds.progressBar(gMainProgressBar, edit=True, endProgress=True) return tempDict
def ThreeDF_HistoryDeleted(xmlDefaults, *args): gradeValue = {'A': int(xmlDefaults.find('gradeValue').find('A').text), 'F-': int(xmlDefaults.find('gradeValue').find('F-').text), } development = False if development: print '3DF History Deleted running' gMainProgressBar = maya.mel.eval('$tmp = $gMainProgressBar') cmds.progressBar( gMainProgressBar, edit=True, beginProgress=True, isInterruptable=True, status='Checking History', maxValue=100 ) step = 100/7 cmds.progressBar(gMainProgressBar, edit=True, step=step) utils = utilities.utilities() cmds.progressBar(gMainProgressBar, edit=True, step=step) rootNodes = utils.masterGroupTest() cmds.progressBar(gMainProgressBar, edit=True, step=step) collectedNodes = utils.nodeCollector(rootNodes) cmds.progressBar(gMainProgressBar, edit=True, step=step) sortedNodes = utils.sortNodeList(collectedNodes, 'transform') cmds.progressBar(gMainProgressBar, edit=True, step=step) hasHistory = utils.historyFinder(sortedNodes) if development: print 'hasHistory: {}'.format(hasHistory) cmds.progressBar(gMainProgressBar, edit=True, step=step) print "Delete History Automation Successful!" if hasHistory: tempDict = { 'grade_value':gradeValue['F-'], 'comment_text':'', 'default_comments_text':'Object has Construction History.', 'example_comments_text':''} else: tempDict = { 'grade_value':gradeValue['A'], 'comment_text':'', 'default_comments_text':'No construction history found. Good job!', 'example_comments_text':''} cmds.progressBar(gMainProgressBar, edit=True, step=step) cmds.progressBar(gMainProgressBar, edit=True, endProgress=True) return tempDict
def ThreeDF_IllegalGeo(xmlDefaults, *args): gradeValue = { 'A': int(xmlDefaults.find('gradeValue').find('A').text), 'B': int(xmlDefaults.find('gradeValue').find('B').text), 'C': int(xmlDefaults.find('gradeValue').find('C').text), 'F-': int(xmlDefaults.find('gradeValue').find('F-').text), } development = False if development: print '3DF Illegal Geo running' gMainProgressBar = maya.mel.eval('$tmp = $gMainProgressBar') cmds.progressBar(gMainProgressBar, edit=True, beginProgress=True, isInterruptable=True, status='Checking for Illegal Geo', maxValue=100) step = 100 / 7 cmds.progressBar(gMainProgressBar, edit=True, step=step) utils = utilities.utilities() cmds.progressBar(gMainProgressBar, edit=True, step=step) rootNodes = utils.masterGroupTest() cmds.progressBar(gMainProgressBar, edit=True, step=step) collectedNodes = utils.nodeCollector(rootNodes) cmds.progressBar(gMainProgressBar, edit=True, step=step) sortedNodes = utils.sortNodeList(collectedNodes, 'transform') cmds.progressBar(gMainProgressBar, edit=True, step=step) cleanedNodes = [] for node in sortedNodes: try: if cmds.nodeType(cmds.listRelatives(node)[0]) != 'imagePlane': cleanedNodes.append(node) except RuntimeError: cmds.warning('RuntimeError Occurred - Adding node anyway...') cleanedNodes.append(node) except TypeError: pass spottedTriangles = utils.triFinder(cleanedNodes) # print('triangles: {}'.format(spottedTriangles)) spottedNGons = utils.nGonFinder(cleanedNodes) # print('nGons: {}'.format(spottedNGons)) spottedLamina = utils.laminaFinder(cleanedNodes) # print('Lamina: {}'.format(spottedLamina)) troubleGeo = '' if len(spottedTriangles[0]) != 0: troubleGeo += 'Triangles' if len(spottedNGons[0]) != 0: if troubleGeo != '': troubleGeo += ', ' troubleGeo += 'NGons' if len(spottedLamina[0]) != 0: if troubleGeo != '': troubleGeo += ', ' troubleGeo += 'Lamina Faces' total_trouble_geo = len(spottedTriangles[1]) + len(spottedLamina[1]) + len( spottedNGons[1]) cmds.progressBar(gMainProgressBar, edit=True, step=step) print "Illegal Geo Automation Successful!" if total_trouble_geo >= 11 and troubleGeo != '': tempDict = { 'grade_value': gradeValue['F-'], 'comment_text': '', 'default_comments_text': 'Illegal Geometry detected. Detected geometry includes {}.'.format( troubleGeo), 'example_comments_text': '' } elif 6 <= total_trouble_geo <= 10 and troubleGeo != '': tempDict = { 'grade_value': gradeValue['C'], 'comment_text': '', 'default_comments_text': 'Illegal Geometry detected. Detected geometry includes {}.'.format( troubleGeo), 'example_comments_text': '' } elif 1 <= total_trouble_geo <= 5 and troubleGeo != '': tempDict = { 'grade_value': gradeValue['B'], 'comment_text': '', 'default_comments_text': 'Illegal Geometry detected. Detected geometry includes {}.'.format( troubleGeo), 'example_comments_text': '' } else: tempDict = { 'grade_value': gradeValue['A'], 'comment_text': '', 'default_comments_text': 'No Illegal Geometry found. Good job!', 'example_comments_text': '' } cmds.progressBar(gMainProgressBar, edit=True, step=step) cmds.progressBar(gMainProgressBar, edit=True, endProgress=True) return tempDict
def ThreeDF_ObjectPlacement(xmlDefaults, *args): gradeValue = {'A': int(xmlDefaults.find('gradeValue').find('A').text), 'F-': int(xmlDefaults.find('gradeValue').find('F-').text), } yDisplacementMax = 0.5 yLowerLimit = -0.25 xzDisplacementMax = 2 development = False if development: print '3DF Object PLacement running' gMainProgressBar = maya.mel.eval('$tmp = $gMainProgressBar') cmds.progressBar( gMainProgressBar, edit=True, beginProgress=True, isInterruptable=True, status='Checking Object Placement', maxValue=100 ) step = 100/7 cmds.progressBar(gMainProgressBar, edit=True, step=step) utils = utilities.utilities() cmds.progressBar(gMainProgressBar, edit=True, step=step) rootNodes = utils.masterGroupTest() cmds.progressBar(gMainProgressBar, edit=True, step=step) collectedNodes = utils.nodeCollector(rootNodes) cmds.progressBar(gMainProgressBar, edit=True, step=step) sortedNodes = utils.sortNodeList(collectedNodes, 'transform') cmds.progressBar(gMainProgressBar, edit=True, step=step) cleanedNodes = [] outOfPlace = [] for node in sortedNodes: try: if cmds.nodeType(cmds.listRelatives(node)[0]) != 'imagePlane': cleanedNodes.append(node) except RuntimeError: cmds.warning('RuntimeError Occurred - Adding node anyway...') cleanedNodes.append(node) except TypeError: pass for node in cleanedNodes: # print 'node is: {}'.format(node) xmin, ymin, zmin, xmax, ymax, zmax = cmds.xform(node, worldSpace=1, query=1, boundingBox = True) if not ( yLowerLimit < ymin < yDisplacementMax): outOfPlace.append(node) if (abs(xmax - abs(xmin)) > xzDisplacementMax) or (abs(zmax - abs(zmin)) > xzDisplacementMax): if node not in outOfPlace: outOfPlace.append(node) if development: print 'objectPlacement: {}'.format(outOfPlace) cmds.progressBar(gMainProgressBar, edit=True, step=step) print "Object Placement Automation Successful!" if outOfPlace: tempDict = { 'grade_value':gradeValue['F-'], 'comment_text':'', 'default_comments_text':'Object placement needs refinement.', 'example_comments_text':''} else: tempDict = { 'grade_value':gradeValue['A'], 'comment_text':'', 'default_comments_text':'Object placed correctly. Good job!', 'example_comments_text':''} cmds.progressBar(gMainProgressBar, edit=True, step=step) cmds.progressBar(gMainProgressBar, edit=True, endProgress=True) return tempDict
def MCR_SceneLayered(xmlDefaults, *args): max_master_asseblies = 1 gradeValue = { 'Aplus': int(xmlDefaults.find('gradeValue').find('Aplus').text), 'F': int(xmlDefaults.find('gradeValue').find('F').text), } development = True if development: print 'MCR Scene Layered running' gMainProgressBar = maya.mel.eval('$tmp = $gMainProgressBar') cmds.progressBar(gMainProgressBar, edit=True, beginProgress=True, isInterruptable=True, status='MCR_SceneLayered', maxValue=100) step = 100 / 7 cmds.progressBar(gMainProgressBar, edit=True, step=step) utils = utilities.utilities() cmds.progressBar(gMainProgressBar, edit=True, step=step) rootNodes = utils.masterGroupTest() cmds.progressBar(gMainProgressBar, edit=True, step=step) collectedNodes = utils.nodeCollector(rootNodes) cmds.progressBar(gMainProgressBar, edit=True, step=step) sortedNodes = utils.sortNodeList(collectedNodes, 'mesh') cmds.progressBar(gMainProgressBar, edit=True, step=step) fail = True displayLayers = utils.findLayers() initialLayerStates = utils.collectLayerState(displayLayers) utils.hideAllLayers(displayLayers) if development: print('sortedNodes: {}'.format(sortedNodes)) visibleNodes = utils.visibilityBulkTest(sortedNodes) utils.setLayersVisibility(displayLayers, initialLayerStates) if development: print('vis: {}'.format(visibleNodes)) cmds.progressBar(gMainProgressBar, edit=True, step=step) print "Scene Layered Automation Successful!" if visibleNodes: tempDict = { 'grade_value': gradeValue['F'], 'comment_text': '', 'default_comments_text': 'Scene not layered correctly. ', 'example_comments_text': '' } else: tempDict = { 'grade_value': gradeValue['Aplus'], 'comment_text': '', 'default_comments_text': 'Scene layered correctly. Good job!', 'example_comments_text': '' } cmds.progressBar(gMainProgressBar, edit=True, step=step) cmds.progressBar(gMainProgressBar, edit=True, endProgress=True) return tempDict
def MCR_SceneGrouped(xmlDefaults, *args): max_master_asseblies = 1 gradeValue = {'Aplus': int(xmlDefaults.find('gradeValue').find('Aplus').text), 'F': int(xmlDefaults.find('gradeValue').find('F').text), } development = True if development: print 'MCR Scene Grouped running' gMainProgressBar = maya.mel.eval('$tmp = $gMainProgressBar') cmds.progressBar( gMainProgressBar, edit=True, beginProgress=True, isInterruptable=True, status='MCR_SceneGrouped', maxValue=100 ) step = 100/7 cmds.progressBar(gMainProgressBar, edit=True, step=step) utils = utilities.utilities() cmds.progressBar(gMainProgressBar, edit=True, step=step) rootNodes = utils.masterGroupTest() cmds.progressBar(gMainProgressBar, edit=True, step=step) collectedNodes = utils.nodeCollector(rootNodes) cmds.progressBar(gMainProgressBar, edit=True, step=step) sortedNodes = utils.sortNodeList(collectedNodes, 'transform') cmds.progressBar(gMainProgressBar, edit=True, step=step) master_assemblies = utils.masterGroupTest() fail = True if development: print ('Master Assemblies: {}'.format(master_assemblies)) for node in master_assemblies: print("{} is type: {}".format(node, cmds.nodeType(node))) print("{}'s relatives: {}".format(node,cmds.listRelatives(node, path = True))) if cmds.listRelatives(node, path = True) != None: for relative in cmds.listRelatives(node, path = True): print("{} is type: {}".format(relative, cmds.nodeType(relative))) print '\n' redFlagNodes = [] for node in master_assemblies: # print('checking node: {}'.format(node)) if cmds.listRelatives(node, path = True) != None: if len(cmds.listRelatives(node, path = True)) <= 2: # print('{} has <= 2 relatives'.format(node)) # print('Relatives: {}'.format(cmds.listRelatives(node))) for relative in cmds.listRelatives(node, path = True): print('checking relative: {}: type: {}'.format(relative, cmds.nodeType(relative))) if cmds.nodeType(relative) not in ('transform', 'shape'): # print ('Red Flag!: {}'.format(node)) if node not in redFlagNodes: redFlagNodes.append(node) if len(redFlagNodes): # print('red flag nodes!!!') for node in redFlagNodes: master_assemblies.remove(node) # print('master_assemblies: {}'.format(master_assemblies)) # print('red flags: {}'.format(redFlagNodes)) if len(master_assemblies) == max_master_asseblies: nodes_with_subs = utils.subGroupsTest(master_assemblies) # print('nodes_with_subs: {}'.format(nodes_with_subs)) if nodes_with_subs: fail = False cmds.progressBar(gMainProgressBar, edit=True, step=step) print "Pivot Placement Automation Successful!" if fail: tempDict = { 'grade_value':gradeValue['F'], 'comment_text':'', 'default_comments_text':'Scene not grouped correctly. ', 'example_comments_text':''} else: tempDict = { 'grade_value':gradeValue['Aplus'], 'comment_text':'', 'default_comments_text':'Scene grouped correctly. Good job!', 'example_comments_text':''} cmds.progressBar(gMainProgressBar, edit=True, step=step) cmds.progressBar(gMainProgressBar, edit=True, endProgress=True) return tempDict
def ThreeDF_Seamless(xmlDefaults, *args): gradeValue = { 'A': int(xmlDefaults.find('gradeValue').find('A').text), 'F-': int(xmlDefaults.find('gradeValue').find('F-').text), } development = False if development: print '3DF Seamless Check running' gMainProgressBar = maya.mel.eval('$tmp = $gMainProgressBar') cmds.progressBar(gMainProgressBar, edit=True, beginProgress=True, isInterruptable=True, status='Checking Seamless', maxValue=100) step = 100 / 7 cmds.progressBar(gMainProgressBar, edit=True, step=step) utils = utilities.utilities() cmds.progressBar(gMainProgressBar, edit=True, step=step) rootNodes = utils.masterGroupTest() cmds.progressBar(gMainProgressBar, edit=True, step=step) collectedNodes = utils.nodeCollector(rootNodes) cmds.progressBar(gMainProgressBar, edit=True, step=step) sortedNodes = utils.sortNodeList(collectedNodes, 'transform') cmds.progressBar(gMainProgressBar, edit=True, step=step) cleanedNodes = [] for node in sortedNodes: try: if cmds.nodeType(cmds.listRelatives(node)[0]) != 'imagePlane': cleanedNodes.append(node) except RuntimeError: cmds.warning('RuntimeError Occurred - Adding node anyway...') cleanedNodes.append(node) except TypeError: pass storeSelection = cmds.ls(selection=True) cmds.select(clear=True) for node in cleanedNodes: cmds.select(node, add=True) cmds.polySelectConstraint(type=0x8000, mode=3, where=1) borderEdges = cmds.ls(selection=True) cmds.polySelectConstraint(disable=True) cmds.select(clear=True) for node in storeSelection: cmds.select(node, add=True) cmds.progressBar(gMainProgressBar, edit=True, step=step) print "Seamless Check Automation Successful!" if borderEdges: tempDict = { 'grade_value': gradeValue['F-'], 'comment_text': '', 'default_comments_text': 'Border Edges detected. Model not seamless.', 'example_comments_text': '' } else: tempDict = { 'grade_value': gradeValue['A'], 'comment_text': '', 'default_comments_text': 'No Border Edges found. Good job!', 'example_comments_text': '' } cmds.progressBar(gMainProgressBar, edit=True, step=step) cmds.progressBar(gMainProgressBar, edit=True, endProgress=True) return tempDict
def ThreeDF_FrozenTransforms(xmlDefaults, *args): gradeValue = { 'A': int(xmlDefaults.find('gradeValue').find('A').text), 'F-': int(xmlDefaults.find('gradeValue').find('F-').text), } development = True if development: print '3DF Frozen Transforms running' gMainProgressBar = maya.mel.eval('$tmp = $gMainProgressBar') cmds.progressBar(gMainProgressBar, edit=True, beginProgress=True, isInterruptable=True, status='Checking Transforms', maxValue=100) step = 100 / 7 cmds.progressBar(gMainProgressBar, edit=True, step=step) utils = utilities.utilities() cmds.progressBar(gMainProgressBar, edit=True, step=step) rootNodes = utils.masterGroupTest() cmds.progressBar(gMainProgressBar, edit=True, step=step) collectedNodes = utils.nodeCollector(rootNodes) cmds.progressBar(gMainProgressBar, edit=True, step=step) sortedNodes = utils.sortNodeList(collectedNodes, 'transform') cmds.progressBar(gMainProgressBar, edit=True, step=step) hasTransforms = utils.frozenTransforms(sortedNodes) if development: print 'hasTransforms: {}'.format(hasTransforms) cleanedNodes = [] # print('here\n\n') if hasTransforms: for node in hasTransforms: # print('node: {}'.format(node)) if cmds.nodeType(cmds.listRelatives(node, fullPath=1)) != None: try: if cmds.nodeType(cmds.listRelatives( node, fullPath=1)[0]) != 'imagePlane': cleanedNodes.append(node) except RuntimeError: cmds.warning( 'RuntimeError Occurred - Adding node anyway...') cleanedNodes.append(node) else: cleanedNodes.append(node) cmds.progressBar(gMainProgressBar, edit=True, step=step) print "Frozen Transforms Automation Successful!" if cleanedNodes: tempDict = { 'grade_value': gradeValue['F-'], 'comment_text': '', 'default_comments_text': 'Object has non frozen transforms.', 'example_comments_text': '' } else: tempDict = { 'grade_value': gradeValue['A'], 'comment_text': '', 'default_comments_text': 'Transforms Frozen! Good job!', 'example_comments_text': '' } cmds.progressBar(gMainProgressBar, edit=True, step=step) cmds.progressBar(gMainProgressBar, edit=True, endProgress=True) return tempDict
def ThreeDF_Polycount(xmlDefaults, *args): gradeValue = { 'A': int(xmlDefaults.find('gradeValue').find('A').text), 'F-': int(xmlDefaults.find('gradeValue').find('F-').text), } #print('polycount: {}'.format(xmlDefaults.find('polycount'))) polygon_lower_limit = 300 polygon_excel_lower_limit = 480 polygon_upper_limit = 500 if xmlDefaults.find('polycount') != None: polycount_value = xmlDefaults.find('polycount').text #print(polycount_value) values = [int(x) for x in polycount_value.split(',')] #print(values) if len(values) == 3: polygon_lower_limit = values[0] polygon_excel_lower_limit = values[1] polygon_upper_limit = values[2] #print('polygon_lower_limit: {}\npolygon_excel_lower: {}\npolygon_upper_limit: {}'.format(polygon_lower_limit, polygon_excel_lower_limit, polygon_upper_limit)) good_comment = "Polycount is within range! Good Job!" great_comment = "Excellent job utilizing your poly budget! Great work!" tooLow_comment = "Your poly budget allowed for many more polygons. Try to use all the polygons you are able to polish the model." tooHigh_comment = "You've exceeded your poly budget! In production this can lead to slow run times or longer renders! Oh no!" development = False if development: print '3DF Polycount running' gMainProgressBar = maya.mel.eval('$tmp = $gMainProgressBar') cmds.progressBar(gMainProgressBar, edit=True, beginProgress=True, isInterruptable=True, status='Counting Polycount', maxValue=100) step = 100 / 7 cmds.progressBar(gMainProgressBar, edit=True, step=step) utils = utilities.utilities() cmds.progressBar(gMainProgressBar, edit=True, step=step) rootNodes = utils.masterGroupTest() cmds.progressBar(gMainProgressBar, edit=True, step=step) collectedNodes = utils.nodeCollector(rootNodes) cmds.progressBar(gMainProgressBar, edit=True, step=step) sortedNodes = utils.sortNodeList(collectedNodes, 'transform') cmds.progressBar(gMainProgressBar, edit=True, step=step) if development: print('sortedNodes: {}'.format(sortedNodes)) cleanedNodes = [] for node in sortedNodes: try: if cmds.nodeType(cmds.listRelatives(node)[0]) != 'imagePlane': cleanedNodes.append(node) except RuntimeError: cmds.warning('RuntimeError Occurred - Adding node anyway...') cleanedNodes.append(node) except TypeError: pass if development: print('cleanedNodes: {}'.format(cleanedNodes)) polyCount = 0 for node in cleanedNodes: try: #print('\n\n') #print(cmds.polyEvaluate(node, face = True)) polyCount += int(cmds.polyEvaluate(node, face=True)) except ValueError: pass if development: print 'Number of polys: {}'.format(polyCount) if polygon_lower_limit <= polyCount <= polygon_upper_limit: comment = good_comment fail = False elif polyCount < polygon_lower_limit: comment = tooLow_comment fail = True else: comment = tooHigh_comment fail = True if polygon_excel_lower_limit <= polyCount <= polygon_upper_limit: comment = great_comment fail = False cmds.progressBar(gMainProgressBar, edit=True, step=step) print "Polycount Automation Successful!" if fail: #print 'fail' tempDict = { 'grade_value': gradeValue['F-'], 'comment_text': '', 'default_comments_text': comment, 'example_comments_text': '' } else: tempDict = { 'grade_value': gradeValue['A'], 'comment_text': '', 'default_comments_text': comment, 'example_comments_text': '' } cmds.progressBar(gMainProgressBar, edit=True, step=step) cmds.progressBar(gMainProgressBar, edit=True, endProgress=True) return tempDict
def MCR_FrozenTransforms(xmlDefaults, *args): gradeValue = { 'Aplus': int(xmlDefaults.find('gradeValue').find('Aplus').text), 'F': int(xmlDefaults.find('gradeValue').find('F').text), } development = True if development: print 'MCR Frozen Transforms running' gMainProgressBar = maya.mel.eval('$tmp = $gMainProgressBar') cmds.progressBar(gMainProgressBar, edit=True, beginProgress=True, isInterruptable=True, status='Checking Transforms', maxValue=100) step = 100 / 7 cmds.progressBar(gMainProgressBar, edit=True, step=step) utils = utilities.utilities() cmds.progressBar(gMainProgressBar, edit=True, step=step) rootNodes = utils.masterGroupTest() cmds.progressBar(gMainProgressBar, edit=True, step=step) collectedNodes = utils.nodeCollector(rootNodes) cmds.progressBar(gMainProgressBar, edit=True, step=step) sortedNodes = utils.sortNodeList(collectedNodes, 'transform') cmds.progressBar(gMainProgressBar, edit=True, step=step) hasTransforms = utils.frozenTransforms(sortedNodes) cleanedNodes = [] if hasTransforms: for node in hasTransforms: # print ('node: {}'.format(node)) try: if cmds.listRelatives(node): # print('listRelatives(node): {}'.format(cmds.listRelatives(node))) f_type = cmds.nodeType( cmds.listRelatives(node, path=True)[0]) if f_type not in ('imagePlane', 'camera'): cleanedNodes.append(node) except RuntimeError: cmds.warning('RuntimeError Occurred - Adding node anyway...') cmds.warning('Problematic node: {}'.format(node)) cleanedNodes.append(node) redFlagNodes = [] for node in cleanedNodes: # print('checking node: {}'.format(node)) # print('Relatives: {}'.format(cmds.listRelatives(node))) if cmds.listRelatives(node) != None: if len(cmds.listRelatives(node)) <= 2: # print('{} has <= 1 relatives'.format(node)) # print('Relatives: {}'.format(cmds.listRelatives(node))) for relative in cmds.listRelatives(node, path=True): if cmds.nodeType(relative) not in ('transform', 'shape'): # print ('Red Flag!: {}'.format(node)) if node not in redFlagNodes: redFlagNodes.append(node) if len(redFlagNodes): # print('red flag nodes!!!\n{}'.format(redFlagNodes)) for node in redFlagNodes: # print('removing node: {}'.format(node)) cleanedNodes.remove(node) if development: print 'cleanedNodes: {}'.format(cleanedNodes) cmds.progressBar(gMainProgressBar, edit=True, step=step) print "Frozen Transforms Automation Successful!" if cleanedNodes: # if development: # print cleanedNodes tempDict = { 'grade_value': gradeValue['F'], 'comment_text': '', 'default_comments_text': 'Object has non frozen transforms.', 'example_comments_text': '' } else: tempDict = { 'grade_value': gradeValue['Aplus'], 'comment_text': '', 'default_comments_text': 'Transforms Frozen! Good job!', 'example_comments_text': '' } cmds.progressBar(gMainProgressBar, edit=True, step=step) cmds.progressBar(gMainProgressBar, edit=True, endProgress=True) return tempDict
def MCR_HistoryDeleted(xmlDefaults, *args): output_comment = 'Objects have Construction History.' # tell which box is missed #gut check? #width / two rows of tabs? gradeValue = { 'Aplus': int(xmlDefaults.find('gradeValue').find('Aplus').text), 'C': int(xmlDefaults.find('gradeValue').find('C').text), 'F': int(xmlDefaults.find('gradeValue').find('F').text), 'F-': int(xmlDefaults.find('gradeValue').find('F-').text), } development = True if development: print 'MCR History Deleted running' gMainProgressBar = maya.mel.eval('$tmp = $gMainProgressBar') cmds.progressBar(gMainProgressBar, edit=True, beginProgress=True, isInterruptable=True, status='Checking History', maxValue=100) step = 100 / 7 cmds.progressBar(gMainProgressBar, edit=True, step=step) utils = utilities.utilities() cmds.progressBar(gMainProgressBar, edit=True, step=step) rootNodes = utils.masterGroupTest() cmds.progressBar(gMainProgressBar, edit=True, step=step) collectedNodes = utils.nodeCollector(rootNodes) cmds.progressBar(gMainProgressBar, edit=True, step=step) sortedNodes = utils.sortNodeList(collectedNodes, 'transform') cmds.progressBar(gMainProgressBar, edit=True, step=step) hasHistory = utils.historyFinder(sortedNodes) if development: print 'hasHistory: {}'.format(hasHistory) try: percent_w_history = int( (100 * (float(len(hasHistory)) / float(len(sortedNodes))))) print('HasH: {}\nTotalNodes: {}'.format(len(hasHistory), len(sortedNodes))) print('%wH: {}'.format(percent_w_history)) except ZeroDivisionError: percent_w_history = 0 output_comment = '{}% of {}'.format(percent_w_history, output_comment) cmds.progressBar(gMainProgressBar, edit=True, step=step) print "Delete History Automation Successful!" if percent_w_history > 50: tempDict = { 'grade_value': gradeValue['F-'], 'comment_text': '', 'default_comments_text': output_comment, 'example_comments_text': '' } elif percent_w_history > 15: tempDict = { 'grade_value': gradeValue['F'], 'comment_text': '', 'default_comments_text': output_comment, 'example_comments_text': '' } elif percent_w_history > 5: tempDict = { 'grade_value': gradeValue['C'], 'comment_text': '', 'default_comments_text': output_comment, 'example_comments_text': '' } else: tempDict = { 'grade_value': gradeValue['Aplus'], 'comment_text': '', 'default_comments_text': (output_comment + ' Good Job!'), 'example_comments_text': '' } cmds.progressBar(gMainProgressBar, edit=True, step=step) cmds.progressBar(gMainProgressBar, edit=True, endProgress=True) return tempDict
def ThreeDF_Scale(xmlDefaults, *args): gradeValue = { 'A': int(xmlDefaults.find('gradeValue').find('A').text), 'F-': int(xmlDefaults.find('gradeValue').find('F-').text), } defaultMaxWidth = 8 defaultMinWidth = 4 if xmlDefaults.find('scale') != None: print('Scale found') scale_value = xmlDefaults.find('scale').text print('scale value: {}'.format(scale_value)) values = [int(x) for x in scale_value.split(',')] if len(values) == 2: defaultMinWidth = values[0] defaultMaxWidth = values[1] print('min: {}\nmax: {}'.format(defaultMinWidth, defaultMaxWidth)) hydrantShotgunMaxWidth = 7 hydrantShotgunMinWidth = 4 chairMaxWidth = 8 chairMinidth = 6 development = False if development: print '3DF Scale running' gMainProgressBar = maya.mel.eval('$tmp = $gMainProgressBar') cmds.progressBar(gMainProgressBar, edit=True, beginProgress=True, isInterruptable=True, status='Checking Scale', maxValue=100) step = 100 / 7 cmds.progressBar(gMainProgressBar, edit=True, step=step) utils = utilities.utilities() cmds.progressBar(gMainProgressBar, edit=True, step=step) rootNodes = utils.masterGroupTest() cmds.progressBar(gMainProgressBar, edit=True, step=step) collectedNodes = utils.nodeCollector(rootNodes) cmds.progressBar(gMainProgressBar, edit=True, step=step) sortedNodes = utils.sortNodeList(collectedNodes, 'transform') cmds.progressBar(gMainProgressBar, edit=True, step=step) cleanedNodes = [] for node in sortedNodes: try: if cmds.nodeType(cmds.listRelatives(node)[0]) != 'imagePlane': cleanedNodes.append(node) except RuntimeError: cmds.warning('RuntimeError Occurred - Adding node anyway...') cleanedNodes.append(node) except TypeError: pass scaleWonky = [] for node in cleanedNodes: xmin, ymin, zmin, xmax, ymax, zmax = cmds.xform(node, worldSpace=1, query=1, boundingBox=True) if 'hydrant'.lower() in node.lower() or 'shotgun'.lower( ) in node.lower(): if not any(hydrantShotgunMinWidth <= x <= hydrantShotgunMaxWidth for x in ((abs(xmax - abs(xmin))), (abs(zmax - abs(zmin))), (abs(ymax - abs(ymin))))): scaleWonky.append(node) break elif 'chair'.lower() in node.lower(): if not any(chairMinidth <= x <= chairMaxWidth for x in ((abs(xmax - abs(xmin))), (abs(zmax - abs(zmin))), (abs(ymax - abs(ymin))))): if node not in scaleWonky: scaleWonky.append(node) break else: if not any(defaultMinWidth <= x <= defaultMaxWidth for x in ((abs(xmax - abs(xmin))), (abs(zmax - abs(zmin))), (abs(ymax - abs(ymin))))): if node not in scaleWonky: scaleWonky.append(node) if development: print 'ScaleWonky: {}'.format(scaleWonky) cmds.progressBar(gMainProgressBar, edit=True, step=step) print "Scale Automation Successful!" if scaleWonky: tempDict = { 'grade_value': gradeValue['F-'], 'comment_text': '', 'default_comments_text': 'Scale not in line with expectations.', 'example_comments_text': '' } else: tempDict = { 'grade_value': gradeValue['A'], 'comment_text': '', 'default_comments_text': 'Scale in line with expectations. Good job!', 'example_comments_text': '' } cmds.progressBar(gMainProgressBar, edit=True, step=step) cmds.progressBar(gMainProgressBar, edit=True, endProgress=True) return tempDict