Maya Training

Introduction to Hard Surface Modeling

Maya Training

Interiors and Furniture Vol 1 & 2 - Modeling & Cloth

Maya Training

Shading, Lighting and Rendering the Bedroom in MR

Maya Training

Robot volume one - Modeling with animation in mind

Maya Training

Spach-Alspaugh House the complete courseware

Maya Training

Burt The Cartoon Dinosaur Vol 01 - Modeling

New Maya Training

Robot Volume 02 - Hybrid Rigging
You are here > Home > SimplyMaya Community Forums
Loading

Welcome to Simply Maya

Please Sign in or Sign up for an account

Member Login

Lost your password?

Not a member yet? Sign Up!

Old 17-11-2004, 04:10 AM   #1
Renderizer
Subscriber
 
Renderizer's Avatar
 
Join Date: Jun 2002
Location: Germany
Posts: 276
Thanks: 0
Thanked 0 Times in 0 Posts
Default Script doesn't remember variables

Hi all,


this is really my first attempt to dabble in MEL, so be kind, please...

Now, please take a look at the following if-statement.

The reason I post this, is that the script seems to forget the values for $MR_rotX, $MR_rotY and $MR_rotZ as soon as it leaves the if-block. Inside the block everything is fine (I printed the values to the script editor to confirm this), outside the block all values are set to zero. If I delete the if-statement and the brackets, the values remain intact..

Any idea why this happens?

Thanks!

Mario


if ($MR_SnapButton == 1)
{
int $MR_randX = rand (360/$MR_snapx);
int $MR_rotX = $MR_randX*$MR_snapx;

int $MR_randY = rand (360/$MR_snapy);
int $MR_rotY = $MR_randY*$MR_snapy;

int $MR_randZ = rand (360/$MR_snapz);
int $MR_rotZ = $MR_randZ*$MR_snapz;
}
__________________
Subdivide and conquer!

Free your mind, and your ass will follow!
Renderizer is offline   Reply With Quote
Old 17-11-2004, 08:39 AM   #2
kbrown
Moderator
 
kbrown's Avatar
 
Join Date: Sep 2002
Location: London, UK
Posts: 3,198
Thanks: 0
Thanked 8 Times in 8 Posts
Default

It's because you declare the variables inside the block. When you do that they become local variables to that block. When you try to use them outside of the block you are actually declaring new variables and that's why they show zero in the contents. To make the variables available outside the block you have to declare them in "upper level":

Code:
{
	int $MR_randX;
	int $MR_rotX;
	int $MR_randY;
	int $MR_rotY;
	int $MR_randZ;
	int $MR_rotZ;

	if ($MR_SnapButton == 1) 
	{ 
		$MR_randX = rand (360/$MR_snapx); 
		$MR_rotX = $MR_randX*$MR_snapx; 
	
		$MR_randY = rand (360/$MR_snapy); 
		$MR_rotY = $MR_randY*$MR_snapy; 
	
		$MR_randZ = rand (360/$MR_snapz); 
		$MR_rotZ = $MR_randZ*$MR_snapz; 
	}
}
__________________
Kari
- My Website
- My IMDB

Do a lot, Fail a lot and Learn a lot!
kbrown is offline   Reply With Quote
Old 17-11-2004, 02:20 PM   #3
Renderizer
Subscriber
 
Renderizer's Avatar
 
Join Date: Jun 2002
Location: Germany
Posts: 276
Thanks: 0
Thanked 0 Times in 0 Posts
Default

Yep, already found out. It just had to be some minuscle detail that's so upfront, right under your nose, that you would just overlook it.

Thanks anyway!
__________________
Subdivide and conquer!

Free your mind, and your ass will follow!
Renderizer is offline   Reply With Quote
Old 17-11-2004, 04:13 PM   #4
Alan
Moderator
 
Alan's Avatar
 
Join Date: Oct 2002
Location: London, UK
Posts: 2,800
Thanks: 0
Thanked 5 Times in 5 Posts
Default

it's called "variable scoping" and a scope is defined by {code}

they are hierarchical and so:

int x = 1;
{
int x = 2;
print x (will print 2)
{
int x = 3;
print x (will print 3)
}
}
print x (will print 1)


Alan
__________________
Technical Director - Framestore

Currently working on: Your Highness

IMDB
Alan is offline   Reply With Quote

A little bit about who we are
Links you might find useful
Catch up with SimplyMaya
SimplyMaya specialises in Maya tutorials. We offer over 1,000 individual Maya training videos, ranging from basic Maya tutorials through to intermediate Maya tutorials. Our tutorials are created by instructors with industry experience and are designed to get you up and running in Maya quickly without making it seem like hard work.

Copyright © 1999-2015 SimplyMaya - vBulletin® Copyright © 2000-2015, Jelsoft Enterprises Ltd.