ジャンプ先: 概要. 戻り値. 関連. フラグ. Python 例.

概要

scriptJob([allChildren=boolean], [attributeAdded=[string, script]], [attributeChange=[string, script]], [attributeDeleted=[string, script]], [compressUndo=boolean], [conditionChange=[string, script]], [conditionFalse=[string, script]], [conditionTrue=[string, script]], [connectionChange=[string, script]], [disregardIndex=boolean], [event=[string, script]], [exists=int], [force=boolean], [idleEvent=script], [kill=int], [killAll=boolean], [killWithScene=boolean], [listConditions=boolean], [listEvents=boolean], [listJobs=boolean], [nodeDeleted=[string, script]], [nodeNameChanged=[string, script]], [parent=string], [permanent=boolean], [protected=boolean], [replacePrevious=boolean], [runOnce=boolean], [timeChange=script], [uiDeleted=[string, script]])

注: オブジェクトの名前と引数を表す文字列は、カンマで区切る必要があります。これはシノプシスに示されていません。

scriptJob は、取り消し可能、照会不可能、および 編集不可能 です。

このコマンドは、MEL コマンドまたはスクリプトである「スクリプト ジョブ」を作成します。このジョブは、指定した条件、イベント、またはアトリビュートにアタッチされます。条件が目的の状態に切り替わるたびに(またはトリガが起動されるたびに)、スクリプトが実行されます。

スクリプト ジョブは、インタラクティブなアプリケーションでイベント ループに結び付けられています。このジョブはアイドル イベント中に実行されます。このことは、スクリプト ジョブがバッチ アプリケーションに存在しないことを意味しています。scriptJob コマンドは、バッチ モードでは何も行いません。

このトリガは非常に頻繁に発生するので、スピードを考慮して、再生中にイベントが転送されることはありません。つまり、scriptJob -tc tcCallback; を使用してアニメーションの動作を変更することはできません。代わりに、エクスプレッションか、レンダリング コールバック「preRenderMel」と「postRenderMel」を使用します。

条件のジョブをセット アップするときに、true 状態、false 状態、状態変更のジョブを同時にセットアップすると無効になります。この動作は未定義です。ユーザは、true 状態および/または false 状態のジョブ、あるいは状態変更のジョブのいずれかのみをセットアップできますが、同時に 3 つの状態のジョブをセットアップすることはできません。すなわち、次のように実行する場合、

// アプリケーションの存続期間中に実行されるジョブを設定します。
// このジョブは「kill」コマンドを使用しても削除できません。
scriptJob -e "SelectionChanged" "print \"Annoying Message!\\n\"" -permanent;
// true 状態についてジョブを設定します。
scriptJob -ct "playingBack" playBackCallback;

// false 状態についてジョブを設定します。 scriptJob -cf "playingBack" playBackCallback;

scriptJob -cc "playingBack" playBackCallback; を実行してはなりません。実行すると、未定義の動作が引き起こされます。

このコマンドは、使用可能な条件とイベントをリストする、そして実行中のジョブを中断するときにも使用できます。

戻り値

intジョブの中断に使用できるジョブ番号です。ジョブ番号は 0 以上の整数値です。
string[]list フラグ使用時の文字列リスト
booleanexists フラグの場合

関連

eval, evalDeferred

フラグ

allChildren, attributeAdded, attributeChange, attributeDeleted, compressUndo, conditionChange, conditionFalse, conditionTrue, connectionChange, disregardIndex, event, exists, force, idleEvent, kill, killAll, killWithScene, listConditions, listEvents, listJobs, nodeDeleted, nodeNameChanged, parent, permanent, protected, replacePrevious, runOnce, timeChange, uiDeleted
ロング ネーム(ショート ネーム) 引数タイプ プロパティ
exists(ex) int create
指定した「ジョブ番号」を持つ scriptJob が存在する場合は true を返し、存在しない場合は false を返します。「ジョブ番号」は、新しい scriptJob の作成時に返された値である必要があります。
conditionTrue(ct) [string, script] create
指定した条件が true になったときにスクリプトを実行します。文字列は定義済みまたはユーザ定義のブーリアン条件の名前である必要があります。存在する条件のリストを取得するには、-listConditions フラグを使用します。
conditionFalse(cf) [string, script] create
指定した条件が false になったときにスクリプトを実行します。文字列は定義済みまたはユーザ定義のブーリアン条件の名前である必要があります。存在する条件のリストを取得するには、-listConditions フラグを使用します。
conditionChange(cc) [string, script] create
指定した条件の状態が変わったときにスクリプトを実行します。文字列は定義済みまたはユーザ定義のブーリアン条件の名前である必要があります。存在する条件のリストを取得するには、-listConditions フラグを使用します。
event(e) [string, script] create
指定したイベントが発生したときにスクリプトを実行します。文字列は定義済みの Maya イベントの名前である必要があります。存在するイベントのリストを取得するには、-listEvents フラグを使用します。
attributeChange(ac) [string, script] create
指定したアトリビュートの値が変わったときにスクリプトを実行します。文字列はディペンデンシー ノードと特定のアトリビュートの両方を識別する必要があります。ディペンデンシー ノードが削除された場合、(削除を元に戻すことができても)このジョブは中断されます。
attributeDeleted(ad) [string, script] create
指定したアトリビュートが削除されるときにスクリプトを実行します。文字列はディペンデンシー ノードと特定のアトリビュートの両方を識別する必要があります。ディペンデンシー ノードが削除された場合、(削除を元に戻すことができても)このジョブは中断されます。
attributeAdded(aa) [string, script] create
指定したアトリビュートが追加されるときにスクリプトを実行します。文字列はディペンデンシー ノードと特定のアトリビュートの両方を識別する必要があります。ディペンデンシー ノードが削除された場合、(削除を元に戻すことができても)このジョブは中断されます。
connectionChange(con) [string, script] create
指定したアトリビュートの結合関係が変わったときにスクリプトを実行します。文字列はディペンデンシー ノードと特定のアトリビュートの両方を識別する必要があります。ディペンデンシー ノードが削除された場合、(削除を元に戻すことができても)このジョブは中断されます。
permanent(per) boolean create
ジョブを中断できないようにします。永続ジョブは、アプリケーションの存続期間中、またはジョブの親オブジェクトの存続期間中、存在します。-killWithScene フラグは、永続ジョブには適用されません。
protected(pro) boolean create
ジョブを中断されにくくします。保護されたジョブは、-force フラグを使用して意図的に中断または置き換えを行う必要があります。-killWithScene フラグは、保護されたジョブには適用されません。
idleEvent(ie) script create
Maya がアイドル状態になるたびにスクリプトを実行します。警告: アイドル イベントが登録されているかぎり、アプリケーションはイベントをコールし続け、使用可能な CPU 時間をすべて使い果たします。idleEvents は注意して使用してください。
disregardIndex(dri) boolean create
このフラグは -ac/attributeChange フラグと一緒に使用した場合のみに使用できます。これが指定されており、ジョブがマルチ(インデックス付き)アトリビュートにアタッチされている場合、マルチ アトリビュートのいかなるアトリビュートが変更されてもジョブが実行されます。
allChildren(alc) boolean create
このフラグは -ac/attributeChange フラグと一緒に使用した場合のみに使用できます。これが指定されており、ジョブが複合アトリビュートにアタッチされている場合、 指定したアトリビュートとその子に変更が加えられるとジョブが実行されます。
timeChange(tc) script create
現在のタイムが変更されたときにスクリプトを実行します。タイム スライダのクリックによって時間が変更された場合、スクリプトは実行されません。これに対して、「timeChanged」条件によってトリガされたスクリプトは実行されます。
uiDeleted(uid) [string, script] create
指定した UI のピースが削除されたときにスクリプトを実行します。
nodeNameChanged(nnc) [string, script] create
指定されたノードの名前が変更されたときにスクリプトを実行します。
nodeDeleted(nd) [string, script] create
指定したノードが削除されるときにスクリプトを実行します。
parent(p) string create
このジョブを Maya UI のピースにアタッチします。UI が破壊されると、このジョブも一緒に中断されます。
replacePrevious(rp) boolean create
このフラグは、必ず -parent フラグと一緒に使用します。新しい scriptJob が作成される前に、同じ親を持つ既存の scriptJobs がまず削除されます。
force(f) boolean create
このフラグは、-kill、-killAll、または -replacePrevious と一緒にのみ使用でき、保護されたジョブの削除が可能になります。
killWithScene(kws) boolean create
現在のシーンが空になったときに、ジョブを現在のシーンにアタッチします。現在のシーンは、新しいシーンまたは既存のシーンを開くと空になります。
runOnce(ro) boolean create
これが true に設定されている場合、スクリプトは一度だけ実行されます。false (既定)に設定されている場合、スクリプトは条件/イベントのトリガが発生するたびに実行されます。-uid フラグまたは -nd フラグが使用される場合、runOnce が自動的にオンになります。
compressUndo(cu) boolean create
これを true に設定すると scriptJob を元に戻すことができるようになり、そのアクションは、取り消しのために最後に行ったアクションとセットになります。たとえば、セレクションの変更により scriptJob がトリガされた場合に undo を押すと、scriptJob とセレクションの変更が両方一度に元に戻されます。
listJobs(lj) boolean create
このフラグが指定されている場合、既存のすべてのジョブの説明を含む文字配列とジョブ番号がコマンドから返されます。返されたジョブ番号を使用して、後からジョブを中断することができます。
kill(k) int createmultiuse
指定したジョブ番号を持つジョブを中断します。ただし、永続ジョブを中断することはできません。また、保護されたジョブは、コマンドで -force フラグが使用されている場合にかぎり中断できます。
killAll(ka) boolean create
すべてのジョブを中断します。永続ジョブは削除されません。保護されたジョブは、-force フラグが使用されている場合にかぎり削除されます。
listEvents(le) boolean create
このフラグを指定すると、既存のすべてのイベントの名前を含む文字配列がコマンドから返されます。以下に、既存のすべてのイベントについて説明します。

angularToleranceChanged:
角度単位の許容値が変更されたとき。許容値は次の場合に変更されます。
  1. MEL コマンド「tolerance」に「-angular」フラグを付けて使用する場合
  2. オプション ->GeneralPreferences-> モデリング タブ-> 接線許容値でプリファレンスを変更する場合
angularUnitChanged:
ユーザが角度単位を変更したとき。
axisAtOriginChanged:
原点の軸が変更されたとき。
axisInViewChanged:
特定のビューの軸が変更されたとき。
ColorIndexChanged:
カラー インデックスの値が変更されたとき。
constructionHistoryChanged:
コンストラクション ヒストリをオンまたはオフにしたとき。
currentContainerChanged:
ユーザーが現在のコンテナを設定または設定解除したとき。
currentSoundNodeChanged:
次の理由から、タイム スライダに表示されているサウンドが変更されたとき:
  1. サウンドが除去されている(表示されない)[タイム スライダで右マウス ボタン]
  2. 新しいサウンドが表示されている [タイム スライダで右マウス ボタン]
  3. サウンド表示が切り替えられている [アニメーション オプション]
  4. サウンド表示モードが変更されている [アニメーション オプション]
DagObjectCreated:
新しい DAG オブジェクトが作成されたとき。
deleteAll:
file new が実行されたとき。
DisplayColorChanged:
表示カラーが変更されたとき。
displayLayerChange:
レイヤが作成または破壊されたとき。
displayLayerManagerChange:
ディスプレイ レイヤ マネージャが変更されたとき。
DisplayRGBColorChanged:
RGB 表示カラーが変更されたとき。
glFrameTrigger:
内部使用限定。
gridDisplayChanged:
内部使用限定。
idle:
Maya がアイドル状態で優先順位の高いタスクが存在しないとき。
idleHigh:
Maya がアイドル状態のとき。これは、優先順位が低いアイドル タスクより前にコールされます。通常は「idle」を使用します。
lightLinkingChanged:
ライト リンク リレーションシップを修正する変更が生じたとき。
lightLinkingChangedNonSG:
ライト リンク リレーションシップを修正する変更が生じたとき(シェーディング割り当ての変更を除く)。
linearToleranceChanged:
リニア許容値が変更されたとき。許容値は次の場合に変更されます。
  • MEL コマンド「tolerance」に「-linear」フラグを付けて使用する場合
  • オプション ->GeneralPreferences-> モデリング タブ -> 位置許容値でプリファレンスを変更する場合
linearUnitChanged:
ユーザがオプション(Options)メニューからリニア単位を変更したとき
MenuModeChanged:
ユーザが Maya メイン ウィンドウでメニュー バーのメニュー セットを変更したとき(たとえば、モデリング(Modeling)をアニメーション(Animation)に変更したとき)。
RecentCommandChanged:
内部使用限定。
NewSceneOpened:
シーンが開かれたとき。
PostSceneRead:
シーンが読み込まれた後。特に、ファイルを開いた後や読み込み後、またはすべての子リファレンスが読み込まれた後。
nurbsToPolygonsPrefsChanged:
NURBS をポリゴンに(Nurbs To Polygons)のいずれかのプリファレンスが変更されたとき。プリファレンスは次の場合に変更されます。
  • MEL コマンドを使用(「nurbsToPolygonsPref」)
  • ポリゴン -> NURBS をポリゴンに -> オプション ボックス(Polygons->Nurbs To Polygons->Option Box)でプリファレンスを変更
playbackRangeChanged:
再生キーフレームの範囲が変更されたとき
playbackRangeSliderChanged:
アニメーション開始/終了範囲(タイム スライダ範囲の右端または左端のエントリ セル、その間のセルで再生範囲を調整)が変更されたとき
quitApplication:
ユーザが、MEL コマンドの quit、または終了(Exit)メニュー項目を使用して、終了を選択したとき
Redo:
ユーザがメニューから再実行を選択し、対象が再実行されたときこのコールバックは、UI またはローカル ストレージの更新に使用できます。このコールバックの最中は、シーンや DG の状態を変更しないでください。
renderLayerChange:
レンダー レイヤ ノードの作成や削除が行われたとき。
renderLayerManagerChange:
現在のレンダー レイヤが変更されたとき。
RebuildUIValues:
内部使用限定。
SceneOpened:
シーンが開かれたとき。
SceneSaved:
シーンが保存されたとき。
SelectionChanged:
新しい選択が作成されたとき。
SelectModeChanged:
セレクション モードが変更されたとき。
SelectPreferenceChanged:
内部使用限定。
SelectPriorityChanged:
選択の優先順位が変更されたとき。
SelectTypeChanged:
セレクション タイプが変更されたとき。
setEditorChanged:
廃止されました。現在は使用されていません。
SetModified:
set コマンドを使用してセットを修正したとき。
snapModeChanged:
スナップ モードが変更されたとき。たとえば、グリッド スナップに変更されたとき。
timeChanged:
時間が変更されたとき。
timeUnitChanged:
時間単位が変更されたとき。
ToolChanged:
ツール/コンテキストが変更されたとき。
PostToolChanged:
ツール/コンテキストの変更後。
NameChanged:
オブジェクトの名前が rename コマンドを使って変更されたとき。
Undo:
ユーザがメニューから元に戻すを選択し、対象が取り消されたとき。このコールバックは、UI またはローカル ストレージの更新に使用できます。このコールバックの最中は、シーンや DG の状態を変更しないでください。
modelEditorChanged:
ユーザがモデル エディタのオプションを変更した場合。
listConditions(lc) boolean create
このフラグを指定すると、既存のすべての条件の名前を含む文字配列がコマンドから返されます。以下に、既存のすべての条件について説明します。

使用可能な Maya 機能に基づくイベント

指定した機能が使用できる場合、これらのイベントは true になります。

イベント名 Maya 機能
AnimationExists アニメーション
AnimationUIExists アニメーションのユーザ インタフェース
BaseMayaExists Maya の任意の基本機能
BaseUIExists 任意のインタラクティブな Maya 機能
DatabaseUIExists
DeformersExists デフォーマ機能
DeformersUIExists デフォーマのユーザ インタフェース
DevicesExists デバイス サポート
DimensionsExists 次元
DynamicsExists ダイナミクス
DynamicsUIExists ダイナミクスのユーザ インタフェース
ExplorerExists Explorer
ImageUIExists イメージングのユーザ インタフェース
KinematicsExists キネマティクス
KinematicsUIExists キネマティクスのユーザ インタフェース
ManipsExists マニピュレータ
ModelExists 基本モデリングツール
ModelUIExists 基本モデリングのユーザ インタフェース
NurbsExists NURBS モデリング ツール
NurbsUIExists NURBS モデリングのユーザ インタフェース
PolyCoreExists 基本ポリゴン サポート
PolygonsExists ポリゴン モデリング
PolygonsUIExists ポリゴン モデリングのユーザ インタフェース
PolyTextureExists ポリゴナル テクスチャリング
RenderingExists ビルトイン レンダリング
RenderingUIExists レンダリングのユーザ インタフェース

その他のイベント

autoKeyframeState:
Maya で autoKeyframing が有効なときは true
busy:
Maya がビジーなときは true
deleteAllCondition:
すべてを削除の操作の最中は true
flushingScene:
シーンをフラッシュしている間は true
GoButtonEnabled:
パネル コンテキストの Go ボタンが使用可能なときは true
hotkeyListChange:
ホットキーの定義リストが変更されたときは true
playingBack:
Maya でアニメーション キーフレームが再生されているときは true
playbackIconsCondition:
タイム スライダで使用されている再生 状態のインスタンス
readingFile:
Maya がファイルを読み取り中のときは true
RedoAvailable:
再実行のために使用可能なコマンドがあるときは true
SomethingSelected:
何らかのオブジェクト(1 つまたは複数)が選択されているときは true
UndoAvailable:
元に戻すための使用可能なコマンドがあるときは true

フラグはコマンドの作成モードで表示できます フラグはコマンドの編集モードで表示できます
フラグはコマンドの照会モードで表示できます フラグに複数の引数を指定し、タプルまたはリストとして渡すことができます。

Python 例

import maya.cmds as cmds

# create a job that deletes things when they are seleted
jobNum = cmds.scriptJob( ct= ["SomethingSelected","cmds.delete()"], protected=True)
# Now display the job
jobs = cmds.scriptJob( listJobs=True )
# Now kill it (need to use -force flag since it's protected)
cmds.scriptJob( kill=jobNum, force=True)
# create a sphere, but print a warning the next time it
# is raised over 10 units high
def warn():
	height = cmds.getAttr( 'mySphere.ty' )
	if height > 10.0:
		print 'Sphere is too high!'
cmds.sphere( n='mySphere' )
cmds.scriptJob( runOnce=True, attributeChange=['mySphere.ty', warn] )
# create a job to detect a new attribute named "tag"
#
def detectNewTagAttr():
	print "New tag attribute was added"
cmds.scriptJob( runOnce=True, attributeAdded=['mySphere.tag',detectNewTagAttr] )
cmds.addAttr( 'mySphere', ln='tag', sn='tg', dt='string')
# list all the existing conditions and print them
# nicely
conds2 = cmds.scriptJob( listConditions=True )
for cond in sorted(conds2):
	print cond