« C4D Python R12 テスト:任意のポイントやポリゴンの隣接ポリゴンを取得するc4d.utils.Neighborを試してみた。 | トップページ | C4D Python R12 テスト:PolygonObjectのCreatePhongNormals()メソッドを試してみた。 »

C4D Python R12 テスト:Neighbor.GetPolyInfo()を使ってポリゴンのabに隣接するポリゴンを連続して選択してみる。

少し学習したので、試しに作ってみた。

仕組みは単純。

Neighbor_14

Python
import c4d
from c4d import documents, utils

def main():
    if not isinstance(op, c4d.PolygonObject): #選択オブジェクトがポリゴンオブジェクト以外は終了
        return
    if doc.GetMode() != c4d.Mpolygons: #ポリゴンモード以外は終了
        return
    poly_sel = op.GetPolygonS()
    if poly_sel.GetCount() != 1: #選択ポリゴン数が1枚以外は終了
        return

    #選択ポリゴンの取得
    for poly_num in xrange(op.GetPolygonCount()):
        if poly_sel.IsSelected(poly_num):
            break

    #Neigtborの割り当てと初期化
    nibr = utils.Neighbor()
    nibr.Init(op)

    #ポリゴンの辺abに隣接するポリゴンを選択し続ける
    #選択済みポリゴンかオブジェクトの端まで到達したら選択終了
    while True:
        poly_num = nibr.GetPolyInfo(poly_num)['face'][0]
        if poly_sel.IsSelected(poly_num) or poly_num == -1:
            break
        poly_sel.Select(poly_num)
    print 'ok'


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

Neighbor_10

こんな具合です。

ま、C4Dには「リング選択」/「ループ選択」が既にあるので…

Neighbor_13

Neighbor_12

この程度のスクリプトだと必要ないね。

|

« C4D Python R12 テスト:任意のポイントやポリゴンの隣接ポリゴンを取得するc4d.utils.Neighborを試してみた。 | トップページ | C4D Python R12 テスト:PolygonObjectのCreatePhongNormals()メソッドを試してみた。 »

コメント

Hi,

Please accept my apologies as I will write in english.
Excellent tutorial.
Your approach on discovering python application to cinema 4D is amazing.

Thank you.

投稿: Focus3D | 2011年5月18日 (水) 18時24分

コメントを書く



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




« C4D Python R12 テスト:任意のポイントやポリゴンの隣接ポリゴンを取得するc4d.utils.Neighborを試してみた。 | トップページ | C4D Python R12 テスト:PolygonObjectのCreatePhongNormals()メソッドを試してみた。 »