示例#1
0
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
示例#2
0
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
示例#3
0
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
示例#5
0
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
示例#6
0
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
示例#7
0
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
示例#8
0
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
示例#9
0
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
示例#10
0
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
示例#11
0
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
示例#12
0
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