首页 > 解决方案 > Forge Viewer v7:“getViewableUrn 不是函数”- 7.33.1

问题描述

不确定这是错误还是脚本加载顺序的问题。使用 ES5,但在支持 ES6 的浏览器中。v6 有效。在升级到 v7 时发现了这一点。

“ChooseViewerItem”(允许我更改可视项的包装函数)中的行 - 调用

viewer.loadDocumentNode(document, viewable).then(onItemLoadSuccess, onItemLoadFail);

我错过了什么?

Uncaught TypeError: avDocument.getViewableUrn is not a function
    loadDocumentNode Viewer3D.js:1738
    ChooseViewerItem a9dcd494-cecb-4391-a14e-834f7c7d8172:1280
    onDocumentLoadSuccess a9dcd494-cecb-4391-a14e-834f7c7d8172:1298
    onSuccess Document.js:174
    onSuccessWrapped Xhr.js:565
    onLoad Xhr.js:669
    _rawGet Xhr.js:707
    rawGet Xhr.js:573
    pendGo index.js:54
    go index.js:13
    rawGet Xhr.js:557
    getManifest Xhr.js:855
    doLoad Document.js:227
    load Document.js:231
    launchViewer a9dcd494-cecb-4391-a14e-834f7c7d8172:1272
    promise callback*Initializer envinit.js:629
    launchViewer a9dcd494-cecb-4391-a14e-834f7c7d8172:1261
    <anonymous> a9dcd494-cecb-4391-a14e-834f7c7d8172:922
    Angular 18
    jQuery 13
Viewer3D.js:1738

标签: autodesk-forgeautodesk-viewer

解决方案


Document类与viewer3D.js文件中的所有其他基本类捆绑在一起,因此加载顺序应该没有问题。

我建议检查您传递给该loadDocumentNode方法的对象是否实际上是Document.

以下是使用 Forge Viewer v7.* 加载模型/可视项的典型方式:

async function loadModelViewable(viewer, urn, guid = null) {
    function onDocumentLoadSuccess(doc) {
        if (guid) {
            viewer.loadDocumentNode(doc, doc.getRoot().findByGuid(guid));
        } else {
            viewer.loadDocumentNode(doc, doc.getRoot().getDefaultGeometry());
        }
    }
    function onDocumentLoadFailure(code, message) {
        console.error(message);
    }
    Autodesk.Viewing.Document.load('urn:' + urn, onDocumentLoadSuccess, onDocumentLoadFailure);
}

推荐阅读