Friday, November 11, 2011

The Shelf - Adding MEL Commands

Creating a shelf button for tasks and commands that you do regularly throughout your
work flow can be a huge time saver and incredibly easy to do with a few steps.

Adding a MEL Command to the Shelf

1. Decide which shelf you want to add your custom MEL command to.

    For our purposes, we'll use the Custom shelf we created in an earlier post about the Shelf.

    Click on the tab labeled "Custom" on the Shelf.
 

2. The MEL Command Statement(s)

    If you recently accessed the command, you can find it in the History Panel. 
    Otherwise, you can retype it. In our example, we'll use the following command statement:

    textCurves -t "Hello World!" ;

3. Highlight the Satement (see Figure 1) with your mouse.

Figure 1 -Highlight the Statement

4. Save the Script to the Shelf

    There are 2 options you can choose from here:
   
    Option 1: Click and Drag 
  • With the left mouse button, simply click and drag the statement directly to the Shelf.
  • A dialog box will appear, giving you the option to save the command to the Shelf either in MEL or in Python.
  • Select button that says MEL. 

        Option 2: Saving via the Script Editor Menu
    • In the Script Editor menu (NOT the main Maya menu. See Figure 2), go to:                                           File > Save Script to Shelf...
    Figure 2 - Save Script to Shelf
    • A dialog box will appear, giving you a chance to save the command with any name we'd like to give it. 
    • I decided to give it the name, "hello"
    • A dialog box will appear, giving you the option to save our command to the Shelf as either in MEL or  in Python.
    • Select button that says MEL.
    5. Pat yourself on the back

        You've just turned your script into a custom shelf button for future use! (see Figure 3)

    Figure 3 - Results of Options 1 and 2

         Now you'll never have to write the complete statement, textCurves -t "Hello World!"; again!

         A simple press of the button in the Shelf will execute the command!

    Deleting Items from the Shelf: 
    You may want to delete shelf buttons for a variety reasons. Here's how:

    • With your middle mouse button, click & drag the shelf button to the Trashcan icon, which is located at the far right of the Shelf (see Figure 4).

    Figure 4 - Trashcan Icon for the Shelf
     






    Conclusion:
    Remember, this is just a proof of concept; you probably won't ever be in desperate need
    to automate a "Hello World" text curve into your scene.

    However, this example opens up so many possiblities, especially when considering an extremely complex set of instructions (MEL commands) can be encapsulated into a simple button!

    For instance, what if you had a task that required you to the following steps:
    • center pivot of all objects
    • freeze transformations of all objects
    • delete history of all objects
    • save the file
    Going through all those steps to perform a task would be a real pain, especially if you do it often.

    Wouldn't it be nice if there was just one button to do all of these steps? Using what we just learned as a foundation, it won't be difficult to do.

    Of course, before we can create a complex MEL script, we have to know how to make a simple one! Like so many teachers have told me in the past:
    • Learn to stand before you walk.
    • Learn the ABCs before you write your novel.
    Next Blog Post:
    Creating a MEL Script!
       

    The Shelf and Creating a New Shelf

    Figure 1 - the Shelf
    When you probably first started Maya, you may have noticed that even though you can create a polygonal sphere from Maya's main menu, you could also just click on a button on the Shelf (see Figure 1) to create one, as well.

    But did you know that you can actually add custom buttons to the Shelf?

    Creating a shelf button for tasks and commands that you do regularly throughout your workflow can be a huge timesaver and incredibly easy to do.

    There are 2 parts to this process:
    1. Decide which shelf you want to add your MEL command - or create a new Shelf, altogether.
    2. Adding the MEL command to the Shelf

    The Shelf
    If you don't see the Shelf in Maya's interface, you can activate it in Maya's main menu (see Figure 2 ):

        Display > UI Elements > Shelf
    Figure 2 - Displaying the Shelf

    Creating a new Shelf
    1.  Along the Shelf, at the far left, there's an icon with a downward-pointing arrow (see Figure 3). 

    Figure 3 - Shelf Icon
     
    2.  With your left mouse button, click & hold over the downward-pointing arrow icon.

    3.  A dialog box will pop up, but will disappear if you release your mouse button's hold.

    4.  Click on the option, "New Shelf"

    5.  A dialog box will appear, prompting you to enter the name of the new shelf we are creating (see Figure 4).

    Figure 4 - Dialog box to name the new Shelf
     
    6.  For now, let's give it the name, "Custom", but you can give it any name you wish.

    7.  click "Ok".

    Creating a new shelf means we don't have to clutter the other default Maya shelves. Not to mention, its a great way to keep our shelf buttons organized once you become a MEL guru and start writing all kinds of different custom MEL commands and scripts.

    Next Blog Post:

    Friday, November 4, 2011

    MEL Commands and Arguments

    • A command:
      • is like a magic word for Maya to do your bidding. 
      • says to Maya, "textCurves!!!" Then Maya makes one for you.
    • A command argument 
      • says to Maya, "Hey, I'm letting you know that I want to add a detail to this textCurves command called -t"
    • A parameter 
      • is the specific detail of a command argument. 
      • In our case, "Hello World" was the detail we used but it could be anything, depending on what you want.
    In the last post, we created wrote our first MEL command, 
        textCurves -t "Hello World!" ;

    To be thorough, let me briefly address a big question: What exactly does the cryptic text in our command statement mean?

    textCurves  

    This is a command.  

    Specifically, textCurves performs the particular task of creating "NURBS curves from a text string" (Cite source: maya help) into the scene .

    There are thousands (millions?) of specific commands that are already built into Maya
    that are ready to use.  You can also create commands from scratch, in case there's something Maya doesn't already do, but should!
       
    In an earlier post, Command Errors, I introduced what commands and command errors are and defined them in greater detail. I used the command, sphere, as the example.

    -t 

    In general terms, this is a command argument

    Specifically, -t is a command argument for the textCurves command.

    More often than not, its not enough to simply type in a command without telling Maya
    the details. Using command argument fleshes out such details.

    The -t argument for the textCurves command allows you to enter the specific phrase you want displayed.  the -t argument isn't universal, though - you can't use it for just any command (you can't use it for the sphere command)


    In our case, we wanted to display the text, Hello World!

    There are many other command arguments associated with the textCurves command, such as:

    • -f : allows you to determine the font
    • -n : allows you to give a specific name to the object

    For instance, execute the following code, to see what adding extra arguments does:
        textCurves -f "Arial" -n "helloWorld" -t "Hello World!"

    There will be another post about how you can find what other command arguments are associated with a specific command, to give 

    "Hello World!"  

    This is a parameter.

    Specifically, the phrase, "Hello World!", really means nothing to Maya and isn't important to the command, itself. 

    What's important is "Hello World!" represents a specific detailed parameter you want Maya to act on.


    For instance, Instead of "Hello World!", test the following:
    • your name
    • the name of a friend
    • a city
    • a state
    • your favorite restaurant
    • Anything! 
    Not all parameters need to be enclosed in quotes.  In the case of the -t argument it's data type is a String, so we need to enclose whatever we want for this argument within quotes.

    You're probably thinking, "Data types? A 'String'?"  We'll get to that easy stuff in another post.  For now, just know that:
    • the -t argument's parameters need to be enclosed in quotes
    • not all argument parameters need to be enclosed in quotes. It just depends the type of argument.
    Next Post: 
    In the next post, we'll introduce the Shelf and how to add shelves to your the Shelf!

    MEL Command: Hello World!

    The phrase "Hello World!" is a common exercise to acquaint people with a computer programming language, so its only appropriate that we start our first MEL endeavor with this exercise.

    MEL Commands and MEL Scripts

    Let's be clear; there is a difference between MEL commands and MEL scripts.
    The biggest differences between them are:
    • MEL commands are the parts that make up a MEL script
    • MEL commands constitute a MEL script.

    MEL Commands: Hello World!

    1. Open the Script Editor


    2. In the Scripting Panel:
    Write (or copy & paste) the following command statement:
        textCurves -t "Hello World!" ;
         
        NOTE: Please be aware of the semicolon at the end of this command statement. 
      • It's a good - and often necessary - convention to follow.
      • This one particular command will work fine without it, but once we start writing scripts with multiple statements, you could end up with a syntax error or bugs in your scripts!

    3. Execute:
    You actually have a few options to execute this command, choose any one:
    1. Ctrl + Enter 
    2. Enter (on the numeric keypad)
    3. Highlight the command statement, then click on the Execute icon (Figure 1)
    4. Highlight the line, then hold the right mouse button. A dialog box will open up. Select "Execute".
    Figure 1: The Execute Icon in the Script Editor
      
    4. Bask in the splendor of your creation
    Once you've executed the code, you'll notice a nurbs curve that says "Hello World!" is generated in your scene! (see Figure 2)

    Figure 2 : Hello World!
    I know... it's totally awesome! 
    Time to pat yourself on the back.


    Conclusion:

    Let's assume that, for some reason, you have to call on your "Hello World!" command a lot of times throughout your workflow (I know its preposterous, but bear with me!)

    Having to constantly find the command statement in the History Panel and then execute the command every time we want to execute the command just isn't good enough! 

    We're too laz -*ahem*- our time is too important to us!

    Next Post:

    textCurves -t "Hello World!" ;

    Huh? What did we just do? What does that cryptic text mean, anyways?
    In the next post, MEL Commands and Arguments, I'll briefly break down what we wrote to give a little insight about what this statement technically means to Maya.