Получение идентификаторов фрагментов из базы данных - PullRequest
0 голосов
/ 24 мая 2019

Я немного борюсь с кажущимися несоответствиями между определениями типов, документацией и поведением зрителя.

Я написал простое расширение для цветных элементов (которое я все равно не могу заставить работать, но это другой вопрос ).

Когда я пытаюсь получить фрагменты для данного узла, используя метод InstanceTree#enumNodeFragments, я получаю пустой массив:

getFragmentsForNode(dbId: number): number[] {
    const fragments: number[] = [];
    this.viewer.model.getInstanceTree().enumNodeFragments(dbId, (fragId) => fragments.push(fragId));
    return fragments;
}

Документация не дает никаких указаний на ожидаемые аргументы для этого обратного вызова, но из онлайн-примеров я предполагаю, что подпись выглядит примерно так:

enumNodeFragments(dbId: number, callback: (fragId: number) => void, recursive?: boolean): void;

Определение машинописного текста сбивает с толку, так как в нем перечисляется node: any в качестве первого аргумента, что подразумевает, что это может быть не идентификатор, а что-то еще.

Когда я запускаю это для любого элемента, я всегда получаю пустой массив, который немного сбивает с толку, так как без доступа к фрагментам я не могу установить цвета и т. Д.

1 Ответ

0 голосов
/ 27 мая 2019

К сожалению, мне не удалось воспроизвести проблему с действительной базой данных и моделью - см. Пример в реальном времени здесь

viewer.model.getInstanceTree().enumNodeFragments(dbId, fragId=> console.log(fragId));

Вы указали действительную базу данных?

...