class cymel.core.typeregistry.NodeTypes¶
- class cymel.core.typeregistry.NodeTypes(*args, **kwargs)¶
ベースクラス:
object
ノードタイプのラッパークラスのマネージャー。
唯一のインスタンスである
nodetypes
が生成済み。全てのノードクラスはこの属性としてアクセスできる。
cymel では、プラグインも含む全てのノードタイプの ラッパークラスが提供されるが、機能実装のために あらかじめ用意されている主要なノードタイプ以外は、 最初にアクセスしたときなどの必要なときに自動生成される。
システムが提供する標準的なクラス名は、 ノードタイプ名の先頭を大文字にした名前となる。
既存のノードクラスを継承してカスタムクラスを作ることもできる。 カスタムクラスはノードタイプのみから純粋に決まるものでも、 その他の任意の条件によって決まるものでも良い。
カスタムクラスは、 システムに登録するなどせずにそのまま利用可能だが、
registerNodeClass
によって登録することもできる。 インスタンスを得る場合、 そのクラスを直接指定すればインスタンスを得られるが、 クラスが登録してあればCyObject
からインスタンスを得ることで 自動的にクラスを決定させることができる。Methods:
basicNodeClass
(nodetype[, nodename])ノードタイプ名のみを条件として決まるベーシッククラスを得る。
deregisterNodeClass
(cls[, warn])ノードクラスとそのサブクラスの登録を削除する。
parentBasicNodeClass
(nodetype[, nodename])指定ノードタイプの親タイプ名のみを条件として決まるベーシッククラスを得る。
registerNodeClass
(cls, nodetype)ノードクラスを登録する。
relatedNodeTypes
(cls)クラスに結び付けられているノードタイプのタプルを得る。
Methods Details:
- basicNodeClass(nodetype, nodename=None)¶
ノードタイプ名のみを条件として決まるベーシッククラスを得る。
- deregisterNodeClass(cls, warn=False)¶
ノードクラスとそのサブクラスの登録を削除する。
- parentBasicNodeClass(nodetype, nodename=None)¶
指定ノードタイプの親タイプ名のみを条件として決まるベーシッククラスを得る。
- registerNodeClass(cls, nodetype)¶
ノードクラスを登録する。
ノードクラスは、適合検査のためのスタティックメソッド
_verifyNode
を持つ 検査メソッド付きクラス と、 それを持たない ベーシッククラス に分けられる。適合検査のためのスタティックメソッドの仕様は以下の通り。
_verifyNode(mfn, name)
引数に、 Python API 2 の MFnDependencyNode 派生クラスのインスタンス(例えば dagNode なら MFnDagNode など)と、 ノードのパーシャルパスなどのユニーク名が渡され、 適合の可否を表すブール値を返すものとする。
_verifyNode
を実装した場合、さらにNode.createNode
もオーバーライドして、 ノード生成時に条件を満たすようにすることを推奨する。ベーシッククラスは、ノードタイプへの紐付けが厳格で、 抽象タイプも含む全てのノードタイプごとに1つずつ存在するか 自動生成される。 カスタムクラスをベーシッククラスとして登録する場合も、 ノードタイプと矛盾しない親クラスを継承しなければならない。 クラス実装で、継承すべき親クラスを取得するには
parentBasicNodeClass
が便利である。 1つのノードタイプへの競合する登録は上書き登録となり、 警告が出力された上で古いクラスの登録はサブクラスも含めて 全て抹消される(システムが先んじて行った自動登録を上書き してもさして害は無い)。一方、適合検査メソッド付きクラスは、 ノードタイプへの紐付けが厳格でなくても問題ない。 クラスの継承と登録するノードタイプに矛盾さえ無ければ、 抽象タイプも含むどのノードタイプに登録するのも自由である。 複数の検査メソッド付きクラスが、1つのノードタイプに競合して 登録されることは問題なく、 また、同じクラスを複数のノードタイプに登録しても構わない。 登録時は、ノードタイプごとに管理されているリストの最初に挿入 されるため、後から登録したものほど優先される。