Я немного борюсь с кажущимися несоответствиями между определениями типов, документацией и поведением зрителя.
Я написал простое расширение для цветных элементов (которое я все равно не могу заставить работать, но это другой вопрос ).
Когда я пытаюсь получить фрагменты для данного узла, используя метод 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
в качестве первого аргумента, что подразумевает, что это может быть не идентификатор, а что-то еще.
Когда я запускаю это для любого элемента, я всегда получаю пустой массив, который немного сбивает с толку, так как без доступа к фрагментам я не могу установить цвета и т. Д.