ADN Open CIS
Сообщество программистов Autodesk в СНГ

30/04/2019

Forge Viewer - метод search может возвращать результаты, отличающиеся от результатов поиска в UI

Результаты вызова метода search() для поиска элементов с заданными свойствами могут отличаться от результатов поиска с использованием пользовательского интерфейса Forge Viewer.

Поиск с использованием пользовательского интерфейса всегда возвращает листовые элементы (на самом низком уровне в ветке дерева). В зависимости от исходной модели, это могут быть элементы Solid/Body, а не элементы Component/Part, к которым они принадлежат. Поиск работает сходным образом с машиностроительным программным обеспечением, таким как Inventor или Fusion 360. Компоненты/части содержат одно или несколько тел с геометрией.

Элементы на разных уровнях ветки дерева (Component и Body, например), имеют разные свойства, таким образом, поиск с помощью метода search() может возвратить не листовой элемент дерева, а одного из его родительских элементов. В случае, показанном на самой верхней картинке, только Component имеет свойств "Component Name", и только Body обладает свойством "Appearance". Таким образом при поиске по свойству "Component Name", Вы получите Component, а не Body.

Примечание: Component может содержать несколько Body.

Но, в принципе, это может оказаться не принципиально (зависит от Вашей задачи, конечно), что именно нашлось - Component или Body. Например, метод isolate() выдает практически те же результаты (кроме разных элементов, выделенных в броузере модели):

Вы также можете обходить дерево модели, чтобы найти Body по найденному Component (или наоборот) с помощью методов: enumNodeChildren() и getNodeParentId()

Источник: https://forge.autodesk.com/blog/search-returns-different-dbid-selection-ui

Автор перевода: Александр Игнатович

Обсуждение: http://adn-cis.org/forum/index.php?topic=

Опубликовано 30.04.2019