Wednesday, August 15, 2012

Procedures in General

What exactly is a procedure? How to declare a procedure? What does a local and global procedure means? How can we return values from a procedure and use it some where else!

Below are the links to useful links dealing on these subject matter. Check it out!

Source :  procedures in MEL!

procedures in MEL:

declaring a procedure - use the "proc" keyword

     proc myProc( ) {
          statements_to_execute;
     }

If you execute this in the script editor, it will look like nothing happens.
However, the procedure "myProc" will have been declared and ready for execution
whenever you call the procedure:

     myProc( );
or
     myProc;


Passing values to a procedure:

     proc myProc( int $count, float $size ) {
          for ($i = 1; $i <= $count; $i++ )
               sphere -r $size;
          }
     }

In the above example, you now need to give the procedure the necessary inputs:

    myProc( 5, 3.5 );
or
    myProc 5 3.5;


Procedures that return a value (the MSMA book calls this a function):

Put a data type for the returned value after the "proc" keyword.
You must then include the "return" command somewhere in the procedure.

     proc float myProc( float $input ) {
          float $squared = $input * $input;
          return $squared;
     }

If you call this procedure, you can get back the result:

float $squaredResult = myProc( 6 );


LOCAL vs GLOBAL:

Declaring a global procedure - just use the "global" keyword:

     global proc myProc( ) {
          statements_to_execute;
     }

By default, a procedure is "local".
A local procedure can only be called from within the script in which it exists.

A global procedure can be called using the command line or by any other script, expression,
or script node during the maya session.

Often, a script will have one global procedure (perhaps the one that sets up a GUI or
takes input from the command line). The remaining procedures in the script handle tasks
after the global procedure has been called, for purpose of organization and structured
programming.

Sometimes a set of scripts are  incorporated to create a sophisticated "tool set" (perhaps
after creating a new shelf tab with a number of custom shelf buttons, etc.). In cases like
this, there may be global procedures that are shared by multiple scripts, avoiding repetition
and ensuring continuity.


External Script Files:

A procedure needs to be global for maya to find it in the external script paths, without
the need to first use the "source" command or menu option.

If you create a new script file and save it in your script path(s), use the command "rehash"
for maya to re-scan the files so that it can find the new procedures.


Link : How to return multiple values in procedure?