Запуск браузера моделей в Forge Viewer был свернут при загрузке нескольких моделей

#autodesk-forge #autodesk-viewer

#autodesk-forge #autodesk-viewer

Вопрос:

Я попытался запустить браузер моделей со всеми узлами, свернутыми при загрузке нескольких агрегированных моделей, но он не свернул все узлы. Есть ли какой-нибудь способ сделать это?

Попробуйте приведенный ниже код для этих моделей: https://wallabyway.github.io/federatedmodels-v7 /

 var ext = NOP_VIEWER.getExtension('Autodesk.ModelStructure')
ext._modelstructure.options.startCollapsed = true
 

Ответ №1:

Попробуйте использовать эту вместо этого. ModelStructralPanel будет считывать параметры только в своем конструкторе.

 var viewer = new Autodesk.Viewing.GuiViewer3D(container, {startCollapsed: true});

var ext = viewer.getExtension('Autodesk.ModelStructure');

// or 
// viewer.unloadExtension('Autodesk.ModelStructure');
// var ext = await viewer.loadExtension('Autodesk.ModelStructure', {startCollapsed: true});
 

Обходной путь:

Добавьте этот фрагмент кода перед открытием панели modelstructure.

 var ext = viewer.getExtension('Autodesk.ModelStructure');
ext._modelstructure.addVisibilityListener( show => {
    if( show amp;amp; (!ext._modelstructure.uiCreated) ) {
        ext._modelstructure.tree.delegates.forEach( d => ext._modelstructure.tree.setAllCollapsed( d, true ) )
    }
});
 

Комментарии:

1. Предлагаемое решение выдает ошибку «обратный вызов не является функцией». Я также попытался выгрузить расширение и загрузить его снова, установив значение startCollapsed равным true, но это не сработало. Есть какие-либо предложения?

2. Мои извинения, есть опечатка, пожалуйста, проверьте мой обновленный ответ

3. Это, конечно, выглядит правильно, но я все еще не получаю свернутый браузер. Ни при его установке в GuidViewer3D, ни при загрузке расширения.

4. Похоже, что с этой опцией есть проблема. Я проверяю нашу команду инженеров и верну A.S.A.P. Между тем, вы можете использовать этот обходной путь: ext._modelstructure.tree.delegates.forEach( d => ext._modelstructure.tree.setAllCollapsed( d, true ) )

Ответ №2:

При создании средства просмотра передайте ему следующую опцию:

 var viewer = new Autodesk.Viewing.GuiViewer3D(container, {modelBrowserStartCollapsed: true});
 

Он должен каскадироваться до достижения браузера моделей.

Фон

Параметр «modelBrowserStartCollapsed» передается из конструктора Viewer3D вплоть до ModelStructureExtension, где он меняет имя на «startCollapsed» при передаче в ViewerModelStructurePanel.

 proto.restoreDefaultPanel = function () {

            var config = this.viewer.config;
            var options = {
                docStructureConfig: config.docStructureConfig,
                hideSearch: (0, _src_compat__WEBPACK_IMPORTED_MODULE_2__.isMobileDevice)(),
                excludeRoot: config.modelBrowserExcludeRoot,
                startCollapsed: config.modelBrowserStartCollapsed // HERE
            };

            var modelTitle = config.defaultModelStructureTitle || 'Browser';
            var panelInstance = new _src_gui_ViewerModelStructurePanel__WEBPACK_IMPORTED_MODULE_1__.ViewerModelStructurePanel(_objectSpread(_objectSpread({},
                options),
                (0, _src_gui_ViewerModelStructurePanel__WEBPACK_IMPORTED_MODULE_1__.generateDefaultViewerHandlerOptions)(this.viewer)),
                modelTitle);
            this.setModelStructurePanel(panelInstance);
        };
 

Источник для ViewerModelStructurePanel показывает, что он принимает опцию «startCollapsed», как указано, среди других опций.

 function ViewerModelStructurePanel(viewer, userTitle, ops) {
    ...
    options.startCollapsed = options.startCollapsed !== undefined ? options.startCollapsed : false;