Trouver avec précision avec la recherche avancée
Lorsque vous recherchez des nœuds ou des métadonnées dans votre scène 3D, vous avez la possibilité d'utiliser les opérateurs de la recherche avancée pour trouver de façon plus précise ce que vous cherchez.
Opérateur | Définition | Exemples |
---|---|---|
name: | Rechercher des nœuds par leur nom. | Exemple: node:toit Signification: Nœuds dont le nom contient "toit". |
attribute: | Rechercher des nœuds en fonction du nom ou de la valeur de ses métadonnées. |
Example: attribute:matériau
Signification: Nœuds dont les attributs contiennent "matériau" (comme clé ou valeur).
Exemple: attribute:matériau=bois
Signification: Nœuds qui ont un attribut "matériau" dont la valeur contient "bois".
|
layer: | Rechercher des nœuds inclus dans un calque. |
Exemple: layer:Sol
Signification: Nœuds inclus dans un calque nommé "Sol".
|
has:surface | Rechercher les nœuds qui ont une surface. | Exemple: has:surface Signification: Nœuds qui ont une surface (généralement, tous les nœuds qui ont une géométrie dans la scène 3D). |
has:attribute | Rechercher les nœuds qui ont des métadonnées. |
Exemple: has:attribute
Signification: Nœuds qui ont des métadonnées.
|
Vous pouvez utiliser le "globbing" (*
) et les guillemets (""
) pour affiner votre requête:
- les symboles
*
correspondent à n'importe quelle séquence de caractères :basement_*_ext
trouvera tous les nœuds dont le nom contient "basement_" puis n'importe quoi puis "_ext" (comme "basement_room_a_ext" par exemple). - les symboles
""
correspondent à une séquence de caractères exacte:"groundfloor_entrance"
trouvera tous les nœuds dont le nom est exactement "groundfloor_entrance" (contrairement à "groundfloor_entrance_door" par exemple).
Tous les opérateurs peuvent être combinés avec un "et' implicite. Par exemple, vous pouvez trouver tous les murs en bois avec une recherche comme : name:mur has:surface has:attribute attribute:matériau="bois*"
.
Fonctions et projections¶
La projection est un opérateur, qui transforme un noeud en une valeur, utilisable au sein de la requête de recherche. Il est principalement utilisé pour fournir les arguments des fonctions.
Cet opérateur accepte deux syntaxes :
- Unaire : | PROJECTABLE
qui projette le noeud en cours d'évaluation grâce à PROJECTABLE. PROJECTABLE est un qualificatif d'attribut (attribute:NAME, ou la version courte @NAME).
- Binaire : NODES | PROJECTABLE
qui projette chaque noeud de NODES grâce à PROJECTABLE. NODES peut résulter d'une requête de descendant/ancêtre : /* | @width
ou d'une fonction select: select(*) | @width
Plusieurs fonctions sont gérées par le serveur. Elles sont appliquées à chaque noeud. Si une valeur booléenne est retournée, elle est utilisée pour choisir si le noeud est gardé dans les résultats de la recherche. Si la fonction retourne une valeur autre que booléenne, elle peut être utilisée comme argument à une fonction ou un opérateur de comparaison (>, <, >=, <=, =).
Fonctions | Définition | Exemples |
---|---|---|
count(NODES) | Retourne la taille de NODES, étant une liste de noeuds. |
Exemple: count(/*)
Signification: Les noeuds qui ont des enfants.
|
min(VALUES) | Retourne le minimum des valeurs de VALUES, étant une liste de valeurs comparables. |
Exemple: min(select(*) | @size) = | @size
Signification: Les noeuds dont la valeur de l'attribut size est le minimum de celle de tous les noeuds.
|
max(VALUES) | Retourne le maximum des valeurs de VALUES, étant une liste de valeurs comparables. |
Exemple: max(select(*) | @size) = | @size
Signification: Les noeuds dont la valeur de l'attribut size est le maximum de celle de tous les noeuds.
|
select(QUERY) | Retourn la liste des noeuds qui correspondent à l'exécution de QUERY, qui peut être n'importe quelle requête valide. |
Exemple: select(*)
Signification: Tous les noeuds de la scene.
|
in-range(VALUE, MIN, MAX, RANGE_INDEX, NUM_RANGES) | Retourne vrai si VALUE est dans l'intervalle numéroté RANGE_INDEX, sachant que l'intervalle [MIN, MAX] est divisé en NUM_RANGES intervalles de même taille. RANGE_INDEX doit être compris dans l'intervalle [0, NUM_RANGES[ |
Exemple: in-range(| @size, 1, 10, 0, 1)
Signification: Tous les noeuds dont la valeur de l'attribut size est compris dans l'intervalle [1, 10].
|