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

时间:2018-10-04 08:21:12

标签: autodesk-forge

我正在尝试将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.start的{​​{1}}回调中加载第二个模型。

无论如何,我都会收到onSuccess错误消息(在控制台和弹出窗口中)

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

NB我正在使用以下版本: 'https://developer.api.autodesk.com/modelderivative/v2/viewers/6.2/viewer3D.min.js'

作为旁注,我尝试使用File extension not supported:null ErrorCode:13.Autodesk.Viewing.ViewingApplication。这样,我就可以加载多个模型,但似乎无法使用这种方法设置selectItem(特别是modelOptions)。

1 个答案:

答案 0 :(得分:1)

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

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