Cinema 4D R12の新機能Python。R11.5からR13にバージョンアップしたので試してみました。

サッシュを作るXpressoを作ったことがあるのですが、さらにサッシュの数をXpressoでコントロールしたいと思ってチャレンジしました。
(実際にはサッシュのインスタンスのEnableオンオフ)

(余談)ある仕事で、いろんなバリエーションのサッシュを作らなければいけなかったときに作ったXpressoをベースにしました。以前一緒に仕事をしてた人のXpressoはあるにはあったのですが、他人の作ったものはわからないので、ほぼゼロから作り直しました。中身が整理されたら公開するかもしれません

Xpressoの中のPython

サッシュの数によってPythonのモジュール内で条件分岐し、Output1から3で、すでに用意した三つのインスタンスそれぞれののenableをon/offしています。

条件分岐の簡単なスクリプトを書こうとしただけなのに、数時間ハマってしまいました。そもそも、AppleScriptとかPHPをちょこっと改造する程度の知識しかないので、「こんなことでハマるなよ」ということがあるかもしれません。
が、スクリプト初心者、未経験者のために、あえて恥を晒しておきましょう。汗

ハマったところ:

・if分の最後に”:”(コロン)をつける。※セミコロンではない。
・Expressoの出力側のポートはglobal宣言する必要がある。※この場合のglobalって何?
・global宣言した変数は print()を使えないっぽい。※プログラムの常識なんでしょうか?
・if文の中身は、Tabでインデントする必要がある。※インデントしないと構文エラー。一行で書けないのね、、。
(・bool値は0と1らしい。 ※AppleScriptなどではtrue/falseだったので、trueって書いてエラーに。)
↑以前買ったpythonの本を見るとtrue/falseになっているようです。うーん。どうなってるのかなあ。実はこのpythonの参考書、アマゾンで評判を頼りに買ったんですが説明ばかりでサンプルコードが書いてなくて全然わかりません。なので、そのうちちゃんと勉強することにします。

さらに以下、メモとして実際のコードを掲載。もっと効率的な書き方があるんでしょうけど、なにしろ、下手に弄ると、途端に動かなくなる&原因がわかりにくいことからベタなままです。
C4DのPythonに関する詳細な情報(できれば日本語)があれば、、(以下略

【数値を設定】→【Python Expressoで条件分岐】→【インスタンスの有効無効を設定】

Pyton Expressoに書いた記述

import c4d
#Welcome to the world of Python

def main():
    global Output1
    global Output2
    global Output3

    if Input1 == 1:
        Output1=0
        Output2=0
        Output3=0
        
    elif Input1 == 2:
        Output1=1
        Output2=0
        Output3=0
   
    elif Input1 == 3:
        Output1=1
        Output2=1
        Output3=0
    
    elif Input1 == 4:
        Output1=1
        Output2=1
        Output3=1