スティッキー コンテキスト

coordsysanimatetime などのコンテキストの設定は、「スティッキー」にすることができます。

スティッキーにすると、どのようなコードの実行が続いても、式に対するコンテキスト プレフィックスを使って変更または上書きするまで、アクティブのままになります。

これは、リスナーでの作業に便利です。それぞれに適切なコンテキスト構文を使って、プレフィックスを付けることなくコンテキストを設定したら、そのままいくつかのインタラクティブ処理をそのコンテキスト内で実行できるからです。

スティッキー コンテキストを設定するには、set 構文を使います。

set <context>     

ここで、<context> には、animatetimeincoordsysaboutlevel、または 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 構文は、animateincoordsys、および level です。

set undo on 構文を使用して、スクリプト化された変更のやり直しを[リスナー] (Listener)で有効にすると、やり直しの各操作はトップレベルの式に配置されます。

式や選択した式のシーケンスを、ENTER または Number-Pad ENTER を押して評価するたびに、1 つのエントリがやり直しスタックに追加されます。