Distin guish различных «типов» узлов в InstanceTree программы просмотра - PullRequest
0 голосов
/ 29 февраля 2020

Мы выполняем некоторую обработку содержимого InstanceTree, целью которого было собрать только те узлы, которые имеют прямой (геометрический c элемент) аналог в модели -> это означает, что их можно выбрать напрямую, нажав на Элемент модели в средстве просмотра.

Сначала казалось, что это было решено путем фокусировки на листовых узлах дерева, рекурсивного обхода через enumNodeChildren(node, callback, recursive) и сохранения узла только в том случае, если getChildCount(dbId) было 0, что указывает на то, что мы достигли листа.

Однако, похоже, существуют созвездия, в которых есть геометрия, связанная с неконечными узлами, а также с их дочерними элементами. Похоже, это тот случай, когда эти узлы представляют определенные типы семейства Revit с независимой геометрией.

Затем мы попытались найти способ отличить guish узлы с напрямую присоединенной геометрией от узлов, которые действуют только как «группировка» для реальных геометрических узлов. Но ни один из методов API в https://forge.autodesk.com/en/docs/viewer/v7/reference/Private/InstanceTree/, кажется, не помогает в этом случае (даже многообещающий getNodeType(dbId), поскольку просто возвращает 0 для всех задействованных узлов).

Довольно грязное исправление на данный момент мы проверяем наличие суффикса id в имени узла, который, по-видимому, присутствует только при наличии непосредственно связанной геометрии. Но я думаю, что это также работает только в том случае, если видимое происходит из файла Revit. См. Это изображение для уточнения . Он показывает родительский узел без геометрии, промежуточный узел с геометрией и несколько конечных узлов с геометрией.

Есть ли лучший способ решить эту проблему?

...