Autodesk forge 使用loadModel承诺加载多个模型
我想使用loadModel promise和loadAsHidden选项加载一组模型。然后,一旦加载所有模型,立即显示所有模型。在我运行loadModel命令之后,似乎每个承诺都得到了解决。因此,showHiddenModels函数在模型完全加载之前运行。Storeys数组包含文件的svf地址Autodesk forge 使用loadModel承诺加载多个模型,autodesk-forge,autodesk-viewer,Autodesk Forge,Autodesk Viewer,我想使用loadModel promise和loadAsHidden选项加载一组模型。然后,一旦加载所有模型,立即显示所有模型。在我运行loadModel命令之后,似乎每个承诺都得到了解决。因此,showHiddenModels函数在模型完全加载之前运行。Storeys数组包含文件的svf地址 function loadAllModels() { let options = { loadAsHidden: true, globalOffset: {
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]');
}
这是它在控制台中的外观。首先调用promise.then,然后开始加载文件
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]');
}
加载模型
一旦加载模型种子文件,而不是其完整的几何体/纹理等,就会履行其承诺
对于模型已完成加载的生命周期事件,请订阅Autodesk.Viewing.GEOMETRY\u loaded\u事件:
viewer.addEventListener(Autodesk.Viewing.GEOMETRY_LOADED_EVENT, event=>{
//event {type:string, model:object, target:object}
})
在多个模型场景中,当每个模型完成加载时,此事件将触发多次-使用模型
对象的id告知最后一个模型何时完全加载