ジャンプ先: 概要. 戻り値. キーワード. 関連. フラグ. Python 例.
referenceEdit([applyFailedEdits=boolean], [changeEditTarget=[string, string]], [editCommand=string], [failedEdits=boolean], [onReferenceNode=string], [removeEdits=boolean], [successfulEdits=boolean])
注: オブジェクトの名前と引数を表す文字列は、カンマで区切る必要があります。これはシノプシスに示されていません。
referenceEdit は、取り消し不可能、照会不可能、および編集不可能です。
このコマンドを使用して、リファレンスに適用された修正を除去や編集できます。有効な commandTarget は、リファレンス ノード、リファレンス ファイル、リファレンス内のノード、リファレンスのプラグです。変更や除去できるのは、現在開いているシーンでの修正のみです。'referenceQuery -topReference' コマンドを使用して、特定の commandTarget への修正を調べることができます。適用されていない編集のみが影響を受けます。対象のノードがアンロードされた場合、または正常に適用できなかった場合に、編集は適用されません。既定では、このコマンドは失敗した編集のみに動作します(「-failedEdits」と「-successfulEdits」フラグを使用して調整できます)。リファレンス ノードをコマンド ターゲットとして指定することは、ターゲット リファレンス ファイルにあるすべてのノードをターゲットとして指定することと同じです。このケースでは、ターゲット リファレンスをロードまたはアンロードしたかによって、結果が異なる場合があります。アンロードした場合、ターゲット リファレンスのノードと子孫リファレンスにあるノードの両方に影響する編集が実行されない場合があります(例えば、これらの編集内容が削除されないことがある)。これは、リファレンスをアンロードすると、そのリファレンスに属するノードなどの詳細情報が Maya によって維持されないためです。ただし、ターゲット リファレンスにあるノード、または先祖リファレンスのいずれかにあるノードのどちらかのみに影響する編集は正常に削除されます。フラグ -removeEdits および -editCommand を併用すると、既定では、指定されたソース オブジェクト内のすべての connectAttr の編集が削除されます。特定のターゲット オブジェクトに接続されている編集のみを削除するには、ターゲット オブジェクトを追加引数としてコマンドに渡します。こうすると一致基準が絞り込まれるため、ソース オブジェクトをこの追加引数で指定されたターゲットに接続する編集のみが削除されます。以下の例を参照してください。注: プラグを指定する場合は、必ずアトリビュートの適切なロング ネームを使用します。
なし
reference, attribute, node
file, referenceQuery
applyFailedEdits, changeEditTarget, editCommand, failedEdits, onReferenceNode, removeEdits, successfulEdits
ロング ネーム(ショート ネーム) |
引数タイプ |
プロパティ |
applyFailedEdits(afe)
|
boolean
|
|
|
適用されていないすべての編集の適用を試みます。このフラグは、以前に失敗した編集を -changeEditTarget フラグで修正した場合に便利です。このフラグは、ロードされたリファレンスのみに使用できます。コマンドのターゲットがリファレンス ノードの場合、代わりにコネクトされたリファレンスを使用します。
|
|
changeEditTarget(cet)
|
[string, string]
|
|
|
このフラグを使用して、指定した編集のターゲットを変更します。このフラグは 2 つのパラメータを使用します。変更前のターゲットと、変更後のターゲットです。ターゲットはノード名(node)、ノードとアトリビュート名(node.attr)、アトリビュート名(.attr)のいずれかです。編集が古いターゲットに影響する状態の場合、新ターゲットに影響するように変更されます。フラグ 'referenceQuery' を使用して、編集ターゲットのフォーマットを判別する必要があります。たとえば多くの場合、編集はアトリビュートのロング ネーム(「translateX」など)を格納するので、古いターゲットを指定するときはロング ネームを使用する必要があります。ショート ネーム(「tx」)を指定すると、編集のリターゲットは成功しません。
|
|
failedEdits(fld)
|
boolean
|
|
|
失敗した編集(照会、除去など)を実行するべきかどうかを示す二次フラグです。失敗した編集とは、リファレンスを前回ロードしたときに、正常に適用されなかった編集を指します。編集はさまざまな理由で失敗することがあります(適用するリファレンス ノードがリファレンス ファイルから除去された、など)。既定では、失敗した編集を実行します。
|
|
removeEdits(r)
|
boolean
|
|
|
アンロードした指定 commandTarget に影響する編集を除去します。
|
|
successfulEdits(scs)
|
boolean
|
|
|
成功した編集(照会、除去など)を実行すべきかどうかを示す二次フラグです。成功した編集とは、リファレンスを前回ロードしたときに、正常に適用された編集を指します。このフラグは、commandTarget をロードした場合は、影響を及ぼしません。既定では、成功した編集を実行しません。
|
|
editCommand(ec)
|
string
|
|
|
コマンドが考慮するべくリファレンスの編集のタイプを示すための二次フラグです。このフラグが指定されない場合、すべてのタイプの編集が含まれます。このフラグには文字列パラメータが必要です。有効な値は、「addAttr」、「connectAttr」、「deleteAttr」、「disconnectAttr」、「parent」、「setAttr」、「lock」、および「unlock」です。状況によっては、このフラグを複数回指定して、複数の編集タイプを考慮するように指定できます。
|
|
onReferenceNode(orn)
|
string
|
|
|
指定したリファレンス ノードに格納された編集のみを考慮することを示すための二次フラグです。このフラグは、「exportEdits」コマンドによる指定時のみ複数使用が可能です。
|
|
フラグはコマンドの作成モードで表示できます
|
フラグはコマンドの編集モードで表示できます
|
フラグはコマンドの照会モードで表示できます
|
フラグに複数の引数を指定し、タプルまたはリストとして渡すことができます。
|
import maya.cmds as cmds
#
# EXAMPLE FOR -removeEdits
#
# Assume:
# main.ma contains a reference to mid.ma.
# mid.ma contains a reference to bot.ma.
# NOTE: The target reference must be unloaded for the
# following commands to work.
# Remove all the edits which apply to mid.ma.
# This can be done by specifying either the reference
# node or the reference file.
cmds.referenceEdit( 'midRN', removeEdits=True )
cmds.referenceEdit( 'mid.ma', removeEdits=True )
# Remove all "setAttr" edits which apply to mid.ma.
# This can be done by specifying either the reference
# node or the reference file.
cmds.referenceEdit( 'midRN', editCommand='setAttr', removeEdits=True )
cmds.referenceEdit( 'mid.ma', editCommand='setAttr', removeEdits=True )
# Remove all the "parent" edits which apply to mid:pSphere1.
cmds.referenceEdit( 'mid:pSphere1', editCommand='parent', removeEdits=True )
# Remove all the "connectAttr" edits which apply to mid:pSphere1.translateX.
cmds.referenceEdit( 'mid:pSphere1.translateX', editCommand='connectAttr', removeEdits=True )
#Remove the "connectAttr" edit having mid:pSphere1.translateX as a source and mid:pSphere2.translateX as a destination.
cmds.referenceEdit( ["|mid:pSphere1.translateX", "|mid:pSphere2.translateX"], failedEdits = True, successfulEdits = True, editCommand = 'connectAttr', removeEdits = True )
# Remove all the edits which apply to bot.ma and are stored on midRN.
# The referenceEdit command is only capable of removing edits which
# are stored on a top level reference node. The only edits which
# are stored on a top level reference node are those which were made
# from the main scene. If the file mid.ma was previously opened and
# modifications were made to bot.ma, those edits can only be removed
# by opening mid.ma and issuing a referenceEdit command.
#
cmds.referenceEdit( 'mid:botRN', removeEdits=True )
cmds.referenceEdit( 'bot.ma', removeEdits=True )
#
# EXAMPLE FOR -changeEditTarget
#
tempDir = cmds.internalVar(utd=True)
# Create a reference containing pSphere1.
#
cmds.file( f=True, new=True )
cmds.polySphere( ch=1, r=1, sx=20, sy=20, ax=(0, 1, 0) )
newFileName = '%sref.ma' % tempDir
cmds.file( rename=newFileName )
cmds.file( f=True, s=True, type='mayaAscii')
# Reference the file in and position pSphere1
#
cmds.file( f=True, new=True )
cmds.file( newFileName, r=True, ns='ref' )
cmds.select( 'ref:pSphere1', r=True )
cmds.move( 5, 5, 5 )
topFileName = '%stop.ma' % tempDir
cmds.file( rename=topFileName )
cmds.file( f=True, s=True, type='mayaAscii')
# Later on its determined that pSphere1 is actually
# BobMrozowski.
#
cmds.file( newFileName, f=True, o=True )
cmds.rename( 'pSphere1', 'BobMrozowski' )
cmds.file( f=True, s=True, type='mayaAscii')
# Now go to open your main scene again...
#
cmds.file( topFileName, f=True, o=True )
# ... and notice that BobMrozowski is back at
# the origin.
#
# So remap all edits so that anything that used to
# affect ref:pSphere1 now affects ref:BobMrozowski...
#
cmds.referenceEdit( 'refRN', changeEditTarget=('ref:pSphere1','ref:BobMrozowski') )
# ... and then force all previously failing edits affecting
# refRN to be re-applied.
#
cmds.referenceEdit( 'refRN', applyFailedEdits=True )
# BobMrozowski should now be back at 5 5 5.
#