class cymel.core.typeregistry.NodeTypes

Inheritance diagram of 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)

ノードタイプ名のみを条件として決まるベーシッククラスを得る。

パラメータ:
  • nodetype (str) -- ノードタイプ名。

  • nodename (str) -- 実際のノードを特定する名前。 必須ではないが、指定すると未知のタイプの処理がやや高速。

戻り値の型:

type

deregisterNodeClass(cls, warn=False)

ノードクラスとそのサブクラスの登録を削除する。

パラメータ:
  • cls (type) -- 登録を削除するクラス。

  • warn (bool) -- 削除しながら警告メッセージを出力するかどうか。

parentBasicNodeClass(nodetype, nodename=None)

指定ノードタイプの親タイプ名のみを条件として決まるベーシッククラスを得る。

パラメータ:
  • nodetype (str) -- ノードタイプ名。

  • nodename (str) -- 実際のノードを特定する名前。 必須ではないが、指定すると未知のタイプの処理がやや高速。

戻り値の型:

type ('node' を指定した場合のみ None となる)

registerNodeClass(cls, nodetype)

ノードクラスを登録する。

ノードクラスは、適合検査のためのスタティックメソッド _verifyNode を持つ 検査メソッド付きクラス と、 それを持たない ベーシッククラス に分けられる。

適合検査のためのスタティックメソッドの仕様は以下の通り。

  • _verifyNode(mfn, name)

    引数に、 Python API 2 の MFnDependencyNode 派生クラスのインスタンス(例えば dagNode なら MFnDagNode など)と、 ノードのパーシャルパスなどのユニーク名が渡され、 適合の可否を表すブール値を返すものとする。

_verifyNode を実装した場合、さらに Node.createNode もオーバーライドして、 ノード生成時に条件を満たすようにすることを推奨する。

ベーシッククラスは、ノードタイプへの紐付けが厳格で、 抽象タイプも含む全てのノードタイプごとに1つずつ存在するか 自動生成される。 カスタムクラスをベーシッククラスとして登録する場合も、 ノードタイプと矛盾しない親クラスを継承しなければならない。 クラス実装で、継承すべき親クラスを取得するには parentBasicNodeClass が便利である。 1つのノードタイプへの競合する登録は上書き登録となり、 警告が出力された上で古いクラスの登録はサブクラスも含めて 全て抹消される(システムが先んじて行った自動登録を上書き してもさして害は無い)。

一方、適合検査メソッド付きクラスは、 ノードタイプへの紐付けが厳格でなくても問題ない。 クラスの継承と登録するノードタイプに矛盾さえ無ければ、 抽象タイプも含むどのノードタイプに登録するのも自由である。 複数の検査メソッド付きクラスが、1つのノードタイプに競合して 登録されることは問題なく、 また、同じクラスを複数のノードタイプに登録しても構わない。 登録時は、ノードタイプごとに管理されているリストの最初に挿入 されるため、後から登録したものほど優先される。

パラメータ:
  • cls (type) -- 登録するクラス。

  • nodetype (str) -- 紐付けるノードタイプ名。

relatedNodeTypes(cls)

クラスに結び付けられているノードタイプのタプルを得る。

ベーシッククラスのノードタイプは1つだが、 検査メソッド付きカスタムクラスの場合は 複数タイプへの紐付けも有り得る。

パラメータ:

cls (type) -- クラス。

戻り値の型:

tuple