« ツイッターにアカウントを登録してみた。 | トップページ | C4D Python R12 テスト:SendModelingCommand()でアレンジを試してみる。 »

C4D Python R12 テスト:SendModelingCommand()を試してみる。

スクリプトから、C4Dのモデリングツールにパラメータを設定して使う為のものだね。
自前で全部書かなくても、C4Dのツールをうまく利用して、コードシンプルにできる。かもね…

C.O.F.F.E.E.では、以前ブログで書いたような気がする。

Python
"""
SendModelingCommands()で押し出しツールを使ってみた。
2011.2.10
"""


import c4d
from c4d import utils
from c4d import documents


#複数選択オブジェクトの抽出
def GetSelObject(document):
    selObjList = []
    for objs in document.GetSelection():
        if isinstance(objs, c4d.BaseObject):
            selObjList.append(objs)
    return selObjList


#押し出しツールの実行
def main():
    objs = GetSelObject(doc)

    sets = c4d.BaseContainer()
    sets[c4d.MDATA_EXTRUDE_OFFSET] = 50.0

    res = utils.SendModelingCommand(c4d.ID_MODELING_EXTRUDE_TOOL,
                            objs, c4d.MODIFY_POLYGONSELECTION,
                            sets, doc)



if __name__ == '__main__':
    main()
    c4d.EventAdd()

SendModelingCommand()の一つ目の引数は、コマンド…

ID_MODELING_EXTRUDE_TOOL 押し出し
ID_MODELING_BEVEL_TOOL べベル
ID_MODELING_MATRIX_EXTRUDE_TOOL マトリクス押し出し
ID_MODELING_SMOOTH_SHIFT_TOOL スムーズシフト
: :

他にも沢山あるので、ここでは4つだけあげてみました。

2つ目の引数は、処理するオブジェクトのリスト。
オブジェクトを直に渡すのではなく、リストに格納してからのようです。

ここから以降は省略が可能のようだけど…

3つ目が、編集モード。

MODIFY_ALL 全て
MODIFY_EDGESELECTION 選択エッジ
MODIFY_POINTSELECTION 選択ポイント
MODIFY_POLYGONSELECTION 選択ポリゴン

4つ目が、コマンドのパラメータを設定したコンテナ(c4d.BaseContainer)。

5つ目が、現在のシーンファイル(c4d.BaseDocument)。

6つ目が、フラッグ

MODELINGCOMMANDFLAGS_0 無し
MODELINGCOMMANDFLAGS_CREATEUNDO Undoを記録する

まだ、Pythonは学習中なので、間違っていたらごめんなさい。
一応、ブログの「C4D Python R12 テスト」だけコメントに受ける状態にしているので、気が付いた事がありましたら、お気軽にコメントください。
自分も勉強になります。
ツイッターにでも…

|

« ツイッターにアカウントを登録してみた。 | トップページ | C4D Python R12 テスト:SendModelingCommand()でアレンジを試してみる。 »

コメント

コメントを書く



(ウェブ上には掲載しません)




« ツイッターにアカウントを登録してみた。 | トップページ | C4D Python R12 テスト:SendModelingCommand()でアレンジを試してみる。 »