Допустим, я работаю с 3D-файлом, который представляет собой комбинацию одной архитектурной модели и одной структурной модели.Дерево экземпляра или Обозреватель моделей выглядит следующим образом
root/
Arch/
Level 01/
Level 02/
...
Str/
Level 01/
Level 02/
...
Я хочу отобразить только уровень 01.
Итак, я:
- Выполнено в учебнике Viewer
- Добавление прослушивателя событий для обоих
Autodesk.Viewing.GEOMETRY_LOADED_EVENT
& Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT
- Когда запускаются 2, я использую код в этой статье , чтобы отобразить только уровень 01 безghosting.
У меня 2 проблемы с этим подходом
- Мне нужно дождаться загрузки всей модели, прежде чем я смогу отфильтровать уровень
После фильтрации уровня, если я нажимаю на Обозреватель моделей, я все равно вижу всю структуру модели (но со всем скрытым, кроме Уровня 01).Как я могу установить дерево экземпляров, чтобы иметь только то, что ниже?
root/
Arch/
Level 01/
Str/
Level 01/
EDIT
В какой момент я должен переопределить shouldInclude()
функция?
Я попробовал это и установил точку останова, но кажется, что она никогда не вызывается ... Я также пытался переместить ее, но тщетно.
const start = Date.now();
Autodesk.Viewing.UI.ModelStructurePanel.shouldInclude = (node) => {
Logger.log(node);
return true;
};
Autodesk.Viewing.Initializer(options, () => {
Logger.log(`Viewer initialized in ${Date.now() - start}ms`);
const config = {};
// prettier-ignore
Autodesk.Viewing.theExtensionManager.registerExtension('MyAwesomeExtension', MyAwesomeExtension);
viewerApp = new Autodesk.Viewing.ViewingApplication('MyViewerDiv');
viewerApp.registerViewer(viewerApp.k3D, Autodesk.Viewing.Private.GuiViewer3D, config);
loadDocumentStart = Date.now();
// prettier-ignore
viewerApp.loadDocument(documentId, onDocumentLoadSuccess, onDocumentLoadFailure);
});