« 最近、ブログの更新をしていなかったのは… | トップページ | C4D 全てのライトオブジェクトの明るさを0.0にすると…レンダリング設定の自動照明 »

C4D スクリプトマネージャのメニューの状態。

スクリプトマネージャのメニューの状態を熟知している人は、読み飛ばしてください。

ユーザスクリプトをレイアウトやメニューに表示したときのメニューの状態を可視状態にするには、

ENABLE = TRUE;

これで、どんな時も可視状態になるわけです。
ユーザスクリプトを新規で作成した時のプリセットの状態もこの様になっています。

不可視状態にするには、

ENABLE = FALSE;

ですね。

では、ある条件を設定して、条件を満たした時に可視状態。それ以外は不可視状態の場合は、

if(条件式)
  ENABLE = TRUE;
else
  ENABLE = FALSE;

と、するだろう。

具体的に、選択されたオブジェクトがスプラインオブジェクトなら可視状態。そうでなければ、不可視状態ならば、

if(instanceof(op , SplineObject))
  ENABLE = TRUE;
else
  ENABLE = FALSE;

と、することだろう。

で、ユーザスクリプトを新規で作成したとき、プリセットの状態でENABLE=TRUEが入力されています。

初めて使う人でも、ある程度知識のある人ならば、ENABLEの値を(TRUE/FALSE)の切り替えで表示の状態を変えられる事を予測できる事でしょう。

このENABLEは、なんなんだろうか?自分にもはっきり何なのか分かりません。
docやopと同じ変数なのだろうか?

このENABLEをメインのスクリプトで使うと?
通常、使うことは無いのですが…

/*
メニューの状態のENABLEをメインスクリプトに使用すると…
2009.7.11
*/


main(doc , op)
{
  println(ENABLE);
}

実行すると、エラーが出ました。

[FAIL] Script 'xxxx' Line 8 Pos 18 : Variable or function expected

これは、メニューの状態にだけ許された物、だと言う事が分かりました。

ところで、メニューの状態はプリセットでENABLE = TRUE; が入力されていますが、初期値は、何だろうか…

ENABLEにTRUEが代入される前の値をコンソールに表示してみます。

//メニューの状態
println
(ENABLE);
ENABLE = TRUE;

結果は…

1

ENABLEのプリセット値が1なら、一々ENABLE=TRUE;は必要ないような…

もしや、これは…マニュアルに具体的に記載しなくても、これ一つでメニューの状態を説明しているのか…
「Scriptを使うような人は、見れば分かる。」的な…

こんな事は、どうでも良い事で…
とりあえず、プリセット値はTRUEだと言うことだ。

ここで、ある事が起きている事に気づきました。

さて、自分のC4D R9.5に不具合が起きているのか?
それとも全てのC4D R9.5の不具合なのか分かりませんが、次のメニューの状態のコードが、正常に動作しません。
自分が使っているR11 Demoでも不具合が起きています。

ENABLE=TRUE;
println("プリントされず");

正常にメニューの状態が実行されると、コンソールには、「プリントされず」が表示されますが…
自分の所有しているC4Dは、全く表示されません。

でも、ある事をすると表示されます。
これは、バグなのか…?

変数と演算子の間にスペースを入れる。自分が通常打ち込んでるスタイル。

ENABLE = TRUE;
println("プリントされず");

詰めていても、1行コメントを入れるか改行、もしくは何かを入れる。

//
ENABLE=TRUE;
println("プリントされず");

詰めていて改行もなくてもENABLEにFALSEを代入したとき。

ENABLE=FALSE;
println("プリントされず");

こうなると、自分にはバグとしか思えないのだが…

ま、自分は通常、変数と演算子の間に無駄にスペースを打ち込んでいるので関係ないのですが…

さて、メニューの状態には、可視状態、不可視状態の他にチェック状態がある事に気づいていると思います。

編集モードである、オブジェクトモードやポイントモード/ポリゴンモード等。
ライブ選択や、移動/スケール/回転ツール等もそうですね。

これらは、選択すると強調されます。

R9.5の場合はアイコンが凹みます。
Nemu_01

R10/R11はハイライトになります。
Nemu_02

さて、ユーザスクリプトでメニューが選択されている状態にするには…

CHECK = TRUE;

勿論、これも(TRUE/FALSE)の切り替えです。

適当なところに、アイコンを配置して確認します。

Nemu_03

では、メニューの状態を次のように変更します。

ENABLE = TRUE;
CHECK = TRUE;

変更後のアイコンは…

Nemu_04

ハイライト表示に変わります。

|

« 最近、ブログの更新をしていなかったのは… | トップページ | C4D 全てのライトオブジェクトの明るさを0.0にすると…レンダリング設定の自動照明 »