Week 4


In this week I did some function exercises and applied the knowledge to maya.

The function exaples I completed can be found at w3schools.com


Function Practice in MAYA

Here are the functions I made. On the last line I call the function 'create_window()' which takes 2 arguments. These arguments are then called with a variety of uses such as; naming windows, deleting existing windows, and generating functions.

import maya.cmds
# Function to create a poly cube
def create_cube(cube_depth = '5', cube_width = '5', cube_height = '5'):
    cmds.polyCube(h = cube_height, w = cube_width, d = cube_depth)
# Function to delete existing window
def delete_existing_window(window_name):
    if cmds.window(window_name, exists = True): cmds.deleteUI(window_name)
# Function to create window
def create_window(name, cmd):
    delete_existing_window(name)  # Calls above function
    window = cmds.window(name, title='Test Window', iconName='Short Name', widthHeight=(300, 55) )
    cmds.columnLayout( adjustableColumn=True )
    cmds.button( label=name, command=(cmd) )
    cmds.button( label='Close', command=('cmds.deleteUI(\"' + window + '\", window=True)') )
    cmds.setParent( '..' )
    cmds.showWindow( window )
create_window("Creates a cube", create_cube)

Here is the output. It uses the name passed in the 'create_window()' function.


More MAYA Function Practice

Here is another example of using functions for maya.

import maya.cmds
# Function to create a shape and animate based on later variables
def animate_shape():
    global shape
    if shape == "sphere": shape = cmds.polySphere()
    if shape == "cube": shape = cmds.polyCube()
    for i in range(animation_range):
        cmds.currentTime( (i+1)*10, edit=True )
        cmds.setKeyframe(shape, v=i, at="translateX")
# Function to create a window
# Contains a button that calls the 'animate_shape()' function
def create_window():
    if cmds.window("my_window", exists = True): cmds.deleteUI("my_window")
    window = cmds.window("my_window", title="Pop-up", iconName='Short Name', widthHeight=(300, 55) )
    cmds.columnLayout( adjustableColumn=True )
    cmds.button( label='Animate', command='animate_shape()' )
    cmds.button( label='Close', command=('cmds.deleteUI(\"' + window + '\", window=True)') )
    cmds.setParent( '..' )
    cmds.showWindow( window )
shape = "cube" # Name can be 'sphere' or 'cube'
animation_range = 10 # This is the loop range for the animation
create_window()

In this example, I can set the shape and animation range at the bottom. When I press the 'Animate' window button, the function 'animate_shape()' is called. This function takes the value of the 'shape' variable and evaluates it before overwriting the variable with its respective command e.g. 'cmds.polySphere()'.


Week 4 Activities

Activity 3: While-Loops

Write a script that uses a while-loop so that it counts forward from 1 to 10 in threes, i.e. 1, 4, 7,10.

count = 1
while count <= 10:
    print(count)
    count += 3

Output:

1
4
7
10


Activity 4: Functions

Write a Python script to convert temperatures from C to F degrees.

def c_to_f(c):
    return (float(c)*1.8+32)
temp_c = input("Enter the temperature in degrees C: ")
print(f"The temperature in fahrenheit is: {c_to_f(temp_c)}")


Activity 5: More Functions

Create a while-loop that runs indefinitely, asking the user for a temperature in C, and converting it to F.

def c_to_f(c):
    return (float(c)*1.8+32)
while True:
    temp_c = input("Enter the temperature in degrees C: ")
    print(f"The temperature in fahrenheit is: {c_to_f(temp_c)}\n")


Activity 6: Testing Again

Make the program respond accordingly even if output is a string.

def c_to_f(c):
    return (float(c)*1.8+32)
while True:
    try:
        temp_c = float(input("Enter the temperature in degrees C: "))
        print(f"The temperature in fahrenheit is: {c_to_f(temp_c)}\n")
    except:
        print("Please enter a number.")

Here I use try, except to catch when an input is taken that cannot be cast to float and ask the user for a new number.


Activity 7: Multiple Functions

compositing_mark, programming_mark, research_mark, animation_mark = 75, 97, 78, 81  # Here I set the variables
def module_sum():  # Sum of all marks for all modules
    return compositing_mark + programming_mark + research_mark + animation_mark
print(module_sum())
def quarter():  # 25% of module 2 and module 3
    return (programming_mark + research_mark)/4
print(quarter())
def average():  # Overall avarage mark of all modules
    return module_sum()/4
print(average())
def overall_mark():  # The weighted average of all modules
    return compositing_mark/5 + programming_mark/5 + research_mark/5 + animation_mark*2/5
print(overall_mark())

Output:

331
43.75
82.75
82.4

Leave a comment

Log in with itch.io to leave a comment.