为何Autodesk APS Viewer中找不到Autodesk.Viewing.Collaboration?
关于Autodesk.Viewing.Collaboration扩展及APS Viewer实时协作方案
一、Autodesk.Viewing.Collaboration扩展的状态
Autodesk.Viewing.Collaboration并非面向第三方开发者的公开扩展,它是Autodesk内部产品(如Autodesk Construction Cloud、BIM 360)专属的协作组件,不对外部开发者开放注册和调用,因此你加载时会触发“Extension not found”错误。该扩展既未废弃,也不属于通用功能,仅限定在Autodesk自有协作产品体系内使用。
二、APS Viewer实现实时协作的替代方案
1. 基于Viewer原生API自定义协作逻辑
利用Viewer的公开API结合实时通信工具,自行实现核心协作功能:
- 视图同步:
- 监听Viewer的
cameraChange事件,触发时获取当前相机参数(viewer.navigation.getPosition()、viewer.navigation.getTarget()、viewer.getState()等)。 - 通过WebSocket或Socket.io等工具将参数发送给协作房间内的其他用户。
- 对方收到参数后,调用
viewer.navigation.setView()或viewer.restoreState()同步视图。
- 监听Viewer的
- 标记同步:
- 使用官方公开的
Autodesk.Viewing.MarkupsCore扩展创建标记。 - 标记创建/修改后,调用
markupsCore.exportMarkups()导出标记JSON数据,通过实时通信同步给其他用户。 - 协作方加载
MarkupsCore扩展后,调用markupsCore.importMarkups()导入数据,实现标记同步显示。
- 使用官方公开的
- 问题追踪:
- 自行搭建后端服务,存储问题关联信息(模型ID、视图快照、标记数据、问题描述、状态等)。
- 前端通过API拉取/更新问题数据,结合Viewer展示对应模型视图和标记。
2. 集成Autodesk Construction Cloud (ACC)协作能力
若项目基于ACC平台,可直接复用其原生协作能力:
- 通过ACC API获取项目内的模型、标记、问题数据,在Viewer中加载ACC托管的模型。
- 结合ACC的UI组件(如问题追踪面板),直接使用平台内置的协作、标记同步功能,无需从零开发。
3. 借助第三方实时通信服务快速搭建协作层
使用成熟的实时消息框架简化协作逻辑开发:
- 采用Socket.io、Pusher等服务处理用户间的协作消息广播(视图参数、标记数据、问题更新)。
- 结合Viewer API将消息转化为对应交互动作,实现同步效果。
代码修正提示
你的代码中使用了Autodesk.Viewing.Private.GuiViewer3D,这是Viewer的内部私有类,建议替换为公开的Autodesk.Viewing.GuiViewer3D,避免版本兼容性问题:
const viewer = new Autodesk.Viewing.GuiViewer3D(document.getElementById('viewer')); Autodesk.Viewing.Initializer(options, function () { viewer.start(); // 加载公开可用的扩展示例 viewer.loadExtension('Autodesk.Viewing.MarkupsCore') .then(ext => { // 扩展加载后的逻辑处理 }) .catch(err => console.error('扩展加载失败:', err)); });
内容的提问来源于stack exchange,提问作者Lokeswar Mamallan
相关产品推荐
相关产品推荐

