Inheritance |
|
メソッド ¶
境界とトランスフォーム ¶
cursorPosition(confine_to_view=True)
→ hou.Vector2
ネットワークビューの座標で表現された現在のマウスカーソル位置を返します。
confine_to_view
がTrue
の場合、戻り値は、ネットワークエディタ内で現在表示されているネットワークの領域にクリップされます。
以下は、マウスカーソル下のノードを動かす例です:
# ネットワークエディタを取得します。 net_editor = hou.ui.paneTabOfType(hou.paneTabType.NetworkEditor) # ノードを取得します。 node = hou.node("/obj/myNode") # ノードの新しい位置を設定します。 node.setPosition(net_editor.cursorPosition())
isShowingConnectors()
→ bool
ネットワークエディタのズームレベルが入力と出力のコネクタを表示するのに十分に大きい場合はTrueを返します。 これは、ユーザにコネクタをクリックさせるネットワークエディタイベントハンドラーで役立ちます。 コネクタが見えない場合、別の操作が必要になります。
isUnderCursor()
→ bool
マウスカーソル下にネットワークビューがあればTrueを返します。 マウスカーソルの位置がネットワークビューの外にある、または、マウスカーソル下に他のウィンドウがある場合はFalseを返します。
isPosInside(pos, ignore_floating_windows=True)
→ bool
pos
パラメータとして渡されたhou.Vector2がネットワークビュー内にあればTrueを返します。
このpos
の値は、ネットワークエディタペインを基準に表現されたマウス座標です。
ignore_floating_windows
Trueに設定すると、isPosInside
は、指定した位置におけるネットワークビュー上のフローティングウィンドウを無視し、
その位置がネットワークビュー領域内に入っていればTrueを返します。
Falseに設定すると、isPosInside
はフローティングウィンドウまでチェックするようになり、その位置がネットワークビュー内に入っていて、
且つ、ネットワークビュー上に何もウィンドウがなければTrueを返します。
setCursorPosition(pos)
マウスカーソルをhou.Vector2pos
パラメータで指定した位置に動かします。
screenBounds()
→ hou.BoundingRect
ネットワークエディタのビュー領域のスクリーン空間境界を返します。
この領域はメニューバー、ツールバー、他のUIエレメントを含みません。
ネットワークの内容を表示している領域のみが返されます。
この境界は、そのネットワーク領域自体の相対値なので、返される境界ボックスの左下コーナーが常に(0, 0)
になります。
visibleBounds()
→ hou.BoundingRect
ネットワークエディタのビュー領域のネットワーク空間境界を返します。
setVisibleBounds(bounds, transition_time=0.0, max_scale=0.0, set_center_when_scale_rejected=False)
ネットワーク空間の座標で表現されたネットワークエディタのビュー領域の可視境界を設定します。
このメソッドは、スクリーン空間サイズやネットワークエディタの位置を変更しません。
bounds
パラメータで指定した領域が実際のネットワークエディタのアスペクト比と異なれば、このメソッドは、指定した領域が完全に表示されるように自動的にその境界を調整します。
bounds
ネットワークエディタ内で表示させたい領域を指定したhou.BoundingRect。
transition_time
ネットワークエディタが現行可視境界から新しい可視境界へ移行するアニメーションの時間(秒)。
max_scale
ゼロ以外の値に設定すると、このパラメータは、許容される最大ズームレベルを制御します。 ネットワークエディタコードで使用されるデフォルトの最大スケールは100です。
set_centered_when_scale_rejected
True
に設定しても、新しいズームレベルが以前のズームと同じであると判断された場合は、その境界はまったく変更されません。
これによって、純粋に意図したズームによる境界変更ではなく、実際にズームを変更していないのに不意にビューをパンしてしまって境界が変わってしまうのを回避します。
requestZoomReset()
ネットワーク内のすべてのアイテムが表示されるようにズームリセットを要求します。 実際の計算は次回の描画で行なわれます。
isZoomResetRequested()
ズームリセットが要求されている場合はTrueを返します。 これは、表示境界が次回の描画までは有効でないことを意味します。ズームリセット後に、この関数はFalseを返します。
setLocatingEnabled(enabled)
ネットワークエディタ内のマウス下のUI要素のハイライト表示を有効または無効にします。 無効にすると、ネットワークエディタのイベント処理コードに送信されるマウスイベントは、配置または選択した要素をまったく特定しなくなります。 一部のモード(例えば、マウスイベントがビューのみを修正するビュー状態の時)では、この挙動を無効にした方が望ましいです。
locatingEnabled()
→ bool
ネットワークエディタがマウス下のUI要素をハイライト表示して、それらのUI要素をクリックすることができるならTrueを返します。
lengthToScreen(len)
→ float
ネットワーク単位で表現した長さ値len
を指定すると、それに相当するスクーン単位(ピクセル)の長さを返します。
この結果は、ネットワークエディタの現行ズームレベルに依存します。
lengthFromScreen(len)
→ float
スクリーン単位(ピクセル)で表現した長さ値len
を指定すると、それに相当するネットワーク単位の長さを返します。
この結果は、ネットワークエディタの現行ズームレベルに依存します。
sizeToScreen(size)
→ hou.Vector2
ネットワーク単位で表現したボックスサイズ値size
をhou.Vector2として指定すると、それに相当するスクリーン単位(ピクセル)のサイズを返します。
これは、幅と高さに対してlengthToScreen()
を別々にコールすることと等価です。
ネットワークエディタの現行ズームレベルに依存します。
sizeFromScreen(size)
→ hou.Vector2
スクリーン単位(ピクセル)で表現したボックスサイズ値size
をhou.Vector2として指定すると、それに相当するネットワーク単位のサイズを返します。
これは、幅と高さに対してlengthFromScreen()
を別々にコールすることと等価です。
ネットワークエディタの現行ズームレベルに依存します。
posToScreen(pos)
→ hou.Vector2
ネットワーク単位で表現した位置値pos
をhou.Vector2として指定すると、それに相当するスクリーン単位(ピクセル)の位置を返します。
この結果は、ネットワークエディタの現行ズームレベルとビュー位置の両方に依存します。
このメソッドは、ネットワークエディタ内での描画と位置決めに使用することを前提にしているので、 返されるスクリーン座標は、ユーザのモニタ上の特定の位置基準ではなくて、ネットワークエディタウィンドウの左下コーナーを基準としたピクセル単位の値です。 指定した位置がネットワークエディタペイン内で現在見えない場合、その結果のスクリーン位置は、マイナス値、または、ネットワークエディタペインのサイズより大きい値になります(hou.NetworkEditor.visibleBoundsを参照)。
posFromScreen(pos)
→ hou.Vector2
スクリーン単位(ピクセル)で表現した位置値pos
をhou.Vector2として指定すると、それに相当するネットワーク単位の位置を返します。
この結果は、ネットワークエディタの現行ズームレベルとビュー位置の両方に依存します。
このメソッドがスクリーン位置をどのように解釈するのかに関する詳細は、hou.NetworkEditor.posToScreenを参照してください。
overviewPosToScreen(pos)
→ hou.Vector2
ネットワーク単位で表現した位置値pos
をhou.Vector2として指定すると、ネットワークエディタのOverviewガジェット内のそれに相当するスクリーン単位(ピクセル)の位置を返します。
このメソッドは、Overview領域を表示させていなくても、表示させているものと見なして値を返します。
overviewPosFromScreen(pos)
→ hou.Vector2
Overviewガジェット内のスクリーン単位(ピクセル)で表現した位置値pos
をhou.Vector2として指定すると、それに相当するネットワーク単位の位置を返します。
このメソッドは、Overview領域を表示させていなくても、表示させているものと見なして値を返します。
指定した位置がOverview領域外だった場合、このメソッドは、指定した座標に到達するのに必要な範囲までOverviewガジェットが拡張されているものと見なして値を返します。
overviewVisible()
→ bool
Overviewガジェットが現在表示されているかどうかを示したブール値を返します。 この結果は、Overviewが自動的に表示されるように設定していてもOverviewガジェットの本当の状態を反映します。
overviewVisibleIfAutomatic()
→ bool
Overviewガジェットが自動的に表示されるように設定していた場合にそのOverviewガジェットが現在表示されているかどうかを示したブール値を返します。
つまり、このメソッドは、ネットワークの一部が現在のネットワークエディタの可視境界外にあるとTrue
を返します。
選択とハイライト ¶
networkItemsInBox(pos1, pos2, for_drop=False, for_select=False)
→ tuple
of (hou.NetworkItem, str
, int
)
hou.Vector2ポイントのpos1
とpos2
で定義された境界ボックス内のネットワークアイテムを返します。
これらのポイントはスクリーン空間で指定するので、この関数にマウス位置を指定するのが簡単です。
戻り値の3成分のタプルは、指定した境界ボックスの中心からの距離の順番でソートされます。
各3成分は、ネットワークアイテム(ノード、ステッキーノート、ワイヤーなど)、境界ボックス内で見つかったアイテムのUI部分を表現した文字列、同じアイテム/名前で組み合わされた別インスタンスと区別するオプションのインデックス値で構成されます。例えば、geo1
ノードの入力2のコネクタが、指定した境界ボックス内で唯一のコネクタだった場合、戻り値は以下のようになります:
>>> editor = hou.ui.paneTabOfType(hou.paneTabType.NetworkEditor) >>> editor.networkItemsInBox(pos1, pos2) ((<hou.ObjNode of type subnet at /obj/subnet1>, 'input', 2),)
for_drop
またはfor_select
のどれかをTrue
に設定することで、有効なターゲットであると判断する別の基準を使用することができます。
デフォルトでは、このメソッドはマウスを置いた時にハイライトするUIウィジェットが返されます。
for_drop
をTrue
に設定すると、ドロップターゲットにできるUIウィジェットのみが返されます。
for_select
をTrue
に設定すると、ボックスピッキング時にアイテムが選択されるUIウィジェットのみが返されます。
setDragSourceData(items)
ドラッグアンドドロップのバッファに格納するネットワークアイテムを制御します。 このバッファの値は、ネットワークエディタからアイテムをドラッグした時(例えば、ユーザがノードをネットワークエディタからテキストポート上またはパラメータダイアログ上にドラッグした時)にのみ使用されます。
setDragSourceWorkItem(work_item_id)
ドラッグアンドドロップのバッファに格納するpdg.WorkItemのIDを制御します。 このバッファ内のワークアイテムIDは、そのワークアイテムをTOPノードからテキストポート、Pythonシェルなどにドラッグした時に使用されます。
setDropTargetItem(item, name, index)
ユーザがネットワークエディタ内でドラッグアンドドロップの操作をする時に、ドラッグした物がマウスボタンを離した際にドロップされるであろう場所に関するフィードバックを受け取ることが重要になります。
このような暗示は、ドロップしたターゲットをUI内でハイライトすることで可能です。
このメソッドは、現行ドロップターゲットをPythonコードで指定することができます。
通常では、networkItemsInBox
メソッドからのタプルの1つに返される値は、item
, name
, index
です。
dropTargetItem()
→ (hou.NetworkItem, str
, int
)
現在設定されているドロップターゲットアイテム情報を返します。
この情報がまさにその直後のsetDropTargetItem
コールに渡される値になります。
setDecoratedItem(item, interactive)
このメソッドは、特定のアイテムを描画する時にそれをハイライトするようにネットワークエディタに伝えるという点でsetDropTargetItem
と同様です。
しかし、デコレーションアイテムの場合では、ネットワークアイテムだけを指定する必要があります。
ノードをデコレーションアイテムとして設定すると、ノードリングが表示されます。
ネットワークドットもデコレーションアイテムにすることができます。その場合、そのドットの入力と出力のコネクタが表示されます。
interactive
ブールフラグは、ユーザがそのデコレーションに作用することを許可するかどうかを示します。
許可しない場合、ノードリングが薄く描画され、そのボタンをクリックすることができません。
この非インタラクティブモードは、Controlキーを押しながらネットワークエディタ内でマウスを動かすことに相当します。
decoratedItem()
→ hou.NetworkItem
現在設定されているデコレーションアイテムを返します。このアイテムがまさにその直後のsetDecoratedItem
コールに渡されるitem
値になります。
decorationInteractive()
→ bool
現在のデコレーションアイテムがインタラクティブかどうかを返します。これがまさにその直後のsetDecoratedItem
コールに渡されるinteractive
値になります。
setPreSelectedItems(items)
これは、ネットワーク内のアイテムをボックス選択する時に、マウスボタンを離した際に選択されているアイテムを確認することができるので役立ちます。 これらのアイテムは、透明な明るい青のネットワークエディタのキャンバスのオーバーレイレイヤーに描画されます。 このメソッドにタプルとして渡したネットワークアイテムは、この事前選択ハイライトで描画されます。
preSelectedItems()
→ tuple of hou.NetworkItem
現在事前選択されているアイテムを返します。これらのアイテムがまさにその直後のsetPreSelectedItems
コールに渡される値になります。
selectedConnections()
→ tuple of hou.NodeConnection
現在選択されているワイヤーを返します。
clearAllSelected()
OPネットワークエディタの場合、この挙動はhou.clearAllSelected()と同じで、すべてのネットワークアイテムとワイヤーの選択を解除します。 APEXネットワークエディタの場合、これは現行APEXグラフの選択をクリアします。
setNetworkBoxPendingRemovals(items)
ネットワークボックスは、その中の子アイテムを動かした時に、それらのアイテムが含まれるように自動的にサイズを変更します。 それらのアイテムをそのネットワークボックスから削除するように示すためには、このメソッドにタプルとしてそれらのアイテムを渡します。 そうすることで、ネットワークボックスのコンテナは、それらのアイテムを動かしてもそれらのアイテムに合うようにサイズを変更しなくなります。
networkBoxPendingRemovals()
→ tuple of hou.NetworkMovableItem
現在ネットワークボックスから削除されようとしているアイテムを返します。これらのアイテムがまさにその直後のsetNetworkBoxPendingRemovals
コールに渡される値になります。
デコレーション ¶
nodeShapes()
→ tuple of str
有効なノードシェイプ名すべてのリストを返します。これらの名前は、ノードのユーザデータに設定することで特定のノードの形状を制御することができる値です。 また、ノードタイプのデフォルトとして使用可能なシェイプ名でもあります。
このコードは、ノードのシェイプをランダムに設定します:
>>> import random >>> editor = hou.ui.paneTabOfType(hou.paneTabType.NetworkEditor) >>> shapes = editor.nodeShapes() >>> hou.node('/obj/geo1').setUserData('nodeshape', random.choice(shapes))
reloadNodeShapes()
→ tuple of str
すべてのノードシェイプファイルを強制的に再読込します。これによって、新しいシェイプが利用可能になったり、既存のシェイプが削除されます。
それぞれ読み込まれたノードシェイプの名前、それぞれのシェイプを解読した時に生成されるエラーメッセージを示した文字列のタプルを返します。
このメソッドをコールした後に読み込みに成功したシェイプすべての単純なリストを取得するには、nodeShapes()
を使用します。
setFootprints(footprints)
ネットワークエディタに表示させるフットプリントリングを設定します。
footprints
パラメータは、hou.NetworkFootprintオブジェクトのタプルでなければなりません。
詳細は、そのクラスを参照してください。
footprints()
→ tuple
of hou.NetworkFootprint
現在のフットプリント設定をhou.NetworkFootprintオブジェクトのタプルとして返します。これらのオブジェクトがまさにその直後のsetFootprints
コールに渡される値になります。
setCursorMap(cursors)
マウス下のUIウィジェットに応じて使用するマウスカーソルをネットワークエディタに伝えます。
この設定は、タプルを文字列にマッピングした辞書として指定します。
この文字列はカーソルの名前であり、$HFS/houdini/config/Cursors
ディレクトリのカーソルファイル名のどれかを指定することができます。
各タプルは、文字列と整数で構成します。この文字列はUIウィジェットの名前で、この整数はそのUIウィジェット内の特定のインデックス値を意味します。
以下のコードは、ノードの入力と出力すべてに対して“コネクト”カーソルを表示するようにネットワークエディタを設定します:
>>> editor = hou.ui.paneTabOfType(hou.paneTabType.NetworkEditor) >>> editor.setCursorMap({ ... ('input', -1): 'wire', ... ('output', -1): 'wire' ... })
以下のコードは、マウス下のステッキーノートの境界の特定のセクションに応じて適切にサイズ変更されたアイコンを表示するようにネットワークエディタを設定します:
>>> editor = hou.ui.paneTabOfType(hou.paneTabType.NetworkEditor) >>> editor.setCursorMap({ ... ('stickynoteborder', 0): 'arrowSWNE', ... ('stickynoteborder', 1): 'arrowLeftRight', ... ('stickynoteborder', 2): 'arrowNWSE', ... ('stickynoteborder', 3): 'arrowUpDown', ... ('stickynoteborder', 4): 'arrowSWNE', ... ('stickynoteborder', 5): 'arrowLeftRight', ... ('stickynoteborder', 6): 'arrowNWSE', ... ('stickynoteborder', 7): 'arrowUpDown' ... })
cursorMap()
→ dict
of (str
, int
) to str
現在のマウスカーソル設定を返します。この設定がまさにその直後のsetCursorMap
コールに渡される辞書になります。
setDefaultCursor(cursor_name)
setCursorMap()
に送った辞書で定義されているUIがマウス下にない時に使用するマウスカーソルをネットワークエディタに伝えます。
defaultCursor()
→ str
直近のsetDefaultCursor()
コールで設定されたデフォルトのマウスカーソルを返します。
setBackgroundImages(images)
ネットワークエディタに表示させる背景画像を設定します。 ネットワークエディタは、各ネットワークのユーザデータに画像の記述の保存と読み込みをします。 これによって、ネットワーク毎に別々の背景画像を設定することができます。 これらの画像は、hou.NetworkImageオブジェクトのタプルとして指定します。 詳細は、そのクラスのドキュメントを参照してください。
backgroundImages()
→ tuple
of hou.NetworkImage
ネットワークエディタに表示されている現在の背景画像の設定の記述子を返します。
この記述子がその直後のsetBackgroundImages
コールに渡されるタプルになります。
setAdjustments(items, adjustments, auto_remove=False)
ネットワークエディタ内のネットワークアイテムのサイズと位置の一時的な調整を設定します。
items
パラメータは、hou.NetworkMovableItemオブジェクトのタプルです。
adjustments
パラメータは、items
タプル内の各ネットワークアイテムと関連付けるためのhou.NetworkAnimValueオブジェクトのタプルです。
この調整の指定方法に関する詳細は、そのクラスのドキュメントを参照してください。
その調整のアニメーションが完了したらネットワークが自動的にその調整を削除するようにするにはauto_remove
パラメータをTrue
に設定します。
これは、ユーザアクションの後で実行されるアニメーションが、次のイベントでその変更に関係がなければ、将来明示的にその調整値のリセットを管理する必要がなくて簡単になるので役立ちます。
setShapes(shapes)
shapes
パラメータには、ネットワークに描画されるhou.NetworkShapeオブジェクトのタプルを指定します。
詳細は、ネットワークシェイプのクラスとそのサブクラスのドキュメントを参照してください。
setOverlayShapes(shapes)
shapes
パラメータには、ネットワークエディタのキャンパスのオーバーレイレイヤーに描画されるhou.NetworkShapeオブジェクトのタプルを指定します。
詳細は、ネットワークシェイプのクラスとそのサブクラスのドキュメントを参照してください。
redraw()
強制的にネットワークエディタを再描画します。 これは、あなたのコードがネットワークエディタの描画に間接的に影響を与えているHoudiniセッションの部分を更新させる場合(例えば、デフォルトのノードのシェイプとカラーを変更)で必要になることがあります。 ネットワークへの直接的な変更(例えば、特定のノードのシェイプやカラーを変更)は、ネットワークエディタを自動的に再描画します。 あなたのコードによって自動的に再描画が発動されないことをわかった時にのみ、この関数を使用してください。
ネットワークアイテム情報 ¶
itemRect(item, adjusted=True)
→ hou.BoundingRect
item
パラメータで指定したhou.NetworkMovableItemの境界矩形を返します。
adjusted
パラメータをTrue
に設定すると、直近のsetAdjustments()
コールに設定されたこのアイテムのサイズと位置の調整が考慮されます。
False
に設定すると、これらの調整が無視されます。ノードに関しては、ノードボディのみが考慮され、ノード名、バッジ、他のデコレーションは考慮されないことに注意してください。
itemInputPos(item, input_index, adjusted=True)
→ hou.Vector2
item
で指定したhou.Nodeまたはhou.NetworkDotの入力コネクタの中心点を返します。
input_index
パラメータには、目的の入力を指定します。ネットワークドットに関しては、この値をゼロにしてください。
adjusted
パラメータをTrue
に設定すると、直近のsetAdjustments()
コールに設定されたこのアイテムのサイズと位置の調整が考慮されます。
False
に設定すると、これらの調整は無視されます。
itemInputDir(item, input_index)
→ hou.Vector2
指定した入力に接続されたワイヤーがそのコネクタから出現する方向を示した正規ベクトルを返します。
item
パラメータには、hou.Nodeまたはhou.NetworkDotを指定することができます。
input_index
には、目的の入力を指定します。item
がネットワークドットの場合は、この値をゼロにしてください。
itemOutputPos(item, output_index, adjusted=True)
→ hou.Vector2
item
で指定したhou.Node, hou.NetworkDot, hou.SubnetIndirectInputの出力コネクタの中心点を返します。
output_index
パラメータには、目的の出力を指定します。ネットワークドットとサブネット間接入力に関しては、この値をゼロにしてください。
adjusted
パラメータをTrue
に設定すると、直近のsetAdjustments()
コールに設定されたこのアイテムのサイズと位置の調整が考慮されます。
False
に設定すると、これらの調整は無視されます。
itemOutputDir(item, output_index)
→ hou.Vector2
指定した出力に接続されたワイヤーがそのコネクタから出現する方向を示した正規ベクトルを返します。
item
パラメータには、hou.Node, hou.NetworkDot, hou.SubnetIndirectInputを指定することができます。
output_index
には、目的の出力を指定します。item
がネットワークドットまたはサブネット間接入力の場合は、この値をゼロにしてください。
allVisibleRects(ignore_items)
→ tuple
of (hou.NetworkMovableItem, hou.BoundingRect)
このメソッドは、ネットワークエディタで現在表示されているすべてのネットワークアイテムに対してitemRect()
をコールすることと同じです。
一回のメソッドコールでこれらの結果を取得するので非常に速く、アイテム毎に可視性をチェックする必要性がありません。
このメソッドは、ノードを動かした時にスナップするアイテムを検索するのに役立ちます。
ignore_items
パラメータは、その結果のタプルに返したくないhou.NetworkMovableItemオブジェクトのタプルを指定します。
プロンプト ¶
setTooltip(tooltip)
マウスを短い間置いた時に、そのマウス下に表示させるツールチップ文字列を設定します。
この文字列には、通常では現在のマウスカーソル下のネットワークアイテムに相当するものに設定してください。
この文字列は遅れて表示されるので、setPromptText()
に渡すプロンプトテキストよりも詳細なテキストにするのが良いです。
tooltip()
→ str
現在のツールチップ文字列を返します。これは、直近のsetTooltip()
メソッドに渡された値です。
setPrompt(prompt)
ネットワークエディタの下部に表示させるプロンプトテキストを設定します。
この文字列には、通常では現在のマウスカーソル下のネットワークアイテムに相当するものに設定してください。
このテキストは簡潔にしてください。
これよりも詳細な情報は、setTooltip()
メソッドによってツールチップに格納することができます。
prompt()
→ str
現在のプロンプト文字列を返します。これは、直近のsetPromptText()
メソッドに渡された値です。
flashMessage(image, message, duration)
ネットワークエディタの左上コーナーに簡潔にメッセージを表示させてフェードアウトさせます。
image
パラメータには、message
パラメータで指定したテキストと一緒に表示させるアイコンまたは画像ファイルを指定します。
画像のみまたはテキストのみを表示させたいのであれば、それらのパラメータのどちらかをNone
にします。
duration
パラメータには、メッセージがフェードアウトするまでの秒数を指定します。
標準のメニューとエディタ ¶
openTabMenu(key=None, auto_place=False, branch=False, src_item=None, src_connector_index=-1, dest_item=None, dest_connector_index=-1, node_position=None, src_items=[], src_indexes=[], dest_items=[], dest_indexes=[])
ネットワークエディタ内でタブメニューを開きます。 ユーザがタブメニューからツールを選択すると、この関数に渡されたパラメータが、そのツールスクリプトに送信されるコンテキスト情報を決定します。 一般的には、ほとんどのツールは、以下で説明しているように一貫した方法でそれらのパラメータを扱います。
key
メニューを開くのに使用するキー(あれば)。開いたメニューに対して同じキーを押すと、そのメニューが閉じます。
auto_place
タブメニューからツールを選択した時に自動配置を有効にするにはTrue
に設定します。
ソースとターゲットのノードに基づいてタブメニューが自動的に決定した位置に新しいノードが配置されます。
branch
ソースとターゲットのノード間に新しいノードを挿入するのではなく、その新しいノードが新しく分岐を作成するようにするにはTrue
に設定します。
src_item
タブメニューで作成される新しいノードの入力に接続されるノード、ドット、サブネット間接入力。
src_item_connector_index
タブメニューで作成される新しいノードの入力に接続されるノードの出力インデックス。
dest_item
タブメニューで作成される新しいノードの出力に接続されるノードまたはドット。
dest_connector_index
タブメニューで作成される新しいノードの出力に接続されるノードまたはドットの入力インデックス。
node_position
タブメニューで作成される新しいノードに使用する位置。
src_items
タブメニューで作成される新しいノードの入力に接続されるノード、ドット、サブネット間接入力のリスト。 このパラメータ(と他のすべてのリストベースのソースとターゲットのパラメータ)は、両方のパラメータが指定されている場合に、単一項目のパラメータよりも優先されます。
src_item_connector_indexes
タブメニューで作成される新しいノードの入力に接続されるノードの出力インデックスのリスト。
dest_items
タブメニューで作成される新しいノードの出力に接続されるノードまたはドットのリスト。
dest_connector_indexes
タブメニューで作成される新しいノードの出力に接続されるノードまたはドットの入力インデックスのリスト。
openNodeMenu(node = None, items = [])
現在のマウス位置下のノードコンテキストメニューを開きます。
2つのパラメータは、ユーザが選択したメニューオプションから影響を受けるノードを制御します。
node
パラメータにhou.Nodeオブジェクトを指定すると、そのメニュー操作がそのノードに影響を与え、そのノードが現在選択されていれば、
他の選択されているネットワークアイテムすべても影響を受けます。
items
パラメータにhou.NetworkMovableItemオブジェクトの空っぽでないリストを渡すと、現在の選択に関わらず、それらの項目のみがメニューから影響を受けます。
選択したメニュー項目が単一ノードのみに作用する場合、オリジナルのnode
パラメータ値またはitems
リスト内の最後のhou.Nodeオブジェクトが影響を受けます。
選択したメニュー項目が複数のノードに影響を与える場合、すべてのノードが影響を受けます。
そして、ノード以外のネットワーク項目をメニュー項目によって変更できるいくつかの場合では、すべての項目(ノードまたはそれ以外の項目)が影響を受けます。
openVopEffectsMenu(node, input_index)
node
パラメータで指定したhou.VopNodeのinput_index
パラメータで指定した入力のVOPノードエフェクトメニューを開きます。
openVopOutputInfoMenu(node, output_index)
node
パラメータで指定したhou.VopNodeのoutput_index
パラメータで指定した出力のVOPノード出力情報メニューを開きます。
このメニューは、DebugまたはBypassのフラグが有効な時のVOPの挙動を制御するのに使用します。
openCommentEditor(item, select_all = False)
→ int
item
パラメータで指定したネットワークボックスのコメントを編集するための入力フィールドを開きます。
ユーザがテキストの編集を終えたことを示したイベントの一部として、ネットワークエディタに渡される整数IDを返します。
select_all
をTrue
に設定すると、すべてのテキストが選択された状態でネットワークエディタが開きます。
openFloatingParameterEditor(node)
指定したノードのフローティングパラメータダイアログを開きます。
openNameEditor(item, select_all = False)
→ int
item
パラメータで指定したノードの名前を編集するための入力フィールドを開きます。
ユーザがテキストの編集を終えたことを示したイベントの一部として、ネットワークエディタに渡される整数IDを返します。
select_all
をTrue
に設定すると、すべてのテキストが選択された状態でネットワークエディタが開きます。
openNoteEditor(stickynote, select_all = False)
→ int
stickynote
パラメータで指定したステッキーノートのテキストを編集するための入力フィールドを開きます。
ユーザがテキストの編集を終えたことを示したイベントの一部として、ネットワークエディタに渡される整数IDを返します。
select_all
をTrue
に設定すると、すべてのテキストが選択された状態でネットワークエディタが開きます。
closeTextEditor(id, apply_changes = True)
openNameEditor()
, openCommentEditor()
, openNoteEditor()
のメソッドを使って開いた入力フィールドを直ぐに閉じて、その変更を確定します。
id
パラメータは、そのエディタを開いたメソッドが返す値です。
入力フィールドの変更を適用したくない場合は、apply_changes
パラメータをFalse
に設定します。
runShelfTool(tool_name)
指定した名前のシェルフツールをネットワークエディタ内で実行します。
イベントハンドリング ¶
scheduleTimerEvent(seconds)
→ int
seconds
秒経過した後にネットワークエディタにタイマーイベントを送信するように要求します。
この戻り値の整数IDは、複数のタイマーを同時にスケジューリングした場合にそれらのタイマーを区別できるようにトリガーイベントに含まれます。
handleCurrentKeyboardEvent(resend=False)
ネットワークエディタが現在のキーボードイベントを制御するように要求します。このメソッドは、キーボードイベントを制御する時にのみ意味を成します。
resend
パラメータをTrue
に設定すると、キーボードイベントは、キーボードイベント自体を制御しているネットワークエディタにではなく、ネットワークエディタのPythonハンドリングコードに2回送信されます。
これは、ネットワークエディタがキーの扱い方を知らない状態やモードの場合に、その状態を現行状態から抜けるものとして認識させて、他のPythonイベントハンドリングコードをトリガーすることができるので役立ちます。
このパラメータは、Tabキーが押された(位置選択の状態から抜けて、その代わりに新しいTabメニューをトリガーします)時に、新しいノードの位置を選択する状態で使用します。
キーボードイベントを制御する時にこのメソッドをコールしなかった場合、ネットワークエディタは、Pythonイベントハンドリングコードがキーボードイベントをハンドリングしたものと想定します。
setVolatileHotkeys(hotkey_symbols)
hotkey_symbols
パラメータには、揮発性(一時的な)キーとして処理したいキーがバインドされているホットキーシンボルのタプルを指定します。
つまり、これらのキーは、キーを押した時に"keydown"
イベントを生成し、キーが離された時に"keyup"
イベントを生成します。
他のキーすべては、そのキーが最初に押された時に何も通告することなく、そのキーが離された後で"keyhit"
イベントを送信するだけです。
isVolatileHotkeyDown(hotkey_symbol)
→ bool
指定したホットキーシンボルにバインドされているキーが現在押されている場合はTrue
を返します。
これによって、ユーザがキーを押した時にトリガーされる"keydown"
イベントを調べることなく、揮発性(一時的な)キーの現在の状態をテストすることができます。
setVolatileKeys
メソッドによって登録されていないホットキーシンボルを使ってこのメソッドをコールしても、たとえそのホットキーシンボルにバインドされているキーが現在押されていても常にFalse
が返されます。
hotkeyAssignments(hotkey_symbols)
→ tupleof
tupleof
str`
ホットキーシンボルのタプルに関連付けられている各アクションに現在割り当てられているホットキーを表現した文字列のタプルを返します。
このキー文字列は、hou.ui.hotkeysメソッドが返す形式になっており、"Ctrl+Shift+G"
のようなキーの記号と修飾キーの組み合わせです。
pushEventContext(module, data)
→ bool
ネットワークエディタで生成される将来のすべてのイベントを(イベントハンドリングコードでimport
される)module
で指定したPythonモジュールに渡すようにします。
data
パラメータには、Python辞書
を指定してください。この辞書には、そのモジュールで必要な追加情報を含めることができます。
また、そのモジュールからの値をこのメソッドをコールしたコードに戻すこともできます。
このメソッドは、プッシュしたモジュールがhou.NetworkEditor.popEventContextをコールするまで戻らないので、指定したモジュールが常にそのメソッドのコールを使ってモジュールを抜ける手段を備えていることが非常に重要です。
イベントコンテキストが要求する度にプッシュされる限り、戻り値はTrue
になります。
イベントコンテキストがプッシュできなくなった場合、popEventContext
コールなしで即座にFalse
が返されます。
これは、イベント処理の順番が起因とする例外的な環境でのみ発生し、通常ではユーザがEscapeキーを押して新しいコンテキストから明示的に抜けたものとして扱ってください。
このメソッド名は、単一の代替コンテキストだけでなくイベントコンテキストのスタックが存在している可能性を示すために、“push”という単語から始まります。
popEventContext()
スタックからイベントコンテキストをポップして、直近でhou.NetworkEditor.pushEventContextをコールしたPythonコードのコントロールを返します。
eventContextData()
→ dict
直近のhou.NetworkEditor.pushEventContextメソッドコールに渡されたコンテキストデータにアクセスします。
このメソッドのコールがなかった場合、ネットワークエディタのイベントハンドリングコードで使用できるグローバル情報を保存するためのPython辞書
が利用可能です。
例えば、ネットワークエディタが訪れた各ネットワークの現行ビュー境界は、このコンテキストデータ辞書の一部として保存されます。
プリファレンス ¶
setPref(pref, value)
pref
という名前のプリファレンスをvalue
に設定します。この値は常に文字列なので、数値、列挙値、他の形式を適切な形式に変換しなければなりません。
pref
で指定したプリファレンスがグローバルプリファレンスである場合、すべてのネットワークエディタが自動的に新しい値で更新されます。
そうでない場合、その変更は、このネットワークエディタにのみ影響します。
getPref(pref)
→ str
pref
という名前のプリファレンスの値を返します。このプリファレンスには、グローバルまたはローカルのプリファレンスを指定することができます。
戻り値は、常に特定のプリファレンスに適した数値または他のデータ構造体として解釈可能な文字列です。
setPrefs(prefs)
1回のメソッドコールで、いくつかのプリファレンス値を設定します。
prefs
パラメータは、プリファレンス名の文字列を値の文字列にマッピングしたPython辞書でなければなりません。
これらのプリファレンスにはローカルまたはグローバルを指定することができますが、このメソッドは、単一ネットワークエディタのローカルプリファレンスの保存と読み込みに最もよく使用されます。
getPrefs()
→ dict
of str
to str
このネットワークエディタのグローバルとローカルのプリファレンスすべてを、プリファレンス名の文字列を値の文字列にマッピングしたPython辞書として返します。
registerPref(pref, value, global)
デフォルト値がvalue
のpref
という名前でプリファレンスを登録します。
global
がTrue
の場合、このプリファレンスがすべてのネットワークエディタに適用されるグローバルプリファレンスとして扱われ、$HOUDINI_USER_PREF_DIR/networkeditor.pref
に保存されます。
そうでない場合、このプリファレンスが各ネットワークエディタのローカルとして扱われ、ネットワークエディタインスタンス毎にデスクファイルに保存されます。
プリファレンスを登録するには、それがネットワークエディタで内部的に使用されているプリファレンスでない時、そのプリファレンスが必ず保存されている必要があります。 スナップを有効にするプリファレンスまたは既存ワイヤー上にノードをドロップできるようにするプリファレンスが、Pythonイベントハンドリングコードでのみ使用されるプリファレンスの例です。 そのため、それらのプリファレンスを明示的に登録しなければなりません。 これは、ネットワークエディタの初期化イベントが初めて作成された時に各ネットワークエディタに対して1回送信されるその初期化イベントに応じて登録をしてください。
badges()
→ tuple
of tuple
of str
ネットワークエディタに表示可能なオプションのノードバッジの説明を返します。 戻り値に含まれている各タプルには、そのバッジを説明した3つの文字列が含まれています。 1番目の文字列は、バッジを非表示にするのか、それとも小さいアイコンまたは大きいアイコンで表示するのかを制御する設定値です。 2番目の文字列は、バッジの説明です。 3番目の文字列は、バッジアイコンの名前です。 これらの値を使用することで、バッジ設定用のインターフェースを表現することができます。
textBadges()
→ tuple
of tuple
of str
ネットワークエディタに表示可能なオプションのノードテキストの説明を返します。 戻り値に含まれている各タプルには、テキストを説明した3つの文字列が含まれています。 1番目の文字列は、テキストを非表示にするのか、それとも省略またはフルのテキストを表示するのかを制御する設定値です。 2番目の文字列は、テキストの説明です。 3番目の文字列は、テキストの意味の表現に使用するアイコンの名前です。 これらの値を使用することで、テキスト設定用のインターフェースを表現することができます。
パラメータエディタ ¶
parmFilterEnabled()
→ bool
パラメータエディタのフィルタリングが有効になっていればTrueを返します。
setParmFilterEnabled(self,on)
パラメータエディタのフィルタリングを有効にします。
setParmFilterMode(self,mode)
パラメータエディタのフィルタモードを設定します。 hou.parmFilterModeは、フィルタパターンの適用先となるパラメータが定義されています。
setParmFilterCriteria(self,criteria)
パラメータエディタのフィルタ基準を設定します。 hou.parmFilterCriteriaは、フィルタパターンをパラメータに適用する方法が定義されています。
parmFilterPattern()
→ str
パラメータエディタのフィルタパターンを返します。
setParmFilterPattern(self,pattern)
パラメータエディタのフィルタパターンを設定します。
hou.parmFilterModeに合致したパラメータのhou.parmFilterCriteria文字列に対してフィルタパターンが適用されます。
パターンマッチングは、そのままの名前によるマッチングを使用したり、文字列からパターンを検索することができます。
フィルタパターンには、カンマ区切りのパターンのリストを指定することができ、さらに、ワイルドカードの*
文字を含めることができます。
parmFilterExactMatch()
→ bool
パラメータエディタのフィルタリングがそのままのパターンマッチングを使用していればTrueを返します。
setParmFilterExactMatch(self,on)
パラメータエディタのフィルタリングがそのままのパターンマッチングを使用するように設定します。
parmScrollPosition()
→ hou.Vector2
パラメータエディタのスクロールバーの位置をパーセンテージで返します。
setParmScrollPosition(self,pos)
パラメータエディタのスクロールバーの位置をhou.Vector2パーセンテージで設定します。
parmScrollTo(parms, scroll_pos)
hou.scrollPositionモードを使用して、パラメータエディタの垂直スクロールバーが1個以上のパラメータに整列するように調整します。
parms
引数には、list
、単一のstr
、hou.Parm、hou.ParmTupleを指定することができます。
他にも、リスト内でタイプを混在させることができます。
エントリーがstr
の場合、カンマ区切りのパラメータ名のリストを渡すことができますが、ワイルドカードには対応していません。
scroll_pos
引数は、影響を受けるパラメータの垂直方向の境界ボックスに整列させる方法を定義します。
hou.scrollPositionを参照してください。
parmMoveFocusTo(parm)
パラメータエディタ内の指定したパラメータにキーボードフォーカスを当てようとします。
廃止 ¶
frameSelection()
ノードをネットワークエディタの中心に配置して、現行選択を表示し、その範囲にズームします。 このメソッドは、hou.NetworkEditor.setVisibleBoundsコールをラップしています。
homeToSelection()
ノードをネットワークエディタの中心に配置して、現行選択を表示します。 このメソッドは、hou.NetworkEditor.setVisibleBoundsコールをラップしています。
listMode()
→ bool
ネットワークエディタがリストモードならTrue、そうでないならFalseを返します。
setListMode(on)
on
がTrueの場合はネットワークエディタがリストモードになり、on
がFalseの場合はリストモードから抜けます。
selectPosition(input_node=None, output_index=0, output_node=None,
input_index=0)
→ hou.Vector2
このメソッドは、イベントコンテキストが'nodegraphselectpos'
に設定されたhou.NetworkEditor.pushEventContextコールをラップし、
古いネットワークエディタと同じ挙動をするようにコンテキストデータを適切に処理します。
新しいノードを配置する時に、ユーザにネットワークエディタ内の位置を選択するように促します。 ネットワークエディタは、その位置をノードプレースホルダーの破線の輪郭で可視化します。 ユーザは、マウスを動かして位置を変更することができ、で確定します。 また、 ⎋ Escを押すことで選択を中断することもできます。
オプションで、input_node
とoutput_node
の引数にhou.Nodeを渡すことで、ノードプレースホルダーをその指定した入力と出力のノードで接続して可視化することができます。
選択した位置のx,y座標を含んだhou.Vector2を返します。
ユーザが選択を中断した場合、hou.OperationInterruptedを引き起こします。 ネットワークエディタがリストモードの場合、hou.OperationFailedを引き起こします。
このメソッドは、新しいノードを作成し、ノードの位置を促すスクリプトで役立ちます。以下は、その例です:
# 新しいノードの接続先となる入力と出力のノードを取得します。 input_node = hou.node("/obj/myInput") output_node = hou.node("/obj/myOutput") # 入力ノードの1番目の出力と出力ノードの2番目の入力に新しいノードを接続します。 output_index = 0 input_index = 1 # ネットワークエディタを取得します。 network_editor = hou.ui.curDesktop().paneTabOfType( hou.paneTabType.NetworkEditor) # 新しいノードの位置を選択するようにユーザに促します。 position = network_editor.selectPosition( input_node, output_index, output_node, input_index) # 新しいノードを作成します。 new_node = hou.node("/obj").createNode("geo") # 新しいノードを配置し、それを入力と出力のノードに接続します。 new_node.move(position) new_node.setInput(0, input_node, output_index) output_node.setInput(input_index, new_node, 0)
autoAddToNetbox(node)
このメソッドは、新しいネットワークエディタで廃止されたので何もしません。
insertIntoUnderlyingConnections(node, x, y)
このメソッドは、新しいネットワークエディタで廃止されたので何もしません。
modifyPositionForNode(vector2, node)
→ Vector2
このメソッドは、新しいネットワークエディタで廃止され、単に関数に渡された位置だけを返します。
autoPlaceNodes()
→ bool
このメソッドは、新しいネットワークエディタで廃止され、常にFalse
を返します。
autoScrollNodes()
→ bool
このメソッドは、新しいネットワークエディタで廃止され、常にFalse
を返します。
Methods from hou.PaneTab ¶
name()
→ str
このタブの名前を返します。
setName(name)
このペインタブの名前を設定します。ペインタブの名前にはスペースを含めることができます。
この名前は、そのタブの内部名で、インターフェースで表示される名前とは異なることに注意してください。
type()
→ hou.paneTabType列挙値
このタブのタイプ(つまり、scene viewer, parameter editor, network editorなど)を返します。
setType(type)
→ hou.PaneTab
指定したタイプの新しいペインタブを作成し、このタブをその新しいタブに置換し、その新しいペインタブを返します。 このタブの参照が無効になるので、それ以降は、返されたペインタブを使用してください。
close()
ペインタブを閉じます。
pane()
→ hou.Pane or None
このペインタブを含んだデスクトップ内のペインを返します。 通常のフローティングパネルには1個以上のペインを含むので、通常のフローティングパネル内のペインタブは、常にペイン内にあります。
とはいえ、いくつかのフローティングパネルでは、特定のペインタブタイプだけを含むように、それ以外の内容が取り除かれており、 複数のペインタブを追加したり、ペインを分割するといったユーザインターフェースを表示しません。 このメソッドは、そのような余計なものが取り除かれたパネルに対してはNoneを返します。
floatingPanel()
→ hou.FloatingPanel or None
このペインタブが含まれたフローティングパネルを返します。このペインタブがフローティングパネル内になければNoneを返します。
isCurrentTab()
→ bool
このタブが、それが含まれているペイン内で選択されたタブかどうか返します。
setIsCurrentTab()
このタブを、それが含まれているペイン内で選択されたタブとして設定します。
isFloating()
→ bool
このペインタブがフローティングパネル内にあるかどうか返します。
このメソッドはほぼ以下のように実装されています:
def isFloating(self): return self.pane() is None or self.pane().floatingPanel() is not None
clone()
→ hou.PaneTab
ペインタブから複製されたフローティングパネルを作成し、そのクローンペインタブを返します。 その新しいペインタブは、新しいフローティングパネル内にあります。
linkGroup()
→ hou.paneLinkType列挙値
このペインタブが属するリンクグループを返します。
hou.PaneTab.isPinも参照してください。
setLinkGroup(group)
このペインタブのリンクグループメンバーシップを設定します。
isPin()
→ bool
このペインタブがピン留めされているかどうか返します。このメソッドは、(self.linkGroup() == hou.paneLinkType.Pinned)
と等価です。
hou.PaneTab.linkGroupも参照してください。
setPin(pin)
pinがTrue
なら、リンクグループメンバーシップをhou.paneLinkType.Pinnedに設定します。
それ以外の場合、それをhou.paneLinkType.FollowSelectionに設定します。
このメソッドは、以下のようにhou.PaneTab.setLinkGroupを使用して実装することができます:
def setPin(self, pin): if pin: self.setLinkGroup(hou.paneLinkType.Pinned) else: self.setLinkGroup(hou.paneLinkType.FollowSelection)
hou.PaneTab.setLinkGroupも参照してください。
size()
→ tuple
of int
ペインタブの幅と高さを含んだ2タプルを返します。
この幅と高さは、その中身の領域、(もしあれば)ネットワークナビゲーションコントロールの領域、境界を含みます。
この幅と高さは、ペインタブのタブ領域を含みません。
contentSize()
→ tuple
of int
ペインタブの中身の領域の幅と高さを含んだ2タプルを返します。
この幅と高さは、(もしあれば)ネットワークナビゲーションコントロールの領域、ペインタブの境界、ペインタブの領域を含みません。
hasNetworkControls()
→ bool
このペインタブタイプがネットワークコントロールに対応していればTrueを返します。
isShowingNetworkControls()
→ bool
このペインタブがネットワークコントロールバーを表示しているかどうかを返します。 ペインタブがネットワークコントロールを持っていない場合はFalseを返します。 hou.PaneTab.hasNetworkControlsも参照してください。
setShowNetworkControls(pin)
ネットワークコントロールバーを表示/非表示します。 ペインタブがネットワークコントロールを持っていない場合は何の効果もありません。 hou.PaneTab.hasNetworkControlsも参照してください。
このメソッドは廃止されました。代わりにshowNetworkControls
を使用してください。
showNetworkControls(pin)
ネットワークコントロールバーを表示/非表示します。 ペインタブにネットワークコントロールがない場合は何の効果もありません。 hou.PaneTab.hasNetworkControlsも参照してください。
displayRadialMenu(menu)
指定したRadialメニューをペインタブ内で起動します。
qtParentWindow()
→ QWidget
このペインタブを含んだウィンドウを表現したPySide2.QtWidgets.QWidget
インスタンスを返します。
qtScreenGeometry()
→ QRect
このペインタブのジオメトリをPySide2.QtCore.QRect
オブジェクトとして返します。
返されるQRect
オブジェクトのx
とy
のプロパティは、スクリーン座標におけるこのペインタブの左上コーナーを指します。
Methods from hou.PathBasedPaneTab ¶
cd(path)
currentNode()
→ Node
pwd()
→ Node
setCurrentNode(node, pick_node = True)
setPwd(node)