« C4D Python R12 テスト:オブジェクトにタグを適用しシーンに追加してみる。 | トップページ | C4D モデリングとかしていないから、細かいこと忘れちゃうよ… »

C4D Python R12 テスト:SendModelingCommand()でポリゴンオブジェクトをポリゴン毎に別オブジェクトにする。

メニューから手作業で行うのであれば、

  1. ポリゴンオブジェクトを選択
  2. ポリゴンモードに変更
  3. 「選択/全て選択」でポリゴンを選択
  4. 「ファンクション/分離」でグループを維持:Off
  5. オブジェクトマネージャで「編集/子オブジェクトを選択」
  6. 「構造/軸を中心/軸を中心に」

こんな具合だろう。

Python
"""
ポリゴンオブジェクトをポリゴン毎に別オブジェクトにする。
2011.2.21
"""


import c4d
from c4d import utils
from c4d import documents


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


def main():
    objs = GetSelPolygonObject(doc)

    #分離
    sets = c4d.BaseContainer()
    #グループを維持:Offの為の設定
    sets[c4d.MDATA_DISCONNECT_PRESERVEGROUPS] = False
    utils.SendModelingCommand(c4d.MCOMMAND_DISCONNECT,
                            objs, c4d.MODIFY_POLYGONSELECTION,
                            sets, doc)

    #セグメントを分離
    sets = c4d.BaseContainer()
    utils.SendModelingCommand(c4d.MCOMMAND_EXPLODESEGMENTS,
                            objs, c4d.MODIFY_POLYGONSELECTION,
                            sets, doc)

    c4d.CallCommand(16388) #子オブジェクトを選択
    c4d.CallCommand(1011982) #軸を中心に


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

実行前

Polygondisconnect_01

実行後

Polygondisconnect_02

特別使えるスクリプトではないので、参考までにしてください。

特記する事は無いかな。

CallCommand()を使う場合は、コマンドマネージャよりPythonスクリプトマネージャへドラッグ&ドロップすると良いでしょう。

Polygondisconnect_03

CallCommand(16388);

ドロップ後は、若干修正してください。

|

« C4D Python R12 テスト:オブジェクトにタグを適用しシーンに追加してみる。 | トップページ | C4D モデリングとかしていないから、細かいこと忘れちゃうよ… »

コメント

コメントを書く



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




« C4D Python R12 テスト:オブジェクトにタグを適用しシーンに追加してみる。 | トップページ | C4D モデリングとかしていないから、細かいこと忘れちゃうよ… »