View Single Post
# 3 18-09-2015 , 01:06 AM
Registered User
Join Date: Apr 2015
Posts: 9
Hello. I have a problem with some variables, because looks like MAYA can't use them unless I type the values.
First, I created some objects and variables:
polySphere -r 0.2 -sx 20 -sy 20 -ax 0 1 0 -cuv 2 -ch 1 -name Ferritas;
circle -c 0 0 0 -nr 0 1 0 -sw 360 -r 0.05 -d 3 -ut 0 -tol 0.01 -s 8 -ch 1 -name ExtrDerFerritas;
setAttr "ExtrDerFerritas.translateX" -0.2;
circle -c 0 0 0 -nr 0 1 0 -sw 360 -r 0.05 -d 3 -ut 0 -tol 0.01 -s 8 -ch 1 -name ExtrIzqFerritas;
setAttr "ExtrIzqFerritas.translateX" 0.2;
select -cl ;
select -r Ferritas ;
select -tgl ExtrDerFerritas ;
doCreateParentConstraintArgList 1 { "1","0","0","0","0","0","0","1","","1" };
parentConstraint -mo -weight 1;
select -cl ;
select -r Ferritas ;
select -tgl ExtrIzqFerritas ;
doCreateParentConstraintArgList 1 { "1","0","0","0","0","0","0","1","","1" };
parentConstraint -mo -weight 1;
polySphere -r 0.1 -sx 20 -sy 20 -ax 0 1 0 -cuv 2 -ch 1 -name Canaca;
polySphere -r 0.1 -sx 20 -sy 20 -ax 0 1 0 -cuv 2 -ch 1 -name Eolo;

setAttr "Eolo.translateZ" 0.65;
setAttr "Eolo.translateX" 0.3;
setAttr "Canaca.translateZ" 0.65;
setAttr "Canaca.translateX" -0.3;

float $PosXExtrDerFerritas;
float $PosXCanaca;
float $DifXExtrDerFeCa;
$PosXExtrDerFerritas = `getAttr "ExtrDerFerritas.translateX"`;
$PosXCanaca = `getAttr "Canaca.translateX"`;
$DifXExtrDerFeCa = $PosXExtrDerFerritas - $PosXCanaca;

float $PosXExtrIzqFerritas;
float $PosXCanaca;
float $DifXExtrIzqFeCa;
$PosXExtrIzqFerritas = `getAttr "ExtrIzqFerritas.translateX"`;
$PosXCanaca = `getAttr "Canaca.translateX"`;
$DifXExtrIzqFeCa = $PosXExtrIzqFerritas - $PosXCanaca;

float $PosXExtrDerFerritas;
float $PosXEolo;
float $DifXExtrDerFeEo;
$PosXExtrDerFerritas = `getAttr "ExtrDerFerritas.translateX"`;
$PosXEolo = `getAttr "Eolo.translateX"`;
$DifXExtrDerFeEo = $PosXExtrDerFerritas - $PosXEolo;

float $PosXExtrIzqFerritas;
float $PosXEolo;
float $DifXExtrIzqFeEo;
$PosXExtrIzqFerritas = `getAttr "ExtrIzqFerritas.translateX"`;
$PosXEolo = `getAttr "Eolo.translateX"`;
$DifXExtrIzqFeEo = $PosXExtrIzqFerritas - $PosXEolo;

Now, if you execute the next lines, nothing happens (even though the variables have the correct values to make it work):
if ($DifXExtrDerFeCa >= 0.1 || $DifXExtrIzqFeCa <= -0.1) {
move -os -r 0 0 1 "Ferritas";
};

If you want to check the values of the variables, you can execute…
print $DifXExtrDerFeCa;
print $DifXExtrIzqFeCa;
print $DifXExtrDerFeEo;
print $DifXExtrIzqFeEo;

…which will give you the next values:
$DifXExtrDerFeCa = 0.1
$DifXExtrIzqFeCa = 0.5
$DifXExtrDerFeEo = -0.5
$DifXExtrIzqFeEo = -0.1

Finally, if you set the values manually…
$DifXExtrDerFeCa = 0.1;
$DifXExtrIzqFeCa = 0.5;
$DifXExtrDerFeEo = -0.5;
$DifXExtrIzqFeEo = -0.1;

...the following lines do make the object move like I want:
if ($DifXExtrDerFeCa >= 0.1 || $DifXExtrIzqFeCa <= -0.1) {
move -os -r 0 0 1 "Ferritas";
};

What can I do to correct the problem? I do not want to type the variables' values every time I want the object to move.