simen-andresen
simen-andresen

Reputation: 2327

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

I'm trying to load 2 models into Autodesk's Forge Viewer.

I'm trying with the following code:

 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);
                    });
            }
        },
        () => {}
   );
}

The rationale behind the timeout is to load the second model using loadModel after the first model has loaded. I've also tried loading the second model from the viewer.start's onSuccess callback.

No matter what, I get the File extension not supported:null ErrorCode:13. error message (both in the console and in a popup)

I'm pretty sure the message is misleading since both urns have valid SVF derivatives (I can switch between them, whichever one is loaded first displays just fine)

NB I'm using the following version: 'https://developer.api.autodesk.com/modelderivative/v2/viewers/6.2/viewer3D.min.js'

As a side note, I've tried using Autodesk.Viewing.ViewingApplication and selectItem. With this I'm able to load multiple models but I don't seem to be able to set modelOptions (specifically globalOffset) with this approach.

Upvotes: 1

Views: 761

Answers (1)

Petr Broz
Petr Broz

Reputation: 9942

The loadModel method expects a URL with some known file extension (e.g., .svf) but you're calling it with an URN (the base64-encoded identifier of a translated document). That's why it's failing to find the file extension.

Btw. if you want to postpone the loading of the second model after the first one is loaded completely, consider using the geometry-loaded-event instead of a timeout.

Upvotes: 1

Related Questions