开发者问题收集

类型错误:尝试在 Autodesk Forge Viewer 中显示 Navisworks 文件时无法读取 null 属性(读取“getNamedViews”)

2023-10-05
153

当我尝试显示 Navisworks 模型 (.nwd/.nwc 文件) 时,使用 viewer.start() 启动 Autodesk forge 查看器时,控制台中出现此错误。对于 .rvt、.fbx、.3ds 和 .max 文件,一切似乎都正常。

GuiViewer3D.js:244 未捕获(在承诺中)TypeError:无法读取 null 的属性(读取“getNamedViews”) 在 Object.addViews(GuiViewer3D.js:244:40) 在 SvfLoader.js:256:31

此错误引用了 GuiViewer3D.js 中的以下内容: 在此处输入图像描述

尽管查看器将启动,但它不会显示任何模型: 在此处输入图片描述

这是我的代码:

const lunchViewer = (urn) => {
    var options = {
        env: 'AutodeskProduction',
        getAccessToken: getForgeToken,
    };
    var documentId = 'urn:' + urn;

    window.Autodesk.Viewing.Initializer(options, () => {
        window.Autodesk.Viewing.Document.load(
            documentId,
            onDocumentLoadSuccess,
            onDocumentLoadFailure
        );
    });
};

const onDocumentLoadSuccess = (doc) => {
    const geometries = doc.getRoot().search({ type: 'geometry' });

    if (geometries.length === 0) {
        console.error('Document contains no geometries.');
        return;
    }

    const viewerDiv = document.getElementById('viewer');
    const config = {
        extensions: [
            'Autodesk.DocumentBrowser',
            'Autodesk.Viewing.MarkupsCore',
        ],
    };
    const viewer = new window.Autodesk.Viewing.Private.GuiViewer3D(
        viewerDiv,
        config
    );

    const initGeom = geometries[0];
    const svfUrl = doc.getViewablePath(initGeom);
    const modelOptions = {
        sharedPropertyDbPath: doc.getFullPath(
            doc.getRoot().findPropertyDbPath()
        ),
    };

    viewer.start(
        svfUrl,
        modelOptions,
        onLoadModelSuccess,
        onLoadModelError
    );
};

我使用上述方法能够在同一个查看器中添加多个模型。 并且还可以在查看器中同一个加载模型的视图之间切换。

1个回答

这是一个已知问题,已在查看器 v7.93 中修复。请尝试将其升级到 v7.93 以查看是否有帮助。

对于旧版本,请考虑使用 GuiViewer3D#loadDocumentNode

这里有一个示例实用程序,演示如何使用 GuiViewer3D#loadDocumentNode 聚合多个模型:

https://github.com/yiskang/MultipleModelUtil

Eason Kang
2023-10-12