Загрузка нескольких моделей с обещанием loadModel - PullRequest
1 голос
/ 23 сентября 2019

Я хотел бы загрузить массив моделей, используя обещание loadModel и параметр loadAsHidden.Затем, когда все модели загружены, покажите их все сразу.Кажется, каждое обещание разрешается сразу после запуска команды loadModel.Таким образом, функция showHiddenModels запускается до полной загрузки моделей.Массив storeys содержит svf-адреса файлов.

function loadAllModels() {
    let options =
    {
        loadAsHidden: true,
        globalOffset: { x: 0, y: 0, z: 0 }            
    };

    let promises = [];
    let length = storeys.length;
    let counter = 0;

    for (let storey of storeys) {
        let modelPromise = viewer.loadModel(storey.Svf, options);
        modelPromise.then((result) => {                
            counter++;
            console.log('counter: ' + counter);

            if (counter == length) {
                showHiddenModels();
            }
        });

        promises.push(modelPromise);
    }
}

function showHiddenModels() {
    let models = viewer.impl.modelQueue().getHiddenModels();

    for (let model of models) {
         viewer.showModel(model);
    }

    let extension = viewer.getExtension('Autodesk.ViewCubeUi');
    extension.setViewCube('[top/front]');     
}

Вот так это выглядит в консоли.Сначала вызывается файл обещания. Затем начинается загрузка файлов.

Console

1 Ответ

1 голос
/ 23 сентября 2019

LoadModel выполняет свое обещание, как только загружается исходный файл модели, а не его полная геометрия / текстура и т. Д. *

Для события жизненного цикла, когда модель завершена, загружаются, подпишитесь на Autodesk.Viewing.GEOMETRY_LOADED_EVENT:

viewer.addEventListener(Autodesk.Viewing.GEOMETRY_LOADED_EVENT, event=>{
  //event {type:string, model:object, target:object}
})

И в нескольких модельных сценариях это событие будет срабатывать несколько раз, когда каждая модель завершает загрузку - используйте идентификатор объекта model, чтобы узнать, когда последняя модель полностью загружена.

...