文件扩展名不是 supported:null ErrorCode:13。加载多个模型时

File extension not supported:null ErrorCode:13. when loading multiple models

我正在尝试将 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);
                    });
            }
        },
        () => {}
   );
}

超时背后的基本原理是在加载第一个模型后使用 loadModel 加载第二个模型。我还尝试从 viewer.startonSuccess 回调加载第二个模型。

无论如何,我都会收到 File extension not supported:null ErrorCode:13. 错误消息(在控制台和弹出窗口中)

我很确定该消息具有误导性,因为两个 urns 都有有效的 SVF 衍生物(我可以在它们之间切换,无论哪个先加载显示都很好)

注意我使用的是以下版本: 'https://developer.api.autodesk.com/modelderivative/v2/viewers/6.2/viewer3D.min.js'

作为旁注,我尝试使用 Autodesk.Viewing.ViewingApplicationselectItem。有了这个,我可以加载多个模型,但我似乎无法使用这种方法设置 modelOptions(特别是 globalOffset)。

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

顺便说一句。如果您想在第一个模型完全加载后推迟加载第二个模型,请考虑使用 geometry-loaded-event 而不是超时。