Autodesk forge 不支持文件扩展名:null错误代码:13。加载多个模型时

Autodesk forge 不支持文件扩展名:null错误代码:13。加载多个模型时,autodesk-forge,Autodesk Forge,我正在尝试将2个模型加载到Autodesk的Forge Viewer中 我正在使用以下代码进行尝试: const urn1 = <urn> const urn2 = <urn> Autodesk.Viewing.Initializer( options, () => { const viewerDiv = document.getElementById('MyViewerDiv');

我正在尝试将2个模型加载到Autodesk的Forge Viewer中

我正在使用以下代码进行尝试:

 const urn1 = <urn>
 const urn2 = <urn>

 Autodesk.Viewing.Initializer(
        options,
        () => {
            const viewerDiv = document.getElementById('MyViewerDiv');
            viewer = new Autodesk.Viewing.Private.GuiViewer3D(viewerDiv);
            this.loadDoc(this.props.urns[1], true);

            window.setTimeout(e => {
                    this.loadDoc(this.props.urns[2], false);
                }, 4000);
        },
    );



loadDoc(urn: string, initializeAndLoad: boolean) {
    Autodesk.Viewing.Document.load(urn,
        (doc) => {
            const viewables = Autodesk.Viewing.Document
                .getSubItemsWithProperties(doc.getRootItem(), {'type': 'geometry'}, true);
            if (viewables.length === 0) {
                return;
            }

            const initialViewable = viewables[0];
            const svfUrl = doc.getViewablePath(initialViewable);
            const modelOptions = {
                globalOffset: {x: 0, y: 0, z: 0}, // to align the models
                sharedPropertyDbPath: doc.getPropertyDbPath(),
            };


            if (initializeAndLoad) {
                viewer.start(svfUrl, modelOptions,
                    () => {},
                    () => {console.log('load model error');},
                );
            } else {
                viewer.loadModel(urn, modelOptions,
                    () => {}, 
                    (e) => {
                        console.warn(e);
                    });
            }
        },
        () => {}
   );
}
const urn1=
常数urn2=
Autodesk.Viewing.Initializer(
选项,
() => {
const viewerDiv=document.getElementById('MyViewerDiv');
查看器=新的Autodesk.Viewing.Private.GuiViewer3D(viewerDiv);
this.loadDoc(this.props.urns[1],true);
设置超时(e=>{
this.loadDoc(this.props.urns[2],false);
}, 4000);
},
);
loadDoc(urn:string,initializeAndLoad:boolean){
Autodesk.Viewing.Document.load(urn,
(doc)=>{
const viewables=Autodesk.Viewing.Document
.getSubItemsWithProperties(doc.getRootItem(),{'type':'geometry'},true);
如果(viewables.length==0){
返回;
}
const initialViewable=viewables[0];
const svfUrl=doc.getViewablePath(initialViewable);
常量模型选项={
globalOffset:{x:0,y:0,z:0},//用于对齐模型
sharedPropertyDbPath:doc.getPropertyDbPath(),
};
如果(初始化加载){
viewer.start(svfUrl、modelOptions、,
() => {},
()=>{console.log('load model error');},
);
}否则{
viewer.loadModel(urn、modelpoptions、,
() => {}, 
(e) =>{
控制台。警告(e);
});
}
},
() => {}
);
}
超时的基本原理是在加载第一个模型后,使用
loadModel
加载第二个模型。我还尝试从
查看器.start
onSuccess
回调加载第二个模型

无论如何,我都会收到
文件扩展名不受支持:null ErrorCode:13。
错误消息(在控制台和弹出窗口中)

我很确定这条消息是误导性的,因为两个URN都有有效的SVF派生(我可以在它们之间切换,无论哪一个先加载,都显示得很好)

注意:我使用的是以下版本: ''

作为补充说明,我已尝试使用Autodesk.Viewing.ViewingApplication和
selectItem
。使用这种方法,我可以加载多个模型,但我似乎无法用这种方法设置
模型选项(特别是
全局偏移量
)。

该方法需要一个带有一些已知文件扩展名(例如
.svf
)的URL,但您使用URN(翻译文档的base64编码标识符)调用它。这就是它找不到文件扩展名的原因

< Btw. >如果你想在第一个模型被完全加载后延迟加载第二个模型,考虑使用而不是超时。