如何与Autodesk Construction Cloud现有Viewer集成,无需新建Forge Viewer?
复用ACC现有Viewer并获取数据的可行方案
核心结论
完全可以通过浏览器扩展实现对ACC现有Viewer的自定义和数据获取,无需单独开发独立的Forge Viewer应用。
具体实现路径
- 获取现有Viewer实例:ACC页面加载完成后,Forge Viewer实例通常挂载在全局对象上(比如
window.NOP_VIEWER,不同ACC环境可能有细微差异),你可以在浏览器扩展的内容脚本里直接访问这个全局变量,调用Viewer原生API获取模型数据(比如构件属性、几何信息、视图状态等)。 - 注入自定义扩展:利用浏览器扩展的内容脚本,向ACC页面注入自定义的Viewer扩展代码。Viewer本身支持扩展机制,你可以通过
viewer.loadExtension()方法加载自己的扩展,实现界面修改、功能新增等需求。 - 数据获取示例代码:比如获取选中构件的属性:
// 先获取全局的Viewer实例 const viewer = window.NOP_VIEWER; // 监听构件选中事件 viewer.addEventListener(Autodesk.Viewing.SELECTION_CHANGED_EVENT, (event) => { if (event.dbIdArray.length > 0) { // 获取选中构件的属性 viewer.getProperties(event.dbIdArray[0], (props) => { console.log('选中构件属性:', props); // 此处可对数据进行后续处理 }); } });
- 界面自定义:通过内容脚本注入CSS或JS代码,修改ACC Viewer周边的UI元素,或者在Viewer工具栏添加自定义按钮,绑定你的扩展功能。
注意事项
- 版本兼容性:ACC的Viewer实例挂载的全局变量或API可能随版本更新变化,需要在不同环境测试确保兼容性。
- 合规性:操作需符合Autodesk的服务条款,不要获取超出权限范围的数据。
- 调试技巧:用浏览器开发者工具的控制台先确认Viewer实例的全局变量名称,再编写扩展代码。
内容的提问来源于stack exchange,提问作者chuongmep
相关产品推荐
相关产品推荐

