You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Fusion 360面板运行Forge Viewer时遇"Autodesk is not defined"错误求助

解决Fusion 360面板中Forge Viewer的"Autodesk is not defined"错误

可能原因

  • Fusion 360 Web面板的内容安全策略(CSP)限制了Forge Viewer脚本的加载
  • 脚本加载顺序问题,初始化代码在Viewer脚本加载完成前执行
  • Fusion 360的Web视图环境对全局对象或脚本加载方式有特殊限制

解决方案

1. 确保脚本加载完成后再执行初始化代码

避免异步加载脚本,改用同步加载,并等待页面完全就绪后初始化Viewer:

<!-- 同步加载Forge Viewer的脚本和样式 -->
<link rel="stylesheet" href="https://developer.api.autodesk.com/modelderivative/v2/viewers/7.*/style.min.css">
<script src="https://developer.api.autodesk.com/modelderivative/v2/viewers/7.*/viewer3D.min.js"></script>

<script>
// 等待页面所有资源加载完成
window.addEventListener('load', function() {
    if (typeof Autodesk !== 'undefined') {
        // 初始化Viewer逻辑
        const viewerContainer = document.getElementById('forgeViewer');
        const viewer = new Autodesk.Viewing.GuiViewer3D(viewerContainer);
        const options = {
            env: 'AutodeskProduction',
            accessToken: '你的访问令牌'
        };
        Autodesk.Viewing.Initializer(options, function() {
            viewer.start();
            viewer.loadDocumentNode('你的URN文档节点');
        });
    } else {
        console.error('Forge Viewer脚本加载失败,请检查网络或CSP设置');
    }
});
</script>

2. 配置内容安全策略(CSP)

在HTML头部添加CSP meta标签,允许加载Forge的CDN资源:

<meta http-equiv="Content-Security-Policy" content="
    script-src 'self' https://developer.api.autodesk.com;
    style-src 'self' https://developer.api.autodesk.com;
    img-src 'self' data: https://developer.api.autodesk.com;
    connect-src https://developer.api.autodesk.com
">

如果Fusion 360强制覆盖了CSP,需参考Fusion 360官方文档,通过Add-in API配置面板的权限。

3. 利用Fusion 360面板加载事件注入代码

如果是通过Fusion 360 Add-in创建的面板,监听面板加载完成事件后再执行Viewer初始化:

# Fusion 360 Python Add-in示例
import adsk.core, adsk.fusion, traceback

def run(context):
    ui = None
    try:
        app = adsk.core.Application.get()
        ui = app.userInterface
        # 创建Web面板
        panel = ui.createPanel('ForgeViewerPanel', 'Forge Viewer', '你的网页地址')
        # 绑定面板加载完成事件
        panel.addEvent(adsk.core.WebPanelEventTypes.WebPanelLoadedEvent, on_panel_loaded)
    except:
        if ui:
            ui.messageBox('加载失败:\n{}'.format(traceback.format_exc()))

def on_panel_loaded(args):
    panel = args.sender
    # 注入Viewer初始化脚本
    panel.executeJavascript("""
        window.addEventListener('load', function() {
            if (typeof Autodesk !== 'undefined') {
                const viewer = new Autodesk.Viewing.GuiViewer3D(document.getElementById('forgeViewer'));
                const options = { env: 'AutodeskProduction', accessToken: '你的令牌' };
                Autodesk.Viewing.Initializer(options, () => {
                    viewer.start();
                    viewer.loadModel('你的URN');
                });
            }
        });
    """)

排查步骤

  • 在Fusion 360 Web面板右键选择"Inspect"打开开发者工具,查看控制台的脚本加载错误,确认是否有资源被CSP阻止。
  • 验证Viewer版本兼容性,优先使用7.x系列的稳定版本,避免测试版。

内容的提问来源于stack exchange,提问作者Rahul K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 08:50:23