関数 ¶
areEnabled()
→ bool
undosが現在有効になっていれば、Trueを返します。
disabler()
→ hou.UndosDisabler
コンテキストマネージャを返します。この範囲内のHoudiniへの変更は、undoスタックに追加されません。
例:
with hou.undos.disabler(): # すべてのノードを左側に1ユニット分動かします。 # これはundoできません! for n in hou.node("/obj").children(): n.move(hou.Vector2(-1, 0))
group(label, editor=None)
→ hou.UndosGroup
コンテキストマネージャを返します。この範囲内のHoudiniへの変更は、undoスタックの単一アクションとして記録されます。
例:
with hou.undos.group("Move all nodes to the left"): # すべてのノードを左側に1ユニット分動かします。 # これはundoできます。 for n in hou.node("/obj").children(): n.move(hou.Vector2(-1, 0))
これは、パラメータコールバックスクリプト内で実行するときは何も影響がありません。なぜなら、それらのスクリプトは既にundoグループ内で既に実行されているからです。
オプションのeditor
引数には、APEXノードを格納することができるネットワークビューペイン内においてアクションの実行の一環としてundoグループが作成されている時にそのhou.NetworkEditorオブジェクトを指定します。
これによって、undoグループ内のすべての操作が完了した時にAPEXグラフへの編集のみが現行SOPに保存されるようになります。
clear()
すべてのundoとredoの情報をクリアします。
add(undo, label, tag=None)
undoヒストリーにundo操作を追加します。
undo
には、undo()やredo()のメソッドを持ったオブジェクトを指定してください。
操作がundoされた時にundo()メソッドが実行され、操作がRedoされたときにredo()メソッドが実行されます。
label
は、undoヒストリーで表示されるundo操作の表記です。
渡したundo
オブジェクトにundo()メソッドもredo()メソッドもなかった場合にはhou.OperationFailedを引き起こします。
例えば、この関数に渡す有効なPythonオブジェクトは以下のようになります:
class MyUndoClass(): def __init__(self): # ... 初期化 ... pass def undo(self): # undoが実行された時の処理の内容を追加します。 pass def redo(self): # Redoが実行された時の処理の内容を追加します。 pass
上記のクラスを使用する場合は、この関数を以下のようにコールします:
foo = MyUndoClass() hou.undos.add(foo, "My Undo")
このundoオブジェクトには、オプションで文字列タグも設定することができます。この文字列タグは、hou.undos.removeUndosを使ってundoスタックから削除することができます。
foo = MyUndoClass() hou.undos.add(foo, "My Undo", "myTag")
removeUndos(tag)
tag
のタグが付いたすべてのundoを無効化して削除します。
# "myTag"のタグが付いたすべてのundoを削除します。 hou.undos.removeUndos("myTag")
memoryUsage()
→ int
undoで使われている現在のメモリ(バイト単位)。
memoryUsageLimit()
→ int
undoの最大許容メモリ使用サイズ(バイト単位)。
performUndo()
最後のアクションをundoします。
performRedo()
最後にundoしたアクションをredoします。
undoLabels()
→ str
のタプル
現在のundoオペレーションのタプルをスタックに用意します。最初のアイテム(つまり、undoLabels()[0]
)は、undoされる次のオペレーションであることに注意してください。
redoLabels()
→ str
のタプル
現在のredoオペレーションのタプルをスタックに用意します。最初のアイテム(つまり、redoLabels()[0]
)は、redoされる次のオペレーションであることに注意してください。