« C4D Python R13 テスト:PythonでXPressoタグを試してみた。#1:ノードの取得 | トップページ | C4D Python R13 テスト:PythonでXPressoタグを試してみた。#3:ポートの連結 »

C4D Python R13 テスト:PythonでXPressoタグを試してみた。#2:ノードのポートを取得

「Python」ノードの記事ではありません…

XPressoタグのノードのポートを取得してみる。
今回は、C.O.F.F.E.E.ノードを使ってみます。

Xpressotag_07

では、このC.O.F.F.E.E.ノードを取得する。

Python
"""
C4D PythonでXPressoタグを試してみる。
ノードのポート
"""

import c4d
from c4d.modules import graphview


def main():
    #アクティブオブジェクトに取り付けられているXPressoタグの取得
    if not op:return
    xpt = op.GetTag(c4d.Texpresso)
    if not xpt:return
   
    #XPressoタグのノードマスターの取得
    mst = xpt.GetNodeMaster()
    if not mst:return
   
    #ノードの取得
    root_node = mst.GetRoot()
    if not root_node:return
   
    node = root_node.GetDown()
    if not node:return
   
    #表示
    print '== node =='
    print node
    print '='*14


if __name__=='__main__':
    main()
== node ==
<c4d.modules.graphview.GvNode object called 'C.O.F.F.E.E.-1/C.O.F.F.E.E.' with ID 1001101 at 0x234D4660>
==============

問題なくノードは取得できている。

では、各ノードの入力ポートと出力ポートの数と…
入力ポートリストと出力ポートリストを取得してみる。

Xpressotag_07

入力が2個、出力が1個ですね。

GvNodeクラスからポート関連を取得するノードは…

  • GetInPortCount() #入力ポート数の取得
  • GetOutPortCount() #出力ポート数の取得
  • GetInPorts() #入力ポートリストの取得
  • GetOutPorts() #出力ポートリストの取得
Python
"""
C4D PythonでXPressoタグを試してみる。
ノードのポート
"""

import c4d
from c4d.modules import graphview


def main():
    #アクティブオブジェクトに取り付けられているXPressoタグの取得
    if not op:return
    xpt = op.GetTag(c4d.Texpresso)
    if not xpt:return
   
    #XPressoタグのノードマスターの取得
    mst = xpt.GetNodeMaster()
    if not mst:return
   
    #ノードの取得
    root_node = mst.GetRoot()
    if not root_node:return
   
    node = root_node.GetDown()
    if not node:return
   
    #表示
    print '== node =='
    print node.GetName(), '-'*5
    print 'InputPortCount :', node.GetInPortCount()#入力ポート数を取得
    print 'OutputPortCount :', node.GetOutPortCount()#出力ポート数の取得
    print 'InPort : ', node.GetInPorts()#入力ポートリストの取得
    print 'OutPort : ', node.GetOutPorts()#出力ポートリストの取得
    print '='*14


if __name__=='__main__':
    main()
== node ==
C.O.F.F.E.E.-1 -----
InputPortCount : 2
OutputPortCount : 1
InPort :  [<c4d.modules.graphview.GvPort object at 0x234D4BC0>, <c4d.modules.graphview.GvPort object at 0x234D4BD0>]
OutPort :  [<c4d.modules.graphview.GvPort object at 0x234D4BC0>]
==============

入出力ポート数は問題ないですね。
ポートリストも問題なさそうです。
ノードのポートは「GvPort」なのですね。

ポートは、IDを指定しても取得ができるんだね…

GvNodeクラスでIDを指定したポートの取得は…

  • GetInPort(id) #idを指定した入力ポートの取得
  • GetOutPort(id) #idを指定した出力ポートの取得

では、ポートをIDを指定して取得してみよう。

ついでにポート名も取得してみよう。

GvPortクラスのポート名の取得は…

  • GetName(node) #ポート名を取得する。
Python
"""
C4D PythonでXPressoタグを試してみる。
ノードのポート
"""

import c4d
from c4d.modules import graphview


def main():
    #アクティブオブジェクトに取り付けられているXPressoタグの取得
    if not op:return
    xpt = op.GetTag(c4d.Texpresso)
    if not xpt:return
   
    #XPressoタグのノードマスターの取得
    mst = xpt.GetNodeMaster()
    if not mst:return
   
    #ノードの取得
    root_node = mst.GetRoot()
    if not root_node:return
   
    node = root_node.GetDown()
    if not node:return
   
    #表示
    print '== node =='
    print node.GetName(), '-'*5
    print 'InputPortCount :', node.GetInPortCount()#入力ポート数を取得
    print 'OutputPortCount :', node.GetOutPortCount()#出力ポート数の取得

    for id in xrange(node.GetInPortCount()):#入力ポートの取得
        port = node.GetInPort(id)
        print 'InPort :', id, "'" + port.GetName(node) + "'"

    for id in xrange(node.GetOutPortCount()):#出力ポートの取得
       port = node.GetOutPort(id)
       print 'OutPort :', id, "'" + port.GetName(node) + "'"

    print '='*14


if __name__=='__main__':
    main()
== node ==
C.O.F.F.E.E.-1 -----
InputPortCount : 2
OutputPortCount : 1
InPort : 0 'Input1'
InPort : 1 'Input2'
OutPort : 0 'Output1'
==============

ポートの取得もできたし…
次回につづく…

|

« C4D Python R13 テスト:PythonでXPressoタグを試してみた。#1:ノードの取得 | トップページ | C4D Python R13 テスト:PythonでXPressoタグを試してみた。#3:ポートの連結 »

コメント

コメントを書く



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




« C4D Python R13 テスト:PythonでXPressoタグを試してみた。#1:ノードの取得 | トップページ | C4D Python R13 テスト:PythonでXPressoタグを試してみた。#3:ポートの連結 »