ProgressBar UI Control

A progressBar control is used to place a progress bar in a rollout.

The syntax is:

progressBar <name> [value:<number>] [color:<color>] [orient:<name>]      

The default alignment of progressBar items is #left .

Parameters

value:   

The initial progress percentage value (0 - 100). The default value is 0. This is an Integer value.

color: 

The color of the progress bar. The default color value is [30,10,190].

orient: 

Specifies whether the progress bar should fill from left to right ( orient:#horizontal ) or bottom to top ( orient:#vertical ). Default value is #horizontal .

Properties

<progressbar>.value Integer 

The progress bar complete percentage (0 - 100).

<progressbar>.color Color 

The color of the progress bar.

<progressbar>.orient Name 

The orientation of the progress bar fill: #horizontal - left to right; #vertical - bottom to top.

EXAMPLE:

   --define a rollout
   rollout progressTest "Progress Test"
   (
   button doit "Process Scene" -- button to start processing
   progressbar doit_prog color:red -- a red progress bar
   on doit pressed do -- when the button is pressed...
   (
   objArray = geometry as array -- get all geometry objects into array
   for i = 1 to objArray.count do -- and iterate through all of them
   (
   -- update the progress bar percentage
   -- for example, if there are 20 geometry objects
   -- and i is currently 1, you have 100.0*1/20 = 5%
   -- when i is 2 you have 100.0*2/20 = 10% etc...
   doit_prog.value = 100.*i/objArray.count
   -- do something with the objects, like printing their names
   print objArray[i].name
   )-- end i loop
   doit_prog.value = 0 -- when ready, reset the progress bar to 0%
   )
   )
   createDialog progressTest 200 60 -- create a dialog to test
Note:

The .value property requires an integer between 0 and 100. When calculating a percentage from a current value and a total value, the order the values are multiplied and divided does matter!

Dividing them first and then multiplying by 100.0 would always return 0.0 because an Integer divided by an Integer yields an Integer, and since the result is less than zero, it is rounded down to zero:

1/20*100.0 -> 0*100.0 -> 0.02/20*100.0 -> 0*100.0 -> 0.03/20*100.0 -> 0*100.0 -> 0.0

but

100.0*1/20 -> 100.0/20 -> 5.0100.0*2/20 -> 200.0/20 -> 10.0100.0*3/20 -> 300.0/20 -> 15.0

When starting with the Float value 100.0, the final result is implicitly converted to a Float because a Float multiplied by an Integer returns a Float, and a Float divided by an Integer still returns a Float. The Float value is then converted internally to Integer when assigned to the .value property.

Events

on <progressbar> clicked <arg> do <expr> 

Called when user clicks on the progress bar. The <arg> argument will contain the percentage value at the clicked point.

This event handler makes the progressbar an interactive UI control. See How To ... Enhance the Morpher Modifier With Floating Controls for an example of progressbar usage as slider replacement.

on <progressbar> rightClick do <expr> 

Called when the user right-clicks the Progressbar control.

Available in 3ds Max 2010 and higher.