Fonctionne avec des requêtes d'objet de type XPath
Contents
[
Hide
]
Cette fonctionnalité est prise en charge par la version 19.3 ou supérieure.
Fonctionne avec des requêtes d’objet de type XPath
En utilisant Aspose.3D for .NET, vous pouvez sélectionner un ou plusieurs objets sous le nœud actuel en utilisant la syntaxe de requête XPath-Like. La syntaxe de la requête a été inspirée par XPath, donc la plupart des concepts et de la syntaxe sont similaires, la syntaxe de la requête est compatible avec l’URL, elle sera donc utilisée dans notre version cloud à l’avenir. Habituellement, une syntaxe est composée dePréfixe Nom Condition / Nom Condition /.
Préfixe = | Description = |
---|---|
// | Sélecteur global, tout descendant est traité comme le nœud racine pour effectuer la sélection |
/ | Sélecteur racine, un seul ancêtre est utilisé pour lever les yeux |
Autres | Supposons que c’est un nom et sélectionnez l’objet par nom en mode sélecteur global |
Le nom est une chaîne qui correspond au nom de l’objet, ou un joker * est utilisé pour correspondre à n’importe quel nom. La condition est une expression pour décider de sélectionner l’objet, les opérateurs booléens (not) et ou les opérateurs de comparaison >/</>=/<=/=/!= sont supportés. Pour accéder à une propriété dans l’expression de condition, le préfixe ‘@’ est utilisé, par exemple, @Name lira la propriété Name. Une syntaxe de raccourci pour tester le type est supportée par <Mesh> , cela équivaut à [@Type = 'Mesh'] , les identifiants sans guillemets seront traités comme une chaîne. |
Sélectionnez tous les nœuds à l’aide du sélecteur global de syntaxe
//<Node>
C’est la courte syntaxe de:
//*[<Node>]
Ou
//*[@Type = Node]
Sélectionnez un deuxième nœud de niveau avec un parent visible
//<Node>[@Visible]/<Node>
Voici l’exemple de code pour interroger un ou plusieurs objets:
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-.NET | |
//Create a scene for testing | |
Scene s = new Scene(); | |
var a = s.RootNode.CreateChildNode("a"); | |
a.CreateChildNode("a1"); | |
a.CreateChildNode("a2"); | |
s.RootNode.CreateChildNode("b"); | |
var c = s.RootNode.CreateChildNode("c"); | |
c.CreateChildNode("c1").AddEntity(new Camera("cam")); | |
c.CreateChildNode("c2").AddEntity(new Light("light")); | |
/*The hierarchy of the scene looks like: | |
- Root | |
- a | |
- a1 | |
- a2 | |
- b | |
- c | |
- c1 | |
- cam | |
- c2 | |
- light | |
*/ | |
//select objects that has type Camera or name is 'light' whatever it's located. | |
var objects = s.RootNode.SelectObjects("//*[(@Type = 'Camera') or (@Name = 'light')]"); | |
//Select single camera object under the child nodes of node named 'c' under the root node | |
var c1 = s.RootNode.SelectSingleObject("/c/*/<Camera>"); | |
// Select node named 'a1' under the root node, even if the 'a1' is not a directly child node of the | |
var obj = s.RootNode.SelectSingleObject("a1"); | |
//Select the node itself, since the '/' is selected directly on the root node, so the root node is selected. | |
obj = s.RootNode.SelectSingleObject("/"); |