coordsys
、animate
、time
などのコンテキストの設定は、「スティッキー」にすることができます。
スティッキーにすると、どのようなコードの実行が続いても、式に対するコンテキスト プレフィックスを使って変更または上書きするまで、アクティブのままになります。
これは、リスナーでの作業に便利です。それぞれに適切なコンテキスト構文を使って、プレフィックスを付けることなくコンテキストを設定したら、そのままいくつかのインタラクティブ処理をそのコンテキスト内で実行できるからです。
スティッキー コンテキストを設定するには、set
構文を使います。
set <context>
ここで、<context>
には、animate
、time
、in
、coordsys
、about
、level
、または undo
の MAXScript コンテキスト プレフィックスのいずれかを指定します。
例:
b=box() s=sphere() c=cylinder() addModifier c (bend angle:30) set animate on set time 30f move b [80,0,0] scale s [1,1,3] c.bend.angle += 23 --... set animate off set time off
この例では、アニメーションをオンにしてから現在の時間をフレーム 30 に設定しています。任意の数のインタラクティブ処理を実行し、フレーム 30 でアニメーションを生成し、その後、モードが既定値に戻されます。
任意の数のインタラクティブ処理を実行し、フレーム 30 でアニメーションを生成し、その後、モードが既定値に戻されます。
この例でわかるように、MAXScript コンテキストは構文的バリアントを使用して、set 構文の処理をわかりやすくします。
特に、次のような例の場合、
set time <value> | off -- variant of at time <time>
set level <node> -- variant of at level <node>
time コンテキストを off
にして、3ds Max タイム スライダの現在値を使うよう指定できます。
set
構文は、新規コンテキストが設定されたときに有効だったコンテキスト設定を生成する式です。
これを使うと、古いコンテキストを変数に格納しておき、後でそのコンテキストの復元に使ってこれらのコンストラクタの標準ネスト形式を模倣できます。
例:
oc = set coordsys parent -- remember old coordsys rotate $foo (quat 30 z_axis) ... set coordsys oc -- restore it
また、コンテキストを既定の状態に戻すには、#default
をパラメータとして指定することができます。
#default
を指定できる set
構文は、animate
、in
、coordsys
、および level
です。
set undo on
構文を使用して、スクリプト化された変更のやり直しを[リスナー] (Listener)で有効にすると、やり直しの各操作はトップレベルの式に配置されます。
式や選択した式のシーケンスを、ENTER
または Number-Pad ENTER
を押して評価するたびに、1 つのエントリがやり直しスタックに追加されます。