Forge Viewer中applyScaling对DWG模型不生效问题咨询
Forge Viewer 跨单位模型(RVM+DWG)缩放正确配置方案
核心问题原因
DWG模型的单位缩放逻辑和RVM不同:RVM支持通过applyScaling直接指定目标单位,但DWG模型的缩放依赖模型转换阶段的单位设定+加载时的全局缩放/偏移配置,单纯传applyScaling: 'mm'不会生效。
正确配置步骤
1. 确保DWG模型转换时的单位设置
调用Model Derivative API转换DWG文件时,需明确指定输出单位(比如匹配原始DWG的毫米单位),转换请求的Payload示例:
{ "input": { "urn": "your-dwg-urn" }, "output": { "formats": [ { "type": "svf", "views": ["2d", "3d"], "advanced": { "unit": "mm" } } ] } }
2. 加载模型时的差异化配置
- RVM模型加载:直接在
loadDocumentNode的配置项中指定applyScaling为目标单位(米):
// 加载原始单位为米的RVM模型,对齐Viewer内部单位 viewer.loadDocumentNode(doc, viewable, { applyScaling: 'm', globalOffset: { x: 0, y: 0, z: 0 } });
- DWG模型加载:无需传
applyScaling,通过modelSpaceScale计算缩放比例,同时保持全局偏移和RVM一致:
// 假设DWG转换时已设为毫米单位,计算转米的缩放比例 const dwgUnit = 'mm'; const scaleFactor = Autodesk.Viewing.Private.getModelUnitFromString(dwgUnit) / Autodesk.Viewing.Private.getModelUnitFromString('m'); // 加载DWG并对齐RVM的单位和位置 viewer.loadDocumentNode(doc, dwgViewable, { globalOffset: { x: 0, y: 0, z: 0 }, // 和RVM的全局偏移保持一致 modelSpaceScale: scaleFactor });
3. 额外验证要点
- 通过
viewer.modelUnits()查看Viewer当前使用的单位,确保两个模型对齐到同一基准(比如米) - 若DWG转换时未指定单位,可通过
doc.getRoot().getDefaultGeometry().units获取原始单位后再计算缩放比例 - 若模型出现位置偏移,调整
globalOffset参数确保两个模型原点对齐
内容的提问来源于stack exchange,提问作者skinman55
相关产品推荐
相关产品推荐

