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