移動先: 概要 戻り値 関連項目. フラグ. Python 例.

概要

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

注意: オブジェクト名や引数を表す文字列はカンマで区切ります。これは概要には示されていません。

scriptJob は 「元に戻す」が可能、「照会」が不可能「編集」が不可能 です。

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

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

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

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

// Set up a job that runs for the life of the application. // This job cannot be deleted with the "kill" command no matter what. scriptJob -e "SelectionChanged" "print \"Annoying Message!\\n\"" -permanent;

// set up a job for the true state scriptJob -ct "playingBack" playBackCallback;

// set up a job for the false state 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, 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, string] create
指定した条件が false になったときにスクリプトを実行します。 文字列は定義済みまたはユーザ定義のブーリアン条件の名前である必要があります。存在する条件のリストを取得するには、-listConditions フラグを使用します。
conditionChange(cc) [string, string] create
指定した条件の状態が変わったときにスクリプトを実行します。 文字列は定義済みまたはユーザ定義のブーリアン条件の名前である必要があります。存在する条件のリストを取得するには、-listConditions フラグを使用します。
event(e) [string, string] create
指定したイベントが発生したときにスクリプトを実行します。文字列は定義済みの Maya イベントの名前である必要があります。存在するイベントのリストを取得するには、-listEvents フラグを使用します。
attributeChange(ac) [string, string] create
指定したアトリビュートの値が変わったときにスクリプトを実行します。 文字列はディペンデンシー ノードと特定のアトリビュートの両方を識別する必要があります。ディペンデンシー ノードが削除された場合、(削除を元に戻すことができても)このジョブは中断されます。
attributeDeleted(ad) [string, string] create
指定したアトリビュートが削除されるときにスクリプトを実行します。 文字列はディペンデンシー ノードと特定のアトリビュートの両方を識別する必要があります。ディペンデンシー ノードが削除された場合、(削除を元に戻すことができても)このジョブは中断されます。
attributeAdded(aa) [string, string] create
指定したアトリビュートが追加されるときにスクリプトを実行します。 文字列はディペンデンシー ノードと特定のアトリビュートの両方を識別する必要があります。ディペンデンシー ノードが削除された場合、(削除を元に戻すことができても)このジョブは中断されます。
connectionChange(con) [string, string] create
指定したアトリビュートの結合関係が変わったときにスクリプトを実行します。文字列はディペンデンシー ノードと特定のアトリビュートの両方を識別する必要があります。ディペンデンシー ノードが削除された場合、(削除を元に戻すことができても)このジョブは中断されます。
permanent(per) boolean create
ジョブを中断できないようにします。永続ジョブは、アプリケーションの存続期間中、またはジョブの親オブジェクトの存続期間中、存在します。 -killWithScene フラグは、永続ジョブには適用されません。
protected(pro) boolean create
ジョブを中断されにくくします。保護されたジョブは、-force フラグを使用して意図的に中断または置き換えを行う必要があります。 -killWithScene フラグは、保護されたジョブには適用されません。
idleEvent(ie) string create
Maya がアイドル状態になるたびにスクリプトを実行します。警告: アイドル イベントが登録されているかぎり、アプリケーションはイベントを呼び出し続け、使用可能な CPU 時間をすべて使い果たします。 idleEvents は注意して使用してください。
disregardIndex(dri) boolean create
このフラグは -ac/attributeChange フラグと併用した場合のみに使用できます。これが指定されており、ジョブがマルチ(インデックス付き)アトリビュートにアタッチされている場合、マルチ アトリビュートのいかなるアトリビュートが変更されてもジョブが実行されます。
allChildren(alc) boolean create
このフラグは -ac/attributeChange フラグと併用した場合のみに使用できます。これが指定されており、ジョブが複合アトリビュートにアタッチされている場合、 指定したアトリビュートとその子に変更が加えられるとジョブが実行されます。
timeChange(tc) string create
カレント タイムが変更されたときにスクリプトを実行します。タイム スライダのクリックによって時間が変更された場合、スクリプトは実行されません。これに対して、「timeChanged」条件によってトリガされたスクリプトは実行されます。
uiDeleted(uid) [string, string] create
指定した UI のピースが削除されたときにスクリプトを実行します。
nodeNameChanged(nnc) [string, string] 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 フラグが使用される場合、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. オプション > 一般プリファレンス > モデリング タブ > 接線許容値(Options > General Preferences > Modeling tab > Tangential Tolerance
  3. )でプリファレンスを変更
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" フラグを使用)
  • オプション > 一般プリファレンス > モデリング タブ > 位置許容値(Options > GeneralPreferences > Modeling tab > Positional Tolerance)でプリファレンスを変更
linearUnitChanged:
ユーザがオプション(Options)メニューからリニア単位を変更したとき
MenuModeChanged:
ユーザが Maya メイン ウィンドウでメニュー バーのメニュー セットを変更したとき(たとえば、モデリング(Modeling)をアニメーション(Animation)に変更したとき)。
RecentCommandChanged:
内部使用限定。
NewSceneOpened:
新しいシーンを開いたとき
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:
シーンが開かれたとき。
SelectionChanged:
新しい選択が作成されたとき。
SelectModeChanged:
セレクション モードが変更されたとき。
SelectPreferenceChanged:
内部使用限定。
SelectPriorityChanged:
選択の優先順位が変更されたとき。
SelectTypeChanged:
セレクション タイプが変更されたとき。
setEditorChanged:
廃止されました。現在は使用されていません。
SetModified:
set コマンドを使用してセットを修正したとき。
snapModeChanged:
スナップ モードが変更されたとき。たとえば、グリッド スナップに変更されたとき。
timeChanged:
時間が変更されたとき。
timeUnitChanged:
時間単位が変更されたとき。
ToolChanged:
ツール/コンテキストが変更されたとき。
PostToolChanged:
ツール/コンテキストの変更後。
NameChanged:
オブジェクトの名前が rename コマンドを使って変更されたとき。
Undo:
ユーザがメニューから元に戻すを選択し、対象が取り消されたとき。このコールバックは、UI またはローカル ストレージの更新に使用できます。このコールバックの最中は、シーンや DG の状態を変更しないでください。
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