この関数のグループを使用すると、時間のかかる操作に進行状況バーを表示できます。これは 3ds Max で IK、プレビューのレンダリング、キー リダクションなどの計算に使用される進行状況バーと同じです。
これらの関数は、次のとおりです。
progressStart "caption"
進行状況バーを最初にキャプション付きで表示します。
progressUpdate <percent>
完了した割合を表示するために、バーを更新します。範囲は 0 から 100 までです。また、この関数はユーザが進行状況バーの[キャンセル] (Cancel)ボタンを押したかどうかを確認し、計算を続行する場合は true
、ユーザがキャンセルを要求した場合は false
を返します。getProgressCancel()
を呼び出してキャンセルの状態を確認することもできます。こちらの方が使用するシステム リソースが少なくて済むため、progressUpdate()
よりも頻繁に呼び出されます。
progressEnd()
操作の終了を知らせ、進行状況バーを画面から消します。
getProgressCancel()
ユーザが進行状況バーの[キャンセル] (Cancel)ボタンを押して操作をキャンセルしたかどうかを確認する関数で、使用するシステム リソースが少なくて済みます。深いループ内では、ユーザによるキャンセルの遅延を減らすためになるべくこの関数を呼び出すことをお勧めします。使用するシステム リソースを最低限に抑えるために、progressUpdate()
は必要に応じて進行状況バーの重要な変化を表示するためだけに呼び出します。getProgressCancel()
関数と progressUpdate()
関数は、ユーザが[キャンセル] (Cancel)ボタンを押すと確認のダイアログ ボックスを表示し、この確認処理からキャンセルの状態を返します。progressUpdate()
とは異なり、この関数は、ユーザがキャンセルの確認要求を行った場合は true
を返し、それ以外の場合は false
を返します。
setProgressCancel <boolean>
進行状況バーの[キャンセル] (Cancel)フラグを設定またはクリアします。true
値を渡した場合は[キャンセル] (Cancel)フラグが設定され、progressUpdate()
および getProgressCancel()
関数で検出されます。false
値を渡した場合は、[キャンセル] (Cancel)フラグが設定されている場合、これがクリアされます。
次に進行状況バーの表示と関連する 3ds Max システム グローバル変数を示します。
escapeEnable
ESC
キーによる中断の検出がオンかオフかを定義するブール値を取得/設定します。enableEscape
を false
に設定すると ESC
キーによる中断の検出はオフに、true
に設定すると再びオンになります。この変数は進行状況バーとともに使用すると便利です。スクリプトによる長い計算の実行をユーザが中断するのを制限したい場合に、進行状況バーに独自の[キャンセル] (Cancel)ボタンが設定してあるときには、enableEscape
を false
に設定できます。
パーセントの計算時の注意:
現在の整数値と整数値の合計からパーセントを計算するときは、値の乗算と除算の順番が重要になります。これらの値を最初に割ってから 100.0 を掛けると、常に 0.0 が返されます。整数を整数で割った結果も整数でなければなりませんが、ゼロより小さいため、四捨五入されて計算結果はゼロになります。合計値が 20 で、各値が 1 ~ 19 の間の場合、次のようになります。
1/20*100.0 -> 0*100.0 -> 0.0 2/20*100.0 -> 0*100.0 -> 0.0 3/20*100.0 -> 0*100.0 -> 0.0 ... 19/20*100.0-> 0*100.0 -> 0.0 20/20*100.0-> 1*100.0 -> 100.0
ただし
100.0*1/20 -> 100.0/20 -> 5.0 100.0*2/20 -> 200.0/20 -> 10.0 100.0*3/20 -> 300.0/20 -> 15.0 ... 100.0*19/20-> 1900.0/20-> 95.0 100.0*20/20-> 2000.0/20-> 100.0
浮動小数点値 100.0 を使用すると、結果は暗黙的に浮動小数点に変換されます。浮動小数点値と整数を掛けた場合は浮動小数点値が返され、浮動小数点値を整数で割った場合も浮動小数値が返されるためです。