int findattribval(<geometry>geometry, string attribclass, string attribute_name, int|stringvalue, int which=0)
int [] findattribval(<geometry>geometry, string attribclass, string attribute_name, int|stringvalue)
<geometry>
ノード(例えばWrangle SOP)のコンテキスト内で実行する時は、この引数にジオメトリの読み込み元の入力番号(0から始まります)を意味する整数を指定することができます。
別の方法として、読み込み元のジオメトリファイル(例えば、.bgeo
)を示した文字列を指定することができます。
Houdini内で実行する時は、この引数にop:/path/to/sop
参照を指定することができます。
attribclass
detail
(またはglobal
), point
, prim
, vertex
のどれか。
attribute_name
読み込むアトリビュートの名前。
value
検索するアトリビュート値。
which
指定したアトリビュート値が複数のエレメントにある時に、どのエレメントを返すのかを制御します。
同じアトリビュート値を持つ複数のエレメントを検索したいのであれば、findattribvalcountを使ってマッチしたエレメントの合計数を取得し、
ループでこの関数のwhich
引数を上げて反復させることができます。以下のサンプルを参照してください。
配列シグネチャを使用することで、合致したエレメントすべてのリストを返すこともできます。
Returns
指定した名前のアトリビュート値がvalue
に合致した最初のポイント/プリミティブ/頂点の番号を返します。指定したアトリビュート値を持つエレメントがなければ-1
を返します。
配列シグネチャは、指定した名前のアトリビュート値がvalue
に合致したすべてのポイント/プリミティブ/頂点の番号を返します。
Tip
使用頻度の多いケース(name
またはid
のアトリビュートでポイント/プリミティブを検索)のために、より使いやすくした専用のラッパー関数があります: nametopoint, nametoprim, idtopoint, idtoprim。
-
整数または文字列の値しか検索することができません。
Examples ¶
@id
== 10のプリミティブを検索する
int prim_num = findattribval(0, "prim", "id", 10); // 代わりにidtoprim(0, 10)を使用することもできます。
@age
== 10のすべてのポイントを検索する
for (int point_num : findattribval(0, "point", "age", 10)) { // ...ポイントを使って何かの処理をします... }
findattribvalcountを使って、@age
== 10のすべてのポイントを検索します。
int count = findattribvalcount(0, "point", "age", 10); int point_num; for (int i = 0; i < count; i++) { point_num = findattribval(0, "point", "age", 10, i); // ...ポイントを使って何かの処理をします... }
See also | |
attrib |
|
search |