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

Autodesk Forge v7.*工具栏resize事件调用viewer.resize无效求助

解决Autodesk Forge Viewer resize事件不生效的问题

问题分析

你的代码存在两个关键问题:

  • 事件回调中使用普通function导致this指向错误,无法正确访问this.forge2DView实例
  • 监听的是Viewer内部的resize事件,而非窗口(或容器)的大小变化事件,无法触发预期的工具栏调整

修正方案

  1. 使用箭头函数保证回调中的this指向类实例,或者提前保存Viewer实例到变量中
  2. 监听window的resize事件(如果是容器大小变化则监听容器的resize事件),在事件触发时调用Viewer的resize()方法

修正后的代码示例:

// 初始化Viewer
this.forge2DView = new Autodesk.Viewing.Private.GuiViewer3D(document.getElementById('drawingCanvas'), { extensions: ['Autodesk.DocumentBrowser'] });

// 监听window的resize事件,用箭头函数确保this指向正确
window.addEventListener("resize", () => {
    // 调用Viewer的resize方法,同步工具栏和视图大小
    this.forge2DView.resize();
});

额外优化建议

  • 为了避免频繁触发resize导致性能问题,可以添加防抖处理:
let resizeTimeout;
window.addEventListener("resize", () => {
    clearTimeout(resizeTimeout);
    resizeTimeout = setTimeout(() => {
        this.forge2DView.resize();
    }, 200); // 200ms防抖延迟,可根据需求调整
});
  • 确保容器drawingCanvas的CSS设置正确(比如宽度/高度设为100%,避免固定尺寸导致无法自适应)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 23:17:32