Integrating 3D models with photography
Interested in integrating your 3D work with the real world? This might help
# 1 22-03-2004 , 01:15 AM
Registered User
Join Date: Dec 2003
Location: Nebraska
Posts: 6

Custom UI Help Please

Hi I"m not good at all at Mel, and I can't figure this out. I want to make a script for this loop:

int $f;

for ($f = 1; $f <= 10; $f++) { currentTime $f; shaveWriteRib -frame $f ("c:\\file." + $f + ".rib"); }

and run it through this UI:

window -height 90 -title "RibWriter" -width 370; rowLayout -columnWidth4 80 100 100 80 -enable on -height 64 -numberOfColumns 4 -visible on -width 362; text -enable on -height 17 -label "Frames" -visible on -width 80; intField -editable on -enable on -height 23 -maxValue 1000 -minValue 1 -visible on -width 100; button -height 28 -label "Rib It" -width 80;

showWindow;

What I want is to use this UI to select the amount of frames to export. But I only know the loop and have no Idea how to write the script to run it off of that UI, I realize this might not get me any where but I"m having a hard time with this. Thanks!

# 2 22-03-2004 , 01:53 AM
dannyngan's Avatar
Registered User
Join Date: Dec 2002
Location: Seattle, WA
Posts: 1,154
You need to wrap your loop in a procedure and then call that procedure from the button in your UI. The procedure would be something like this:

Code:
global proc myShaveWriteProcedure()
{
   insert loop here...;
}
The button would then get an extra flag:

Code:
button -c "myShaveWriteProcedure";
The window script will also need to be put into a procedure:

Code:
global proc myShaveWindow()
{
   window stuff here...'
}
Save all this in a called myShaveWindow.mel and then you can run "myShaveWindow" from within Maya to bring up the window.


Danny Ngan
Animator | Amaze Entertainment
my website | my blog | my job
# 3 22-03-2004 , 03:13 AM
Registered User
Join Date: Dec 2003
Location: Nebraska
Posts: 6
Well that got me alot further, than I would of gotten, thanks. Here is my new script, but I don't seem to have the float field connected to the amount of frames, here it is:

global proc myShaveWriteProcedure()
{
int $f;

for ($f = 1; $f <= 1000; $f++) { currentTime $f;
shaveWriteRib -frame $f ("c:\\file." + $f + ".rib"); }

}

global proc myShaveWindow()
{

window -height 90 -width 320;
rowLayout -columnWidth3 80 100 80 -height 64 -numberOfColumns 3 -width 312;
text -height 17 -label "Frames" -width 80;
floatField -height 23 -maxValue 1000 -minValue 1 -value 1 -width 100;
button -command "myShaveWriteProcedure" -height 28 -label "Rib It" -width 80;
}
showWindow;

# 4 22-03-2004 , 03:30 AM
dannyngan's Avatar
Registered User
Join Date: Dec 2002
Location: Seattle, WA
Posts: 1,154
You need to query the value from the floatField and then pass that value into your loop procedure. A couple of things to get you going in the right direction:

Querying the floatField's value and assigning it to a variable:

Code:
$frame = `floatfield -q -value fieldName`
Using the value in your loop procedure:

Code:
myShaveWriteProcedure($frame);
And declaring the procedure:

Code:
global proc myShaveWrite{$frame)()
{
   using $frame somehow...;
}
This might not be super accurate, but this, along with the MEL help files, should get you going in the right direction.


Danny Ngan
Animator | Amaze Entertainment
my website | my blog | my job
# 5 22-03-2004 , 03:57 AM
Registered User
Join Date: Dec 2003
Location: Nebraska
Posts: 6
I really don't know how to do this I guess I'll have to learn it, which I should of do first, so thanks for all ur help!

Posting Rules Forum Rules
You may not post new threads | You may not post replies | You may not post attachments | You may not edit your posts | BB code is On | Smilies are On | [IMG] code is On | HTML code is Off

Similar Threads