ジャンプ先: 概要. 戻り値. キーワード. 関連. フラグ. Python 例.
hasMetadata([asList=boolean], [channelName=string], [channelType=string], [endIndex=string], [ignoreDefault=boolean], [index=string], [indexType=string], [memberName=string], [scene=boolean], [startIndex=string], [streamName=string])
注: オブジェクトの名前と引数を表す文字列は、カンマで区切る必要があります。これはシノプシスに示されていません。
hasMetadata は、取り消し不可能、照会不可能、および編集不可能です。
このコマンドを使用して、ノード、コンポーネント、またはシーンにメタデータ要素が存在するかどうかを照会します。このコマンドは、ノードまたはシーンに存在するすべてのメタデータから、特定のメタデータ ストリーム インデックスに設定されているメタデータ値に至るまで、メタデータが存在するあらゆるレベルで機能します。フィルタ フラグ
- channelName: 特定の 1 つのチャネル タイプのメタデータのみを検索します。
- streamName: 1 つの特定の名前が付けられたストリームのメタデータのみを検索します。channelName と一緒に使用する場合、名前が一致してもチャネル タイプが異なるストリームは無視されます。
- index: ストリームの 1 つまたは複数の特定のインデックス値のメタデータのみを検索します。streamName フラグを使用する必要があります。streamName によって推測されるため、indexType フラグは必要ありません。
- startIndex/endIndex: index と同じですが、1 つのインデックス値ではなく、インデックス値の範囲全体を使用します。
- indexType: 特定のインデックス タイプを使用するメタデータのみを検索します。同様に、その他のフィルタ フラグによって範囲を絞り込むことができます。
- ignoreDefault: 既定値(例: 数字の場合は 0、文字列の場合は "")をそのまま持っているすべてのメタデータを、存在しないメタデータと同様に扱います。つまり、既定値のメタデータはすべてレポートされません。これは、変更した値をすばやく検索するのに役立ちます。このフラグを設定すると、memberName フィルタを使用して、メタデータ ストラクチャの特定のメンバーにチェックを絞り込むこともできます。このフィルタを適用しない場合、ストラクチャのすべてのメンバーに既定以外の値があるメタデータのみがスキップされます。
- memberName: ストラクチャのメタデータで特定の 1 つのメンバーのみを検索します。既定以外の値が存在するかどうかの確認が特定のメンバーではなくストラクチャ全体に基づく場合にのみ使用されます。
操作フラグ
- normal mode: メタデータが含まれる指定されたすべての場所について true を返します。これは、次に示すフィルタ フラグと組み合わせます。
- no flag: ノードまたはシーンにメタデータが 1 つでもある場合は true
- channelName: 指定された名前を持つチャネルにメタデータが 1 つでも存在する場合は true
- streamName: 指定された名前を持つストリームにメタデータが 1 つでも存在する場合は true
- index/startIndex/endIndex: インデックス値の自然な順序と同じ順序に並べられたブーリアンの配列(つまり、インデックス 3、2、4 の順序で指定すると、インデックス 2、3、4 の順序でブーリアンが返されます)。true は、そのインデックスで割り当てられたメタデータがあることを意味します。この変化により、メタデータがあるインデックスを正確に伝えやすくなるため、この形式は asList 修正により適しています。
- asList: このフラグを追加すると、1 つのブーリアンまたはブーリアンの配列からの戻り値が、値を持つメタデータ要素を正確に示す文字列の配列に切り替えられます。コマンドの戻り値は次のように変更します。
- no flag: メタデータがあるチャネル名のリスト
- channelName: メタデータがあるチャネルのストリーム名のリスト
- streamName: メタデータがあるストリームのインデックス値のリスト
- index/startIndex/endIndex: 指定されたインデックス値のセットに限定された、メタデータがあるインデックス値のリスト。
string[] | メタデータが含まれているフィルタされたリストのインデックスのリスト |
boolean[] | 指定された項目にメタデータがあるかどうかの答えのリスト |
metadata, component, stream, channel, association
addMetadata, applyMetadata, dataStructure, editMetadata, getMetadata
asList, channelName, channelType, endIndex, ignoreDefault, index, indexType, memberName, scene, startIndex, streamName
フラグはコマンドの作成モードで表示できます
|
フラグはコマンドの編集モードで表示できます
|
フラグはコマンドの照会モードで表示できます
|
フラグに複数の引数を指定し、タプルまたはリストとして渡すことができます。
|
import maya.cmds as cmds
import maya.cmds as cmds
cmds.polyPlane( name='smcPlane', constructionHistory=False )
# Result: smcPlane #
# Create structures
cmds.dataStructure( format='raw', asString='name=idStructure:int32=ID' )
# Result: idStructure #
cmds.dataStructure( format='raw', asString='name=keyValueStructure:string=value' )
# Result: keyValueStructure #
# Apply structures to plane
cmds.select( 'smcPlaneShape', replace=True )
cmds.addMetadata( structure='idStructure', streamName='idStream', channelName='vertex' )
cmds.addMetadata( structure='keyValueStructure', streamName='keyValueStream', channelName='key', indexType='string' )
# Apply the metadata values to three of the components by selection
cmds.select( 'smcPlaneShape.vtx[8:10]', replace=True )
cmds.editMetadata( streamName='idStream', memberName='ID', value=7 )
# Result: 3 #
# Verify existence of the three newly set metadata values at the node level
cmds.select( 'smcPlaneShape', replace=True )
cmds.hasMetadata()
# Result: [True] #
# Verify existence of the three newly set metadata values at the Channel level
cmds.hasMetadata( channelName='vertex' )
# Result: [True] #
cmds.hasMetadata( channelName='edge' )
# Result: [False] #
# Verify existence of the three newly set metadata values at the Stream level
cmds.hasMetadata( channelName='vertex', streamName='idStream' )
# Result: [True] #
cmds.hasMetadata( channelName='edge', streamName='someOtherStream' )
# Result: [False] #
# Verify existence of the three newly set metadata values at the Index level
cmds.hasMetadata( channelName='vertex', streamName='idStream', index=['8','9'] )
# Result: [True, True] #
cmds.hasMetadata( channelName='vertex', streamName='idStream', index=['8','9999'] )
# Result: [True, False] #
# Verify existence of default metadata values at the Index level. Since the
# index range was established to be 0-17 by assignment and the Stream
# defaults to returning default values for unassigned indices the lower index
# values "0" and "1" do have metadata (as default values) but the higher one
# "9999" in the above example does not.
cmds.hasMetadata( channelName='vertex', streamName='idStream', index=['0','1'] )
# Result: [True, True] #
# Verify non-existence of non-default metadata values at the Index level
cmds.hasMetadata( ignoreDefault=True, channelName='edge', streamName='idStream', memberName='ID', index=['0','1'] )
# Result: [False, False] #
# Get the list of Index values with assigned metadata on the object
cmds.select( 'smcPlaneShape.vtx[8:20]', replace=True )
cmds.hasMetadata( channelName='vertex', streamName='idStream', asList=True )
# Result: [u'8', u'9', u'10'] #
# Set metadata values using the complex index type='string'
cmds.editMetadata( streamName='keyValueStream', memberName='value', stringValue='Starry Night', indexType='string', index='Title' )
cmds.editMetadata( streamName='keyValueStream', memberName='value', stringValue='Vincent Van Gogh', indexType='string', index='Artist' )
# Verify existence of the complex index data
cmds.hasMetadata( streamName='keyValueStream', memberName='value', channelName='key', index=['Title','Artist'], indexType='string', asList=True )
# Result: [u'Artist', u'Title'] #