Просмотрите наши продукты

Aspose.3D for Java 19,3 Примечания к выпуску

Улучшения и изменения

КлючСводкаКатегория
THREEDNET-471 XPath как методы адресации объектовНовая функция

Публичные API и обратные несовместимые изменения

См. Список любых изменений, внесенных в общедоступный API, таких как добавленные, переименованные, удаленные или устаревшие члены, а также любые несовместимые назад изменения, внесенные в Aspose.3D for Java. Если у вас есть опасения по поводу каких-либо изменений, пожалуйста, поднимите их наФорум поддержки Aspose.3D.

Добавлен метод selectSingleObject в классе com.aspose.threed.Node

 /**

 * Select single object under current node using XPath-like query syntax.

 * @param path 

 * @throws ParseException ParseException will be thrown if the path contains malformed query.

 */

public A3DObject selectSingleObject(String path)

    throws ParseException;

Добавлен метод selectObjects в классе com.aspose.threed.Node

 /**

 * Select multiple objects under current node using XPath-like query syntax.

 * @param path 

 * @throws ParseException ParseException will be thrown if the path contains malformed query.

 */

public ArrayList<A3DObject> selectObjects(String path)

    throws ParseException;

Ниже приводится пример кода для запроса одного или нескольких объектов:

 Scene s = new Scene();

Node a = s.getRootNode().createChildNode("a");

a.createChildNode("a1");

a.createChildNode("a2");

s.getRootNode().createChildNode("b");

Node c = s.getRootNode().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.

List<A3DObject> objects = s.getRootNode().selectObjects("//*[(@Type = 'Camera') or (@Name = 'light')]");

Assert.assertEquals(2, objects.size());

Assert.assertTrue(objects.get(0) instanceof Camera);

Assert.assertTrue(objects.get(1) instanceof Light);

//Select single camera object under the child nodes of node named 'c' under the root node

A3DObject c1 = s.getRootNode().selectSingleObject("/c/*/<Camera>");

Assert.assertNotNull(c1);

// Select node named 'a1' under the root node, even if the 'a1' is not a directly child node of the

A3DObject obj = s.getRootNode().selectSingleObject("a1");

Assert.assertEquals("a1", obj.getName());

//Select the node itself, since the '/' is selected directly on the root node, so the root node is selected.

obj = s.getRootNode().selectSingleObject("/");

Assert.assertNotNull(obj);

Assert.assertTrue(obj instanceof Node);

Assert.assertEquals(s.getRootNode(), obj);

Синтаксис запроса был вдохновлен XPath, поэтому большинство концепций и синтаксиса похожи, синтаксис запроса совместим с URL, поэтому он будет использоваться в нашей облачной версии в будущем. Обычно синтаксис состоит изУсловие имени префикса / Имя Состояние /.

Префикс =Описание =
Глобальный селектор, любой потомок рассматривается как корневой узел для выполнения выбора
/Корневой селектор, только один предок используется для поиска
ДругиеПредположим, что это имя, и выберите объект по имени в глобальном режиме селектора
Имя-это строка, которая соответствует имени объекта, или подстановочный знак «*» используется для сопоставления с любым именем. Условие-это выражение, чтобы решить, выбрать ли объект, логические операторы (нет) и или операторы сравнения>/</>=/<=/!= поддерживаются. Для доступа к свойству в выражении условия используется префикс «@», например, @ Name будет читать свойство Name. Синтаксис ярлыка для типа тестирования поддерживается , это эквивалентно [@ Type = ‘Mesh’], идентификаторы без цитаты будут рассматриваться как строка.

Выберите все узлы, используя глобальный селектор синтаксиса:

 //<Node>

Это короткий синтаксис:

 //*[<Node>]

Или

 //*[@Type = Node]

Выберите узел второго уровня с видимым родителем:

//<Node>[@Visible]/<Node>


 
 Русский