Aller au contenu

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].

24 novembre 2022 27 mars 2019