DigitalDNA

Max!

Max Script基本文法

| 総合トップ | ABOUT | Amazon  |

Max Script 基本文法:グループ・繰り返しの処理

掲載日:2020/7/18 

ループ

ヘルプ
[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
	)
)


maxScript の記事一覧



基本情報
変数
演算子
文字列
配列
ループ
条件分岐・エラー回避処理
関数(Function)