Forge Viewer两个版本差异及Markups编辑模式缺失问题咨询
Answers to Your Forge Viewer Questions
咱们逐个来解答你的问题:
1. 区别:modelderivative/v2/viewers vs viewingservice/v1/viewers
- 服务归属与生命周期:
modelderivative/v2/viewers是Autodesk Forge当前主推的Model Derivative服务配套Viewer,是后续功能迭代、bug修复的核心版本;而viewingservice/v1/viewers属于旧版Viewing Service的Viewer,Autodesk已经停止对它的新功能开发,仅做必要的维护,属于逐步淘汰的版本。 - API与扩展架构:v2版本对Viewer的API结构、扩展体系做了重构优化,更贴合Model Derivative服务的整体生态,部分旧版v1的API、扩展实现逻辑有兼容性调整。
- 功能覆盖:v2版本整合了更多新功能(比如更强大的模型处理、扩展能力),而v1版本仅保留基础的模型查看功能,无法使用后续新增的特性。
2. 为什么v2版本中EditModePolyline和EditModePolycloud不可用?
这是因为v2版本的Markups Core扩展对编辑模式的实现做了重构:
在旧版v1的Viewing Service Viewer中,这些编辑模式是直接暴露为全局可实例化的构造函数;但在v2的Model Derivative Viewer里,这些编辑模式被封装到了扩展内部,不再对外直接暴露构造函数。取而代之的是,你需要通过字符串标识来调用changeEditMode方法切换编辑模式,而不是手动实例化构造器,这就是你遇到TypeError的原因。
3. 能否在Model Derivative服务中使用Viewing Service的构造器?
不行的。两个版本的Viewer属于完全不同的服务架构,内部的命名空间、扩展依赖、状态管理逻辑都不兼容,强行混用会导致命名冲突、内部状态异常,甚至直接报错。建议直接采用v2版本Viewer对应的API方式实现需求。
修正后的代码示例
针对你的代码,调整为v2版本的正确用法:
<script src="https://developer.api.autodesk.com/modelderivative/v2/viewers/viewer3D.min.js?v=v6.0"></script> viewer.loadExtension('Autodesk.Viewing.MarkupsCore').then(function(markupsExt) { markup = markupsExt; markup.enterEditMode(); // 切换到折线编辑模式 markup.changeEditMode('polyline'); // 如果需要切换到点云编辑模式,使用下面的代码 // markup.changeEditMode('polycloud'); });
内容的提问来源于stack exchange,提问作者ajitspyd
相关产品推荐
相关产品推荐

