2019.08.12 - 2019.10.12
Max Script 基本文法:ループ・繰り返しの処理
目次
・
トップ
・
「MaxScriptヘルプ」の見かた
・
コメントの記述
・
デバッグ用に変数の値などを表示したい
■MaxScript 基本文法
|
変数 |
演算子 |
文字列 |
配列 |
ループ |
条件分岐・エラー回避処理 |
関数(Function) |
ループ
ヘルプ
[HELP] MAXScript 言語リファレンス > プログラム フロー制御 > For ループ
[HELP] MAXScript に関する質問と回答 > 高速で優れたスクリプトの作成 > 処理速度を上げる方法 > for ... collect と for ... do のパフォーマンスの比較
基本
ループ処理で使われる主な構文は下記の通り。
for … to … do
for … to … by … do
for … in … do
while … do
do … while
exit
for … to … do
解説とメモ
to で指定した条件を満たすあいだ処理を実行します。
自動的に1ずつ加算しながらループします。(※for … to … by … do のbyを省略した書き方です)
基本的な書式
for [初期値] to [ループ終了となる条件式] do (
[処理内容]
)
Max Scriptのサンプル
$Box001から$Box005まで選択する処理の例。
(
clearSelection()
local objlist = #($Box001,$Box002,$Box003,$Box004,$Box005,$Box006)
for i=1 to i=5 do
(
selectMore objlist[i]
)
)
for … to … by … do
解説とメモ
増分を指定できるループ処理です。
by 2 と書くとループしながら自動的に2ずつ加算されます。
by を指定しなかった場合、自動的に1ずつ加算されます。
基本的な書式
for [初期値] to [ループ終了となる条件式] by [ループするごとに加算する値] do (
[処理内容]
)
Max Scriptのサンプル
1つおきに選択($Box001,$Box003,$Box005を選択)する処理の例。
(
clearSelection()
local objlist = #($Box001,$Box002,$Box003,$Box004,$Box005,$Box006)
for i=1 to i=6 by 2 do
(
selectMore objlist[i]
)
)
for … in … do
解説とメモ
配列に含まれているすべてに対して処理を行います。
基本的な書式
for [配列から取り出した値を格納する変数] in [配列名] do (
[処理内容]
)
Max Scriptのサンプル
$Box001から$Box006まですべて選択する。
(
clearSelection()
local objlist = #($Box001,$Box002,$Box003,$Box004,$Box005,$Box006)
for obj in objlist do
(
selectMore obj
)
)
while … do
ヘルプ
[HELP]MAXScript 言語リファレンス > プログラム フロー制御 > While ループと Do ループ
解説とメモ
while で指定した条件を満たすあいだ処理を行います。
基本的な書式
while [条件式] do (
[処理内容]
)
Max Scriptのサンプル
$Box006から$Box001まで選択するスクリプト。
(
clearSelection()
local objlist = #($Box001,$Box002,$Box003,$Box004,$Box005,$Box006)
i = 6
while i > 1 do
(
selectMore objlist
i = i - 1
)
)
do … while
ヘルプ
[HELP]MAXScript 言語リファレンス > プログラム フロー制御 > While ループと Do ループ
解説とメモ
whileで指定した条件を満たすあいだ処理を行います。条件判定が最後にあるため、必ず1回は処理が行われます。
基本的な書式
do (
[処理内容]
)
while [条件式]
Max Scriptのサンプル
$Box006から$Box001まで選択するスクリプト。
(
clearSelection()
local objlist = #($Box001,$Box002,$Box003,$Box004,$Box005,$Box006)
i = 6
do (
selectMore objlist
i = i - 1
) while i > 1
)
exit
ヘルプ
[HELP]MAXScript 言語リファレンス > プログラム フロー制御 > ループ終了
[HELP] MAXScript に関する質問と回答 > 処理速度を上げる方法 > return、break、exit、continue を使用しない
解説とメモ
exit でループを抜けることができます。
ただし、処理速度を上げるにはexitは使用しないほうが良いそうです。
Max Scriptのサンプル
whileでBox005まで選択するよう条件を指定しているが、実際には$Box003以降は強制的にループを抜ける例。
(
clearSelection()
local objlist = #($Box001,$Box002,$Box003,$Box004,$Box005,$Box006)
i = 1
while i<=5 do
(
selectMore objlist[i]
i=i+1
if i>3 then exit
)
)