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

Forge Viewer中如何保存绘制的标注区域并在重载同文件时自动加载

标记数据序列化(保存阶段)

核心是提取可复用的纯结构化数据,避免存储不可序列化的Viewer实例对象

  • 给每个自定义标记图形分配唯一ID,同时绑定当前AutoCAD文件的唯一URN(Forge平台中每个转换后模型的唯一标识,用于后续匹配对应模型的标记)
  • 逐个提取标记的核心可序列化参数:
    • 矩形标记:存储世界坐标系下的两个对角点坐标、填充色、边框色、透明度、自定义备注
    • 球体标记:存储世界坐标系下的球心坐标、半径、材质颜色、透明度、自定义备注
    • 如果标记绑定了模型上的特定构件,额外存储对应构件的dbId,后续加载时可跟随构件位置自动适配偏移
  • 将所有参数整理为JSON结构,存储到你的业务数据库或本地存储即可,参考结构如下:
{
  "modelUrn": "urn:adsk.objects:os.object:your_bucket/your_file.dwg",
  "marks": [
    {
      "id": "mark_001",
      "type": "rectangle",
      "point1": [10.2, 20.5, 0],
      "point2": [30.1, 40.3, 0],
      "color": "#FF0000",
      "opacity": 0.5,
      "bindDbId": 123
    },
    {
      "id": "mark_002",
      "type": "sphere",
      "center": [25.3, 30.6, 5.2],
      "radius": 2.5,
      "color": "#00FF00",
      "opacity": 0.6,
      "bindDbId": 124
    }
  ]
}

如果需要同时还原当时的视图视角,可额外调用viewer.getState()获取视图状态数据,和标记数据一起存储。

标记恢复加载阶段
  • 监听Viewer的GEOMETRY_LOADED_EVENT事件,确保模型完全加载完成后再执行标记恢复逻辑,避免坐标适配出错
  • 根据当前加载的模型URN,从存储位置拉取对应的标记JSON数据
  • 遍历所有标记数据,复用你现有绘图工具的创建逻辑,逐个重新生成矩形、球体实例:
    • 若标记绑定了dbId,先通过viewer.model.getProperties(dbId)获取构件最新坐标,调整标记位置适配模型视图偏移
    • 按照存储的样式参数还原标记的颜色、透明度等属性
  • 如果存储了视图状态数据,调用viewer.restoreState(stateData)即可直接还原当时的缩放、旋转、视角位置。
可选优化点
  • 给标记增加分类标签,保存时同步存储标签信息,后续加载时可按需筛选显示对应分类的标记
  • 对标记做版本管理,同一份模型的标记可存储多个版本,支持回溯历史标记状态
  • 业务字段可直接加在标记的JSON结构中,不需要改动Viewer侧的核心逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:39:04