3DCGbook

映像プロダクションに所属しています。主に毎日のアウトプットを配信していこうと思います。

【Python】クラスを使ったPyMel風なコネクション

こんな感じ?

import maya.cmds as cmds

class Node(object):
    
    def __init__(self,node):
        self.node = node
    
    def __getattr__(self,attrname):
        return Node('%s.%s' %(self.node,attrname))
    
    def __repr__(self):
        return 'Node("%s")' %(self.node)
        
    def __rshift__(self,new_element):
        return cmds.connectAttr(self.node,new_element.node)

# インスタンスを作成
p1 = Node('pCube1')
p2 = Node('pCube2')

# connection
p1.tx >> p2.tx
p1.ty >> p2.ty
p1.tz >> p2.tz

Pythonクラスの特殊メソッドってそこまでしっかり使ったことないんですよね。

Pythonは根元をしっかり勉強してないので、
これを機にPythonマスターを目指していきたいところです。(笑)

# 参考
データモデル — Python 2.7ja1 documentation
9.9. operator — 関数形式の標準演算子 — Python 2.7ja1 documentation



初めてのPython 第3版
初めてのPython 第3版
posted with amazlet at 15.11.18
Mark Lutz
オライリージャパン
売り上げランキング: 41,257